Как я могу принудительно установить MTU с кодом C?

У меня проблема с моим устройством, когда я подключаюсь через сокеты TCP, потому что клиент отправляет MSS в соединении SYN, а сервер (мое устройство) настраивается с той же MSS, но я не хочу устанавливать эту MSS в моем устройстве,

Так как я могу принудительно установить это значение в MSS?

Я попытался установить значение MTU с помощью функции setsockopt с IP_DONTFRAG

1 ответ

Вы должны быть в состоянии позвонить setsockopt с TCP_MAXSEG возможность установить максимальный размер сегмента TCP. Посмотрите на tcp(4) для доступных опций. Вы, вероятно, должны установить опцию, прежде чем connect или же listen,

Что касается настройки IP MTU, IP_DONTFRAG опция приведет к тому, что пакет будет отброшен, если сегмент имеет меньший MTU. Уровень IP должен согласовывать приемлемое значение MTU путем повторной передачи меньшего пакета после получения ответа "необходима фрагментация". Сегменты TCP и IP-пакеты находятся на разных уровнях стека протоколов - иными словами, один TCP-сегмент может занимать несколько IP-пакетов. Изменение размера IP-пакета не влияет на размер сегмента TCP.

Другие вопросы по тегам