Открыть сервис

TCP-сегмент

TCP-сегмент — это единица данных протокола управления передачей (TCP), которая передаётся между двумя узлами сети. Он представляет собой блок информации, сформированный на транспортном уровне модели OSI, и содержит заголовок и полезную нагрузку (данные прикладного уровня). TCP-сегмент является основным элементом, обеспечивающим надёжную, упорядоченную и безошибочную доставку данных в сетях с коммутацией пакетов, в частности в стеке протоколов TCP/IP.

Структура TCP-сегмента

Каждый TCP-сегмент состоит из двух основных частей: заголовка (header) и поля данных (payload). Заголовок имеет фиксированную часть длиной 20 байт и может содержать опциональные поля.

Заголовок TCP-сегмента

Заголовок включает следующие поля (в порядке следования):

Поле данных

Поле данных содержит полезную нагрузку — данные, переданные с прикладного уровня. Его длина определяется как общая длина IP-дейтаграммы минус длина IP-заголовка и длина TCP-заголовка. Максимальный размер данных в одном сегменте ограничен значением MSS (Maximum Segment Size), которое согласовывается при установлении соединения.

Формирование и передача TCP-сегмента

Процесс формирования TCP-сегмента включает несколько этапов:

  1. Приём данных от приложения: Прикладной уровень передаёт поток байт транспортному уровню.
  2. Буферизация и сегментация: TCP-модуль разбивает поток байт на сегменты. Размер каждого сегмента обычно выбирается так, чтобы он не превышал MSS и помещался в IP-пакет без фрагментации.
  3. Добавление заголовка: К каждому сегменту добавляется TCP-заголовок с соответствующими полями (порты, порядковый номер, флаги, контрольная сумма и т.д.).
  4. Передача на IP-уровень: Сформированный TCP-сегмент передаётся протоколу IP для инкапсуляции в IP-дейтаграмму и дальнейшей отправки по сети.

Управление соединением с помощью TCP-сегментов

TCP-сегменты играют центральную роль в установлении, поддержании и завершении соединения.

Установление соединения (трёхстороннее рукопожатие)

Для установления соединения используется обмен сегментами с флагами SYN и ACK:

  1. Клиент → Сервер: Отправляется сегмент с флагом SYN и случайным начальным порядковым номером (ISN\_c).
  2. Сервер → Клиент: Отправляется сегмент с флагами SYN и ACK, содержащий собственный начальный порядковый номер (ISN\_s) и номер подтверждения, равный ISN\_c + 1.
  3. Клиент → Сервер: Отправляется сегмент с флагом ACK и номером подтверждения, равным ISN\_s + 1. Соединение считается установленным.

Поддержание соединения и передача данных

В процессе передачи данных каждый отправленный сегмент (кроме повторных передач) имеет свой порядковый номер. Получатель подтверждает приём данных, отправляя сегмент с флагом ACK и номером подтверждения, равным следующему ожидаемому байту. При потере сегмента или получении повреждённого сегмента отправитель повторяет передачу (механизм тайм-аута и повторной передачи). Для повышения эффективности используется скользящее окно (sliding window), размер которого регулируется через поле «Размер окна».

Завершение соединения

Завершение соединения обычно происходит в четыре этапа (четырёхстороннее рукопожатие):

  1. Сторона А → Сторона Б: Отправляется сегмент с флагом FIN.
  2. Сторона Б → Сторона А: Отправляется сегмент с флагом ACK, подтверждающий приём FIN.
  3. Сторона Б → Сторона А: После завершения передачи своих данных сторона Б отправляет сегмент с флагом FIN.
  4. Сторона А → Сторона Б: Отправляется сегмент с флагом ACK, подтверждающий приём FIN. После этого соединение закрывается.

Контроль ошибок и управление потоком

TCP-сегменты обеспечивают надёжность передачи данных через несколько механизмов:

Применение и значение

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

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

Отличие от других единиц данных

TCP-сегмент следует отличать от других единиц данных в стеке протоколов TCP/IP:

Источники

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →