Я пытаюсь прояснить то, что прочитал здесь:
как рассчитать потерю пакетов из двоичного файла TCPDUMP
Первый ответ говорит о том, что порядковый номер будет одинаковым от клиента к серверу и от сервера к клиенту, подтверждение будет одинаковым, и это скажет вам, какая сторона выполняет повторную передачу. Однако, когда я получаю такой вывод:
10:58:15.317823 IP 1.2.3.4.50245 > 5.6.7.8.443: Flags [P.], seq 3040268:3040385, ack 56380, win 32768, length 117
10:58:15.317841 IP 1.2.3.4.50245 > 5.6.7.8.443: Flags [P.], seq 3040385:3040470, ack 56380, win 32768, length 85
10:58:15.550090 IP 1.2.3.4.50245 > 5.6.7.8.443: Flags [P.], seq 3040268:3040470, ack 56380, win 32768, length 202
10:58:15.811131 IP 1.2.3.4.50245 > 5.6.7.8.443: Flags [P.], seq 3040268:3040470, ack 56380, win 32768, length 202
10:58:16.133386 IP 1.2.3.4.50245 > 5.6.7.8.443: Flags [P.], seq 3040268:3040470, ack 56380, win 32768, length 202
В этом примере первые 2 строки имеют разные порядковые номера и одно и то же подтверждение, но это пакет от клиента к серверу, так какая сторона здесь выполняет повторную передачу?
В последних 3 строках и порядковые номера, и подтверждения совпадают, так как же узнать, какая сторона повторно передает пакет? Обратите внимание, что в этом примере 1.2.3.4 - это клиент, а 5.6.7.8 - сервер.
Это повторные передачи от клиента к серверу. Вот что происходит:
Мы знаем, что это повторные передачи от клиента, потому что все пакеты идут от клиента к серверу. Мы знаем, что это повторная передача, потому что порядковый номер один и тот же, т.е. он отправляет одни и те же данные снова и снова.