Начальный порядковый номер и начальный размер приемного окна задаются во время установки соединения. Рис. 10.13 иллюстрирует некоторые особенности механизма пересылки данных.
1. Отправитель начинает работу с окном отправки в 4 Кбайт.
2. Отправитель пересылает 1 Кбайт. Копия этих данных сохраняется до получения подтверждения (ACK), поскольку может потребоваться их повторная передача.
3. Прибывает сообщение ACK для первого Кбайта, и отправляются следующие 2 Кбайт данных. Результат показан в третьей сверху части рис. 10.13. Хранение 2 Кбайт продолжается.
4. Наконец поступает ACK для всех переданных данных (т.е. все они получены приемником). ACK восстанавливает размер окна отправки в 4 Кбайт.
Рис. 10.13. Окно отправки
Следует указать на несколько интересных особенностей:
■ Отправитель не дожидается ACK для каждого из посылаемых сегментов данных. Единственным ограничением на пересылку является размер приемного окна (например, отправитель должен пересылать только 4 К однобайтовых сегментов).
■ Предположим, что отправитель посылает данные в нескольких очень коротких сегментах (например, по 80 байт). В этом случае данные могут быть переформатированы для более эффективной передачи (например, в единый сегмент).
10.8 Заголовок TCP
На рис. 10.14 показан формат сегмента (заголовок TCP и данные). Заголовок начинается с идентификаторов портов источника и назначения. Следующее далее поле
Рис. 10.14. Сегмент TCP
Существуют шесть флагов:
Равен 1 для срочных данных | |
Равен 1 для всех сегментов, кроме начального | |
Указывает на необходимость своевременной доставки данных | |
Индикатор ошибки, используется и для завершения сеанса | |
Равен 1 во время установки соединения | |
Равен 1 при нормальном закрытии |
Поле
10.8.1 Вариант максимального размера сегмента
Параметр
Другими словами, MSS отражает наибольшую
Обычно партнеры обмениваются значениями MSS в начальных сообщениях SYN при открытии соединения. Если система не анонсирует величину максимального размера сегмента, используется значение по умолчанию в 536 байт.
Размер максимального сегмента кодируется 2-байтовой вводной частью со следующим далее 2- байтовым значением, т.е. наибольшая величина будет составлять 216-1 (65 535 байт).
MSS накладывает жесткое ограничение на пересылаемые в TCP данные: приемник не сможет обработать большие значения. Однако отправитель использует сегменты
10.8.2 Использование полей заголовка в запросе на соединение
Первый сегмент, посылаемый для открытия соединения, имеет значение флага SYN, равное 1, и флага ACK — 0. Начальный SYN является
Поле