|
|
Спецификация для функций протокола
Передача TCP сегментов осуществляется в виде Internet датаграмм. Заголовок датаграммы в Internet протоколе имеет несколько информационных полей, включая адреса отправляющего и принимающего хост- компьютеров. Заголовок TCP следует за Internet заголовком и дополняет его информацией, специфической для TCP протокола. Такое деление допускает использование на уровне хост-компьютеров протоколов, иных нежели TCP. Формат TCP заголовка
Отметим, что каждая метка указывает здесь место для соответствующего бита. Source Port
(порт отправителя) 16 бит номер порта отправителя Номера портов источника и получателя определяют прикладной процесс инициировавший данное соединение. Закрепление номеров портов осуществляется в соответствии с рекомендацией RFC-1700. Список основных портов приведен здесь. Sequence Number
(номер очереди) 32 бита Acknowledgment Number
(номер подтверждения) 32 бита Data Offset
(смещение данных) 4 бита Reserved 6 бит Control Bits
(контрольные биты) 6 бит
Window (окно) 16
бит Checksum
(контрольная сумма) 16 бит Контрольная сумма, помимо всего прочего, учитывает 96 бит псевдозаголовка, который для внутреннего употребления ставится перед TCP заголовком. Этот псевдозаголовок содержит адрес отправителя, адрес получателя, протокол и длину TCP сегмента. Такой подход обеспечивает защиту протокола TCP от ошибшихся в маршруте сегментов. Эту информацию обрабатывает Internet протокол. Она передается через интерфейс протокол TCP/локальная сеть в качестве аргументов или результатов запросов от протокола TCP к протоколу IP.
Длина TCP сегмента - это длина TCP заголовка и поля данных, измеренная в октетах. Это не является точным указанием количества передаваемых по сети октетов, она не учитывает 12 октетов псевдозаголовка, но тем не менее расчет этого параметра все же производится. Urgent Pointer
(срочный указатель) 16 бит Options
(опции) длина переменная Опции могут начинаться с любого октета. Они могут иметь два формата:
В октете длины опции учитываются октет типа опции, сам октет длины, а также все октеты с данными. Заметим, что список опций может оказаться короче, чем можно указать в поле Data Offset. Место в заголовке, остающееся за опцией "End-of-Option", должно быть заполнено нулями. Протокол TCP должен быть готов обрабатывать все опции. В настоящее время определены следующие опции:
Определения указанных опцийКонец списка опций
Этот код опции определяет конец списка опций.
Конец списка может не совпадать с концом TCP
заголовка, указанным в поле Data Offset. Нет операций
Опции этого типа могут ставиться между опциями. Целью при этом может служить выравнивание очередной опции по границе слова. Нет гарантии, что отправители будут использовать данную опцию. Поэтому получатели должны быть готовы обрабатывать опции, даже если они не будут начинаться на границе слова. Максимальный размер сегмента
Поле данных опции - 16 бит. Если опция присутствует в списке, то она указывает для программы протокола TCP максимальный размер получаемого сегмента, отправившей сегмент с этой опцией. Эту опцию следует посылать лишь при первоначальном запросе на установление соединения (т.е. в сегментах с установленным контрольным битом SYN). Если данная опция не была использована, ограничения на размер отсутствуют. Padding (выравнивание) длина переменная Выравнивание TCP заголовка осуществляется с тем, чтобы убедиться в том, что TCP заголовок заканчивается, а поле данных сегмента начинается на 32-битной границе. Выравнивание выполняется нулями. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|