В чем разница между сегментом TCP и пакетом TCP?

16

Сегмент TCP не является частью пакета TCP?

Вот что я прочитал:

Сегмент - это фрагмент данных приложения, который TCP обрезает до переносимого размера и оборачивает заголовком TCP.

Разве заголовок TCP не состоит из сегментов?

use753231
источник

Ответы:

21

Мы говорим, TCP segmentчто это протокольная единица данных, которая состоит из заголовка TCP и части данных приложения (пакета), поступающей из (верхнего) уровня приложений. Данные транспортного уровня обычно называются как, segmentа блок данных сетевого уровня именуется как, datagramно когда мы используем UDP в качестве протокола транспортного уровня, мы не говорим UDP segment, вместо этого мы говорим UDP datagram. Я думаю, это потому, что мы не сегментируем единицу данных UDP (сегментация выполняется на транспортном уровне, когда мы используем TCP).

Инкапсуляция данных и стек протоколов TCP / IP

Рикардо Кристиан Рамирес
источник
все это объяснение применимо к модели TCP / IP, поддерживаемой IETF .
выход
8

Оригинальный TCP RFC не совсем понятен тому, как он использует термин «сегмент».

В некоторых случаях термин «сегмент» относится только к текущей части потока данных приложения, которая передается, что исключает заголовки TCP. Например, максимальный размер сегмента TCP (MSS) - это максимальный размер фрагмента данных приложения в этом сообщении, не считая заголовки TCP.

Но в других случаях термин «сегмент» включает в себя все сообщение TCP, включая заголовки TCP. Фактически, по крайней мере, в одном случае в спецификации указаны сегменты TCP без данных приложения (например, простые Acks).

Одно целое IP-сообщение является «дейтаграммой».

Исходный IP RFC ссылается на сообщения канального уровня как «пакеты». IP-дейтаграммы могут быть разбиты на «фрагменты», чтобы соответствовать ограничениям размера пакетов в сетях с небольшими пакетами.

Канальный уровень IEEE 802.3 / Ethernet ссылается на одну непрерывную передачу физического уровня как «пакет». Часть канала передачи данных MAC называется «кадром». Кадр начинается с MAC-адреса назначения и заканчивается последовательностью проверки кадра. Часть кадра, которая может содержать дейтаграмму IP (или ее фрагмент), называется «полем данных клиента MAC».

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

Spiff
источник
2

Заголовок TCP, также называемый «заголовком сегмента», и полезная нагрузка, или данные, или «данные сегмента», составляют сегмент TCP различного размера.

Флоренц Клей
источник
2

Сегмент TCP называется датаграммой. Как правило, сегмент или дейтаграмма является пакетом. Когда дейтаграмма или пакет обрабатывается сетевым уровнем, он добавляет заголовок IP к данным и становится IP-пакетом.

Транспортный уровень сегментирует данные на более мелкие единицы, называемые сегментами, дейтаграммами или так называемыми пакетами. Но мы обычно называем их сегментами.

Lovej
источник
2

сегмент tcp - это только концепция, он отличается от дефрагментации ip

когда вы отправляете данные, которые больше, чем ip mtu, они помещаются в один пакет ip, но слой ip обнаруживает, что пакет ip слишком длинный для передачи, поэтому он разбивает большой пакет на несколько частей, каждый из которых имеет одинаковый Идентификатор, но с другим смещением и длиной данных. принимающая сторона отвечает за сбор всех фрагментов, после получения всех фрагментов она собирает все фрагменты в один полный ip-пакет и переносит его на верхний уровень протокола.

но слой TCP имеет другое поведение. когда вы отправляете достаточно большие данные, слой tcp не помещает данные в один пакет tcp, а затем разделяет их на части (но ip делает), он извлекает часть необработанных данных в один пакет tcp и затем выдвигает от tcp-пакета до ip-уровня, длина tcp-пакета определяется mss, позже он извлечет другую часть остальных данных в другой tcp-пакет и будет повторять процесс до тех пор, пока все данные не будут переданы.

если tcp не использует mss , это ужасно. Предположим, что вы отправляете данные, которые больше, чем mss, они будут помещены в один пакет tcp (данные не разбиваются на мелкие части из-за того, что mss не используется), пакет tcp больше, чем ip mtu, поэтому ip разделит tcp. пакет на куски. пакет tcp будет повторно передавать, если какая-либо из частей потеряна, потраченное время и пропускная способность

ps: tcp_mss = ip_mtu - tcp_header

альберт
источник
1

Заголовок не состоит из сегментов. Заголовок всегда имеет одинаковый размер и должен быть полным. В противном случае пакет не может быть декодирован.

То, что вы называете «Сегментом», является целым «пакетом», который впоследствии объединяется с другими в поток TCP. Видеть:

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

slhck
источник
1

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

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

Джаспер
источник
1

Когда вы отправляете данные через TCP-соединение, объем отправляемых вами данных может превышать максимальный размер байтов, разрешенный соединением в одном пакете. Эта величина «Максимальный размер сегмента» (также называемая MSS) «согласовывается» (1) во время соединения между двумя конечными точками TCP (клиентом и сервером). Протокол OSI уровня 4 TCP отвечает за разброс / сбор. Это означает, что ваш поток данных делится на более мелкие части (называемые сегментами) и отправляется отдельно через сеть. С другой стороны, уровень TCP отвечает за повторный сбор пакета в правильном порядке для преобразования потока так же, как он был отправлен. Ничто не может сказать вам, что сегменты прибудут в пункт назначения в том же порядке, что и при вылете. Именно поэтому пакеты нумеруются. Больше, пакеты подтверждаются получателем один за другим по отдельности (2), но иногда пакеты могут быть потеряны. Тогда ACK не будет возвращен от пункта назначения пакета к источнику. Затем излучатель должен отправить его повторно (это также является ролью TCP). Иногда пакет принимается правильно, но подтверждение не принимается эмитентом (снова потерянный пакет). В таком случае отправитель отправит его повторно, но получатель увидит, что он уже получил его (то есть Dup-пакет), и устранит его, но повторно отправит подтверждение отправителю.

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

(1) На самом деле переговоры вообще не ведутся, каждая конечная точка сообщает максимальный размер, с которым он может иметь дело. Это значение не включает 20 байтов заголовка IP и 20 байтов заголовка TCP. (2) несколько пакетов также могут быть подтверждены одним ACK.

Имейте в виду, что датаграммы представляют собой инкапсулированные данные, отправляемые по IP-сети или с использованием протокола без установления соединения, такого как UDP. Пакеты представляют собой инкапсулированные данные для ориентированного на соединение протокола, такого как TCP. Сегменты - это части потока данных, отправленные по TCP. См. W.Richard Stevens " Проиллюстрированный TCP / IP", чтобы получить гораздо лучшее объяснение всего этого.

Роджер ВЕБЕР
источник
0

Сегмент TCP - это пакет. Сегмент является только частью потока TCP-соединения между двумя компьютерами. Дейтаграмма - это «пакет» в терминах UDP.

sinni800
источник
0

Пакет IP состоит из заголовка IP с прикрепленными данными. Данные - это заголовок TCP и сегмент данных приложения, называемый сегментом TCP. TCP Segement - это то, что вы обычно называете TCP-пакетом.

мп
источник
0

«Универсальным» термином для подобных вещей является единица данных протокола или PDU.

LAYER # - OSI NAME     - COMMON PROTOCOL OR USE - PDU NAME
-------   ------------   ----------------------   --------------------------
Layer 1 - Physical     - Transceiver            - bits, or a physical signal
Layer 2 - Datalink     - Ethernet               - frame
Layer 3 - Network      - IP                     - packet
Layer 4 - Transport    - TCP                    - segment
Layer 5 - Session      - SIP                    - data, request, or response
Layer 6 - Presentation - Encryption/compression - data, request, or response
Layer 7 - Application  - HTTP                   - data, request, or response

Вещи становятся размытыми из-за определенных протоколов от уровня 4 и выше (например, по сей день я не знаю ничего, что действительно является чисто сессионным протоколом, и на самом деле не существует такой вещи, как обычный протокол «представления»). но это определенно почти отдельный слой во многих программных / коммуникационных стеках).

Кроме того, как упоминалось ранее, каждый из этих PDU имеет заголовок, отличный от его полезной нагрузки или данных. Заголовок содержит информацию о данных и, возможно, контрольную сумму для проверки на другом конце.

LawrenceC
источник
разве рабочий TPDU не используется вместо этого на верхних уровнях? см. books.google.de/books?id=daqV_KzkoSIC&pg=PA147
Янус Троелсен