
- •Общие сведения
- •Концепция tcp/ip
- •Протокол tcp
- •Тср соединение
- •Передача данных
- •Протокол обмена управляющими сообщениями icmp
- •Формат сообщений протокола icmp
- •Эхо протокол
- •Адресация в ip протоколе
- •Структура ip-адреса
- •Основы ip 6 версии
- •Алгоритмы маршрутизации
- •Протоколы маршрутизации
- •Протоколы маршрутизации igrp и eigrp
- •Протоколы внешней маршрутизации
- •Протокол bgp
- •Протокол es-is
- •Протокол is-is
Протокол tcp
Протокол TCP предоставляет транспортные услуги с гарантированной доставкой сообщений, с установлением соединений в виде байтовых потоков и используется в тех случаях, когда требуется надежная доставка сообщений.
Освобождает прикладные процессы от необходимости использовать тайм-ауты и повторные передачи для обеспечения надежности.
Прикладные процессы взаимодействуют с модулем TCP так же, как и с модулем UDP, то есть через порты. Для отдельных приложений выделяются общеизвестные номера портов. Например срвер Telnet использует порт с номером 23.
Когда прикладной процесс начинает использовать модуль TCP, то 2 модуля TCP – на стороне клиента и на стороне сервера начинают общаться и поддерживают информацию о состоянии соединения, называемого виртуальным каналом.
Этот канал потребляет ресурсы обоих модулей, участвующих в соединении и является дуплексным. Протокол TCP разбивает входной поток на сегменты и, при этом, может не сохранять границ, а именно – модуль TCP на передающей стороне может выполнить 5 записей в порт, а прикладной процесс на приемной стороне может выполнить 10 чтений из порта или, напротив, получить все данные за 1 операцию чтения. То есть не существует четкой зависимости между числом и размером записываемых сообщений с 1 стороны и числом и размером получаемых сообщений с другой стороны. ПротоколTCP требует, чтобы все отправленные данные были подтверждены принявшей их стороной. Для этого он использует тайм-ауты и повторные передачи. Отправителям разрешается передавать некоторое количество данных, не дожидаясь подтверждения приема ранее отправленных данных. Таким образом между отправленными и подтвержденными данными существует окно уже отправленных, но еще не подтвержденных данных.
Количество байт, которое можно передавать без подтверждения называют размер окна. Так как ТСР канал является дуплексным, то подтверждение для данных, идущих в одном направлении, могут передаваться одновременно с данными, идущими в обратном направлении.
Приемники на обеих сторонах виртуального канала занимаются управлением потоком с целью недопущения переполнения буфера.
Заголовок ТСР:
Source Port 16 бит
Destination Port 16 бит
Sequence number 32 бита – номер очереди для первого байта данных в данном сегменте
Acknowledgement Number 32 бита – поле содержит следующий номер очереди, который отправитель данного пакета желает получить в обратном направлении. Номера подтверждения отправляются постоянно, как только соединение будет установлено
Data offset 4 бита – смещение данных (размер заголовка) – содержит количество 32 битных слов в заголовке ТСР
Reserved 6 бит – поле резерва
Control Bets 6 бит –контрольные биты:
URG – показывает, что задействовано поле срочного указателя
ACK – показывает, что задействовано поле подтверждения
PSH – показывает необходимость задействовать функцию проталкивания
RST – перезагружает данное соединение
SYN – синхронизирует номера очереди
FIN – закрытие соединения
Window 16 бит – количество байт, получение которых ждет отправитель данного пакета
Checksum 16 бит
Urgent Point 16 бит – поле срочного указателя, содержит номер очереди для байта следующего за срочными данными. Значение этого поля интерпретируется только при выставленном соответствующем контрольном бите.
Options – поле опций переменной длины
Padding – поле выравнивания до границы.