Являются ли сегменты, пакеты и кадры одинакового размера, если мы игнорируем заголовки?


12

Я искал объяснение различий между сегментами, пакетами и фреймами, и из того, что я прочитал:

  • Сегмент - это исходные данные + заголовок транспортного уровня.
  • Пакет является заголовком Сегмент + Сетевой уровень.
  • Frame - это заголовок Packet + Data Link Layer.

Таким образом, в основном это означает, что если мы отложим заголовки, сегменты = пакеты = кадры.

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

Но везде, где я ищу, я читаю, что единственное различие между Сегментами, Пакетами и Фреймами - это заголовки, прикрепленные к исходным данным в разных слоях, и что имена разные, потому что они уникальны для каждого слоя, хотя в основном это то же самое.

Сегменты, пакеты и фреймы действительно одно и то же, за исключением заголовков, которые каждый из них включает? Все ли они одного размера?


1
«Заполнить», или количество данных, может быть другим. Взгляните на «алгоритм Nagle», реализованный в ряде сетевых стеков: en.wikipedia.org/wiki/Nagle's_algorithm
Флоренц Клей,

Ответы:


16

введите описание изображения здесь

Каждый слой имеет свой заголовок, как вы можете видеть:

  • Сегменты: Транспортный уровень (TCP / UDP) = транспортный заголовок + данные (от верхнего уровня)
  • Пакет: Интернет-уровень (IP) = сетевой заголовок + транспортный заголовок и данные (как транспорт, так и данные с верхних уровней)
  • Кадры: сетевой уровень (Ethernet) = заголовок кадра + сеть, транспортный заголовок и данные (из трех верхних уровней).

Итак, чтобы ответить на ваш вопрос, разница между сегментом, пакетом и кадрами в основном состоит в том, что его соответствующий уровень считает «данными». В сегменте данные поступают с прикладного уровня; в пакете данные поступают с транспортного уровня (транспортный заголовок + данные); и на фрейме данные поступают из уровня Интернета (заголовки транспорта и Интернета + данные из уровня приложения).


1
А как насчет того, как данные в конечном итоге передаются через физический уровень? Если не все данные передаются одновременно, то как работает разбиение? Происходит ли это одновременно на уровне сети и каналов передачи данных (и обрабатывается транспортным уровнем)? Не могли бы вы подробно рассказать об этом процессе в своем ответе?
amiregelz

Диогу прав, но есть и некоторые соображения, которые могут ввести в заблуждение. Несмотря на то, что вы можете отправлять 100 байтов данных, пакет все еще занимает полный MTU (обычно ~ 1500 байтов) в проводном соединении. Недостатком является то, что если вы отправляете кучу крошечных пакетов, вы никогда не получите максимально допустимую пропускную способность для сетевого соединения. Некоторые инкапсулированные туннели могут уменьшить / минимизировать эти отходы ... но это другая тема.
TheCompWiz

@Diogo Можете ли вы изменить свой ответ в соответствии с моим комментарием? Спасибо.
amiregelz

0

Сегменты, пакеты и фреймы действительно одно и то же, за исключением заголовков, которые каждый из них включает?

http://www.inetdaemon.com/tutorials/basic_concepts/communication/frames_packets_n_pdus.shtml

Все ли они одного размера?

Если вы думаете о слоях как об отдельных объектах, то нет; все они имеют разные максимальные и минимальные размеры. Думая о них по отношению друг к другу; нижний уровень определяет максимальный размер данных, которые могут быть переданы с уровня выше.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.