HTTP-клиент не инициирует TCP FIN / ACK, когда Сервер отправляет PSH, FIN, ACK - PullRequest
0 голосов
/ 15 января 2019

Я реализую свой собственный стек протоколов TCP и чрезвычайно простой HTTP-сервер в UBoot, и я столкнулся с проблемой, что клиент не отправляет FIN / ACK после отправки FIN / ACK / PSH. Контент как HTTP, так и TCP, кажется, прав в отношении последовательности TCP и Ack, а также длины контента, но клиент отвечает только FIN в первой попытке на любой URL. Любая последующая попытка посетить посещенный URL не отвечает FIN. Может кто-нибудь сказать мне, что мне не хватает в моем контенте TCP или HTTP, из-за которого клиент не закрывает соединение?

Я предоставил снимок на случай, если кто-то заинтересован в этой проблеме Ссылка на захват пакета

Ожидаемым результатом должно быть отображение клиентом содержимого HTTP 404 Не найдено. Тем не менее, все, что я вижу, если браузер продолжает загружаться без остановки до тех пор, пока клиент не отправит TCP RST, и страница браузера не сможет найти страницу.

1 Ответ

0 голосов
/ 15 января 2019

В потоках, которые выдают (например, tcp.stream eq 1 в pcap), 404 от сервера не подтверждается клиентом, что, вероятно, означает, что оно где-то отброшено. В потоке без проблем (tcp.stream eq 0) 404 получает подтверждение. Если взглянуть ближе на оба 404, вы обнаружите, что у хорошего есть правильная контрольная сумма TCP, а у отброшенного нет. Таким образом, скорее всего, ваш расчет контрольной суммы TCP неверен, и клиентская система отбрасывает эти неправильные пакеты, чтобы они никогда не достигли клиентского приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...