Я знаю, что если полезная нагрузка IP> MTU, то маршрутизаторы обычно фрагментируют IP-пакет. Наконец, все фрагментированные пакеты собираются в месте назначения с использованием полей IP-ID, смещений фрагментов IP и флагов фрагментации. Максимальная длина полезной нагрузки IP составляет 64K. Таким образом, вполне вероятно, что L4 передаст полезную нагрузку 64 КБ. Если протокол L2 является Ethernet, что часто имеет место, то MTU будет около 1600 байтов. Следовательно, IP-пакет будет фрагментирован на самом узле-источнике.
Однако быстрый поиск по реализации IP в Linux говорит мне, что в последних ядрах протоколы L4 дружественны к фрагментам, т.е. они пытаются сохранить работу фрагментации для IP, передавая буферы размера, близкого к MTU.
Учитывая эти два факта, мне интересно, как часто IP-пакет фрагментируется на самом узле-источнике.
Это происходит иногда / редко / никогда?
Кто-нибудь знает, есть ли исключения из правила фрагментации в ядре Linux (то есть, существуют ли ситуации, когда протоколы L4 не являются дружественными для фрагментов)?
Как это обрабатывается в других распространенных ОС, таких как Windows?
Вообще, как часто IP-пакеты фрагментированы?