TCP NO_DELAY + потерянный заголовок + ретрансляция TCP

Странная ситуация наблюдается в этом случае:

  1. HTTP-запрос отправляется с флагом TCP NO_DELAY (т. Е. Алгоритм Nagle отключен);
  2. WireShark не захватывает пакет TCP с глаголом и заголовками HTTP - только пакет с телом HTTP виден (пакет потерян?);
  3. Ответы удаленного хоста с ACK показывают, что не все данные подтверждены;
  4. Происходит повторная передача TCP, и теперь HTTP-глагол и заголовки перехватываются WireShark.

TCP поток от WireShark

Больше примечаний:

  1. Если алгоритм Nagle включен, то потеря или повторная передача пакетов не наблюдается;
  2. Проблема проверена в двух разных сетях, поэтому проблема вряд ли связана с сетевой средой (за исключением, может быть, факта, что хосты являются виртуальными машинами);
  3. Запрос сделан с использованием C# HttpClient (.NET 4);
  4. Размер тела HTTP, кажется, играет роль - нет проблем для относительно маленьких пакетов.

Похоже, что NO_DELAY вызывает странное поведение с потерянным TCP-пакетом с HTTP-заголовками / глаголом внутри.

Любой совет?

0 ответов

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