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