Назад | Перейти на главную страницу

Может ли канальный уровень выполнять фрагментацию IP в некоторых особых случаях?

Я читаю книгу TCP / IP Illustrated, Vol.1, и там говорится, что фрагментация IP выполняется на сетевом уровне.

Вот как я понял эту концепцию до сих пор: сетевой уровень (L3) создает «IP-дейтаграмму» (IP-заголовок + данные) и отправляет этот массив байтов на уровень канала данных (L2). Если L2 не знает о структуре IP-дейтаграммы, а полученный массив байтов больше максимального размера, он не будет знать, как разделить этот массив байтов и добавить заголовок IP к каждому фрагменту в качестве ответственности L3. Итак, L2 и L3 должны как-то взаимодействовать.

Что меня смущает, так это то, что несколько страниц спустя, обсуждая IP-заголовок, общую длину и максимальный размер IP-дейтаграммы, говорится: «Хотя можно отправить 65535-байтовую IP-дейтаграмму, большинство ссылочных слоев будет фрагментировать это ".

Моя «концепция» неверна? Знает ли L2 на самом деле о структуре дейтаграммы IP, чтобы он мог фрагментировать дейтаграмму IP? Если это правда, то почему L2 не всегда выполняет фрагментацию, поскольку знает свой MTU?

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

Нижележащий уровень 2 является отдельным и заключает каждый пакет (фрагмент) в кадр. На самом деле это все, что он может делать как правило, L2, и уж тем более Ethernet, не выполняет "фрагментацию".

Определение оптимального размера - это гораздо меньше координации и больше похоже на догадки, и это называется Обнаружение MTU пути. Маловероятно, что сетевой стек пробует максимум 65535 байт. Возможно, вернется сообщение ICMP, что размер слишком велик. Хотя путь, вероятно, с самого начала является интерфейсом Ethernet, поэтому попытка чего-либо более 1400 или около того, вероятно, не сработает.

Формулировка вводит в заблуждение. Уровень IP знает максимальный размер полезной нагрузки канального уровня, поэтому выполняет фрагментацию.

L2 не знает об IP, но у него есть собственные ограничения на размер кадра. Любая IP-дейтаграмма, размер которой превышает размер кадра L2, будет разделена на 2 или более кадров L2.