logo
Vvedenie_v_Veb_programmirovanien_2 / Vvedenie_v_Veb_programmirovanien_2

Флаги (управляющие биты) Это поле содержит 6 битовых флагов:

Размер окна: содержит количество байт информации, которое может принять TCP-модуль, отправляющий партнеру TCP-пакет. Поле используется принимающим поток данных TCP-модулем для управления интенсивностью этого потока.

Контрольная сумма: 16-битовое поле, содержащее контрольную сумму, подсчитанную для TCP-заголовка, данных пакета и псевдозаголовка.

Указательважности: 16-битовое поле, содержащее указатель на первый байт в теле TCP-пакета, начинающий последовательность важных (urgent) данных.

Дополнительные данные заголовка: Протокол TCP определяет три типа дополнительных данных заголовка: конец списка полей дополнительных данных; пусто (No Operation); максимальный размер пакета.

В отличие от протокола UDP, который может сразу же начать передачу пакетов, TCP перед передачей данных устанавливает соединения:

При обмене данными приемник использует номер последовательности, содержащийся в получаемых сегментах, для восстановления их исходного порядка. Приемник уведомляет передающую сторону о номере последовательности, до которой он успешно получил данные, включая его в поле «номер подтверждения». Если впоследствии будет принят сегмент, относящийся к ожидаемому номеру последовательности, то порядок данных будет автоматически восстановлен исходя из номеров последовательностей в сегментах.

Для того, чтобы передающая сторона не отправляла данные интенсивнее, чем их может обработать приемник, TCP содержит средства управления потоком. Для этого используется поле «окно». В сегментах, направляемых от приемника передающей стороне в поле «окно» указывается текущий размер приемного буфера. Передающая сторона сохраняет размер окна и отправляет данных не более, чем указал приемник. Если приемник указал нулевой размер окна, то передача данных в направлении этого узла не происходит, пока приемник не сообщит о большем размере окна.

Последний сегмент, содержащий команду, обязан содержать флаг PSH, чтобы приложение на принимающей стороне смогло начать её выполнение.

Завершение соединения можно рассмотреть в три этапа:

  1. Посылка серверу от клиента флагов FIN и ACK на завершение соединения.

  2. Сервер посылает клиенту флаги ответа ACK , FIN, что соединение закрыто.

  3. После получения этих флагов клиент закрывает соединение и в подтверждение отправляет серверу ACK , что соединение закрыто.

Протоколы транспортного уровня, обеспечивающие надежную передачу данных, предполагают подтверждение принимающей стороной правильности полученных данных. Для этого используется принцип "скользящего окна" (sliding window), который заключается в том, что каждая сторона может отправлять партнеру максимум столько байт, сколько партнер указал в поле "размер окна" заголовка TCP-пакета, подтверждающего получение предыдущих данных. Принцип "скользящего окна" обеспечивает опережающую посылку данных с отложенным их подтверждением. Если в течение некоторого времени не будет получено отложенное подтверждение отправленного пакета, то отправляющий TCP-модуль будет вынужден повторить посылку всех TCP-пакетов, начиная с неподтвержденного пакета.

Хотя протокол осуществляет проверку контрольной суммы по каждому сегменту, используемый алгоритм считается слабым по надежности. В общем случае распределенным сетевым приложениям рекомендуется использовать дополнительные программные средства для гарантирования целостности передаваемой информации.