Как установить атрибут протокола для фрагментов IP? - PullRequest
0 голосов
/ 13 июля 2009

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

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

Ответы [ 2 ]

1 голос
/ 13 июля 2009

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

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


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

1 голос
/ 13 июля 2009

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

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

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

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

...