Как я могу принудительно установить 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.