Я отправляю HTTP-запрос с телом, достаточным для того, чтобы запрос был сегментирован на несколько пакетов размером 374B (заголовки), 1500B и 199B.
Так как у некоторого нашего сетевого оборудования MTU составляет всего 1430 Б, а для пакетов установлен флаг IPv4 «Не фрагментировать», оборудование отклоняет пакет размером 1500 Б и отвечает необходимостью фрагментации ICMP, но с установленным флагом «Не фрагментировать». . Этот пакет ICMP имеет «MTU следующего перехода» 1430B.
Затем TCP немного выжидает и повторно передает пакет сразу после того, как он был отброшен в результате перегрузки сети (см. Снимок экрана Wireshark), и не регулирует размер своих сегментов.
Почему TCP не регулирует размер сегментов, чтобы размер пакета был достаточно меньше?
Я использую:
Заголовки IPv4 большого пакета
Пакет ICMP, который отвечает на большой пакет (с «MTU следующего перехода: 1430B»)
Изменить: весь трафик был захвачен на клиентском устройстве через tcpdump
.