@konstaner

Почему данные в tcp frame разбиваются на 2 tcp segment и теряется второй сегмент?

Приветствую.

Отправляем JSON из 1Сv8 в nginx (проксирует в unicorn backend) через POST запрос.

Часть запросов доходит нормально, но некоторые получают от nginx ответ 400. Включили логирование тела запроса и увидели, что JSON приходит не полностью - обрезается часть запроса в конце.

Посмотрел траффик wireshark'ом и выяснил, что эти запросы состоят из 9 Reassembled TCP Segments. Причем, только в проблемных запросах я вижу 2 TCP segment data. И как раз вот этот второй сегмент почему-то обрезается.

b5104f3b2bda40df9aee7dfbc4b006ca.png

1. Почему может разбиваться на 2 TCP segment data?
2. Почему в reassembled tcp этот сегмент не попадает?

Спасибо.
  • Вопрос задан
  • 504 просмотра
Пригласить эксперта
Ответы на вопрос 1
Я думаю, что TCP здесь не причем, если только клиент не закрывает соединение не считывая ответа сервера, тогда это возможно, если на сокет не установлен linger. Но скорей всего, это просто ошибка в клиенте, разработчики не учли, что функция send() может отправить не все данные из буфера, такую ошибку разработчики не имеющие опыта написания сетевых клиентов делают достаточно часто.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы