Отключение фрагментации

We use cookies. Read the Privacy and Cookie Policy

Отключение фрагментации

По умолчанию стек IPv6 фрагментирует исходящие пакеты по транспортной MTU. Приложениям типа traceroute автоматическая фрагментация не нужна, потому что им нужно иметь возможность самостоятельно определять транспортную MTU. Параметр сокета IPV6_DONTFRAG используется для отключения автоматической фрагментации: значение 0 (по умолчанию) разрешает фрагментацию, тогда как значение 1 отключает ее.

Когда автоматическая фрагментация отключена, вызов send со слишком большим пакетом может возвратить ошибку EMSGSIZE, но это не является обязательным. Единственным способом определить необходимость фрагментации пакета является использование параметра сокета IPV6_RECVPATHMTU, который мы описали выше.

Параметр IPV6_DONTFRAG может передаваться и во вспомогательных данных. При этом элемент cmsg_level структуры cmsghdr должен иметь значение IPPROTO_IPV6, а элемент cmsg_type должен иметь значение IPV6_DONTFRAG. Первый байт данных должен быть первым байтом четырехбайтового целого.

Данный текст является ознакомительным фрагментом.