
Тип опции N
Длина = 3
Тело опции N
NOOP (01)
FIN
Source Port
Destination Port
Sequence Number
Acknowledgment Number
Checksum
Urgent Pointer
Data Offset
(07)
Window
Reserved
URG
ACK
PSH
RST
SYN
Тело опции M
Длина = 2
EOOL (00)
Padding (00)
В любом случае способ выравнивания используемых в заголовке опций остается на
усмотрение отправителя сегмента и зависит лишь от его представлений об удобстве.
В RFC793 определена еще одна опция, кроме двух изученных выше, однако сейчас мы не
станем рассматривать данную опцию, как опции, появившиеся в более поздних RFC. Сейчас мы
рассмотрели лишь механизм формирования поля опций для того, чтобы в тот момент, когда нам
понадобится изучить ту или иную опцию, предназначенную для решения конкретной задачи, мы
могли оперировать понятием опций TCP. Ясно, что после заголовка TCP в линии связи
непосредственно передаются данные прикладного протокола, соответствующие указанному в
заголовке TCP порту.
Теперь, когда сделан обзор заголовка протокола TCP, мы начинаем постепенное изучение
этого протокола с рассмотрения его сеансовых функций. Еще раз напоминаю, что TCP
устанавливает соединения перед передачей данных с гарантированием доставки, в процессе
установки соединения стороны должны убедиться в том, что партнер по соединению существует
(функционирует) и оговорить некоторые параметры, используемые в процессе дальнейшего обмена
данными в рамках установленного соединения.
Итак, положим существует некоторый узел в составной сети, на котором запущено
некоторое серверное приложение на некотором хорошо известном порту, например, на порту 80
(WEB сервер). Положим, на другом, клиентском узле запущено приложение браузер, и
пользователь этого браузера написал в адресной строке IP адрес этого WEB сервера.
Протокол TCP на клиентском узле должен установить TCP соединение с удаленным портом,
для этого TCP клиентского узла формирует специального формата TCP сегмент, в этом сегменте
устанавливается единственный флаг SYN, разумеется, в качестве порта получателя фигурирует
хорошо известный порт WEB сервера (80), а качестве порта источника используется динамически
назначаемый клиентскому приложению порт. Данный сегмент обычно не содержит полезных
данных, т.е. после заголовка TCP обычно ничего не передается. Однако передача данных в таком
сегменте НЕ запрещена, но получатель должен буферизовать такие данные и не передавать их
приложению, пока соединения не будет установлено. С помощью флага SYN по сути и делается
«предложение» об установке логического соединения. Как мы помним, одна из задач процесса
установки соединения – убедиться, что партнер готов обмениваться данными (для того, чтобы не
наводнять сеть никому не нужными данными). Если бы эта цель была бы единственной, то серверу
следовало передать клиенту один сегмент в ответ – в таком случае обе стороны знали бы о
готовности друг друга к обмену данными (если бы исходный сегмент с флагом SYN и сегмент-
ответ потерялся, клиент бы послал сегмент с флагом SYN снова).
Но, как нам известно, убедиться в готовности партнера обмениваться данными – не
единственная цель установки логического соединения. Помимо этого стороны должны оговорить
некоторые параметры, которые понадобятся в процессе обмена данными, в первую очередь – те
начальные значения Sequence Number, которые стороны будут использовать при нумерации
передаваемых партнеру данных. Если бы в протоколе TCP стороны начинали нумерацию