Главная > Технологии > Протокол 3. Спецификация для функций протокола. Протокол TCP3. Спецификация для функций протокола3.1 Формат заголовкаПередача TCP сегментов осуществляется в виде Internet датаграмм. Заголовок датаграммы в Internet протоколе имеет несколько информационных полей, включая адреса отправляющего и принимающего хост-компьютеров [2]. Заголовок TCP следует за Internet заголовком и дополняет его информацией, специфической для TCP протокола. Такое деление допускает использование на уровне хост-компьютеров протоколов, иных нежели TCP. Формат TCP заголовка
Отметим, что каждая метка указывает здесь место для соответствующего бита. Source Port (порт отправителя) 16 бит Destination Port (порт получателя) 16 бит 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. Эта опция используется после всех опций, но не после каждой из них. Опцию необходимо использовать только в том случае, если иначе не будет совпадения с концом TCP заголовка. Нет операций
Опции этого типа могут ставиться между опциями. Целью при этом может служить выравнивание очередной опции по границе слова. Нет гарантии, что отправители будут использовать данную опцию. Поэтому получатели должны быть готовы обрабатывать опции, даже если они не будут начинаться на границе слова. Максимальный размер сегмента
Поле данных опции - 16 бит. Если опция присутствует в списке, то она указывает для программы протокола TCP максимальный размер получаемого сегмента, отправившей сегмент с этой опцией. Эту опцию следует посылать лишь при первоначальном запросе на установление соединения (т.е. в сегментах с установленным контрольным битом SYN). Если данная опция не была использована, ограничения на размер отсутствуют. Padding (выравнивание) длина переменная Выравнивание TCP заголовка осуществляется с тем, чтобы убедиться в том, что TCP заголовок заканчивается, а поле данных сегмента начинается на 32-битной границе. Выравнивание выполняется нулями. Прежде чем мы сможем обсудить многие детали действия TCP протокола, нам необходимо ввести подробную терминологию. Для поддержания TCP соединения необходимо иметь несколько переменных. Мы решили, что эти переменные будут помещены в соответствующую запись - блок управления передачей (Transmission Control Block - TCB). Среди переменных блока TCB имеются номера местного и чужого сокетов, флаги безопасности и приоритета для данного соединения, указатели буферов посылки и получения, указатели текущего сегмента и очереди повторной посылки. Кроме всего этого в TCB имеются несколько переменных, имеющих отношение к номерам очередей отправителя и получателя. Отправление
Получение
Нижеприведенные диаграммы могут помочь связать некоторые из этих переменных с местом в очереди Очередь отправления
Окно отправления - это участок очереди, отмеченный меткой 3 на рисунке 4. Очередь получения
Окно получения - это участок очереди, отмеченный меткой 2 на рисунке 5. В обсуждении также часто используются некоторые переменные, берущие свое значение из полей очередного сегмента. Переменные для очередного сегмента
Соединение во время функционирования проходит через серии промежуточных состояний. Это состояния LISTEN, SYN-SENT, SYN-RECEIVED, ESTABLISHED, FIN-WAIT-1, FIN-WAIT-2, CLOSE-WAIT, CLOSING, LAST-ACK, TIME-WAIT, а также фиктивное состояние CLOSED. Состояние CLOSED является фиктивным, поскольку оно представляет состояние, когда не существует блока TCP, а потому и нет соединения. Краткое описание состояний:
Соединение TCP переходит с одного состояния на другое в ответ на события. Событие - это запросы клиента (открытие, посылка, получение, закрытие, отказ, получение состояния соединения), приход сегментов, и особенно тех, которые содержат флаги SYN, ACK, RST и FIN, а также истечение выделенного времени. Диаграмма состояний на рисунке 6 иллюстрирует лишь смену состояний, а также вызвавшие это события, производимые действия, но не адреса, условия ошибок, не действия, не связанные прямо с изменением состояния. Более подробные сведения о действиях программы протокола TCP в ответ на события приведены в последней главе. Замечание. Данная диаграмма является лишь сводной, но не должна восприниматься как полная спецификация.
Главная > Технологии > Протокол |