Пакет (сетевые технологии)

Из Википедии, бесплатной энциклопедии

В компьютерных сетях пакет — это определённым образом оформленный блок данных, передаваемый по сети в пакетном режиме. Компьютерные линии связи, которые не поддерживают пакетного режима, как, например, традиционная телекоммуникационная связь точка-точка, передают данные просто в виде последовательности байтов, символов или битов поодиночке. Если данные сформированы в пакеты, битрейт коммуникационной среды можно более эффективно распределить между пользователями, чем в сети с коммутацией каналов. При использовании сетей с коммутацией пакетов можно надёжно гарантировать пороговый битрейт, ниже которого он опускаться не будет.

Сетевой пакет может состоять из служебной информации, включающей стартовые биты (преамбулу), заголовки (headers) и прицеп (trailer), и полезную нагрузку (payload). Между пакетами, посылаемыми в сеть, обычно соблюдается межкадровый интервал (англ. Interframe gap). Максимальная длина нагрузки называется maximum transmission unit (MTU).

Существует возможность фрагментации пакета — генерация двух сетевых пакетов из одного. Происходит при превышении длины кадра MTU интерфейса, через который он в данный момент проходит. Фрагментация (и её запрещение) поддерживается протоколом IP и не предусмотрена в большинстве других протоколов. Если сетевой адаптер обнаруживает кадр длиннее его media MTU, то этот кадр обычно отбрасывается. Такое случается, если на одном хосте разрешены jumbo-кадры, а на другом — нет. Фрагментация IP-пакета увеличивает нагрузку на центральный процессор и снижает скорость передачи полезных данных этого пакета (на 2÷50 % в Ethernet-сети в зависимости от длины кадра), поэтому её стараются избегать. При потере любого фрагмента повторно должна быть передана вся последовательность, что является дополнительным риском снижения скорости. Сборка всех частей в исходный пакет производится только адресатом, даже если на каком-то участке сети MTU больше требуемого. Фрагментация пакетов может быть использована в сетевых атаках и зондировании сетей.

Разметка пакета

[править | править код]

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

Различные коммуникационные протоколы используют разные соглашения для разделения элементов и для форматирования данных. В протоколе «двоичной синхронной передачи» пакет отформатирован в 8-битных байтах, а для разделения элементов используются специальные символы. В других протоколах, таких как Ethernet, зафиксировано начало заголовка и элементов данных, их расположение относительно начала пакета. Некоторые протоколы форматируют информацию на уровне битов, а не байтов.

Хорошей аналогией является рассмотрение пакета как письма: заголовок является конвертом, а область данных — это то, что человек вкладывает внутрь конверта. Разница, однако, состоит в том, что некоторые сети могут в случае необходимости разбивать большие пакеты на более мелкие (заметим, что эти меньшие элементы данных также форматируются как пакеты).

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

Обнаружение ошибок

[править | править код]

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

Хвостовая часть пакета часто содержит данные проверки ошибок, возникших во время передачи пакета по сети.

Адрес хоста

[править | править код]

Современные сети обычно соединяют между собой три или более хоста. В таких случаях заголовок пакета обычно содержит информацию, в которой записан фактический адрес хоста. В сложных сетях, построенных из нескольких узлов коммутации и маршрутизации, такие как ARPANET или современный интернет, ряд пакетов, отправленных с одного компьютера на другой, может следовать разными маршрутами. Эта технология называется пакетной коммутацией.

Сравнение пакетов и дейтаграмм

[править | править код]

Термин пакет распространяется на любое сообщение, форматированное как пакет, тогда как термин дейтаграмма обычно используется для пакетов «ненадёжных» служб.[1] «Надёжной» является служба, которая уведомляет пользователя, если доставка не удалась, тогда как «ненадёжная» такого уведомления пользователя не делает. Например, IP не обеспечивает надёжного сервиса, а TCP и IP вместе его обеспечивают, тогда как UDP с IP надёжного сервиса не обеспечивают. Все эти протоколы используют пакеты, но UDP-пакеты, как правило, называют дейтаграммами.[1]

Когда сеть ARPANET впервые выступила с коммутацией пакетов, она обеспечивала надёжную процедуру доставки пакетов к серверам через свой интерфейс 1822. Сервер сети организует данные в пакет нужного формата, вставляет туда адрес компьютера назначения и посылает сообщение через интерфейс процессору передачи сообщений. Как только сообщение доставлено к серверу назначения, на посылающий сервер доставляется подтверждение. Если сеть не может доставить сообщение, на посылающий сервер будет послано извещение об ошибке.

Разработчики CYCLADES и ALOHAnet продемонстрировали, что можно построить эффективную компьютерную сеть, не обеспечивая надёжной передачи пакетов. Этот опыт позже был использован конструкторами Ethernet.

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

Пример: IP-пакет

[править | править код]

IP-пакеты состоят из заголовка и полезной нагрузки. Заголовок пакета IPv4 состоит из:

  1. 4 бита содержат версию пакета: IPv4 или IPv6.
  2. 4 бита содержат длину интернет-заголовка, которая измеряется отрезками по 4 байта (например, 5 означает 20 байт).
  3. 8 бит содержат тип обслуживания, известный также как качество обслуживания (QoS), описывающее приоритеты пакета.
  4. 16 бит содержат длину пакета в байтах.
  5. 16 бит содержат тег идентификации, помогающий восстановить пакет из нескольких фрагментов.
  6. 3 бита содержат нуль, флаг разрешения фрагментации пакета (DF: не фрагментировать), а также флаг разрешения дальнейшей фрагментации (MF: фрагментировать дальше).
  7. 13 бит содержат смещение фрагмента, поле для идентификации положение фрагмента в исходном пакете.
  8. 8 бит содержат время жизни (TTL), которое определяет количество переходов (через маршрутизаторы, компьютеры и сетевые устройства), разрешённых сделать пакету, прежде чем он исчезнет (например, пакету с TTL 16 разрешено пройти не более 16 маршрутизаторов, чтобы добраться до места назначения).
  9. 8 бит содержат протокол (TCP, UDP, ICMP и т. д.).
  10. 16 бит содержат контрольную сумму заголовка, используемую при обнаружении ошибок.
  11. 32 бит содержат IP-адрес источника.
  12. 32 бит содержат адрес назначения.

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

Доставка не гарантируется

[править | править код]

Многие сети не гарантируют доставку, отсутствие дубликатов пакетов и порядок их доставки, как например, протокол UDP в сети Интернет. Тем не менее, это можно сделать в верхней части пакета услуг транспортного уровня, который может обеспечить такую защиту. TCP и UDP являются лучшими примерами 4-го транспортного уровня, одного из семи уровней сетевой модели OSI.

Заголовок пакета определяет тип данных, номер пакета, общее количество пакетов и IP-адреса отправителя и получателя.

Иногда используется термин «кадр» для обозначения пакетов в точности так, как он используется при передаче сигнала по проводам или радио.

Примечания

[править | править код]
  1. 1 2 Kurose, James F. & Ross, Keith W. (2007), «Computer Networking: A Top-Down Approach» ISBN 0-321-49770-8
  • Dean, Tamara (2006). Network+ Guide to Networks. Boston, Massachusetts: Thomson Course Technology.