Как устанавливается атрибут протокола для IP-фрагментов?

Я проверяю способность драйвера сетевого устройства справляться с поврежденными пакетами. Конкретный случай, который я хочу проверить, — это когда большой TCP-пакет фрагментируется на пути из-за меньшего MTU на пути.

Что меня больше всего интересует в IP-фрагментации большого пакета TCP, так это то, установлен ли атрибут протокола пакета IP-фрагмента на TCP для каждого пакета или только для первого фрагмента?


person Avihu Turzion    schedule 13.07.2009    source источник


Ответы (2)


В поле протокола будет установлено значение TCP (6) для каждого фрагмента.

Из RFC 791 — Интернет-протокол

Чтобы фрагментировать длинную дейтаграмму Интернета, модуль протокола Интернета (например, в шлюзе) создает две новые дейтаграммы Интернета и копирует содержимое полей заголовка Интернета из длинной дейтаграммы в оба новых заголовка Интернета. ... Эта процедура может быть обобщена для n-стороннего разделения, а не для описанного двухстороннего разделения.

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

person Brandon E Taylor    schedule 13.07.2009

Фрагментация IP — это действие уровня 3, в то время как пакет будет помечен как TCP, промежуточные фрагменты не будут использоваться TCP. Уровень TCP должен будет дождаться повторной сборки фактического IP-пакета (нефрагментированного), прежде чем он сможет его обработать.

Википедия Фрагментация IP.


Path MTU-Discovery обычно обновляет исходный MTU, и пакеты TCP (на самом деле сегменты) будут отправлены с размерами, ограниченными, чтобы не вызвать фрагментацию в пути

person nik    schedule 13.07.2009