Я просматривал случайный трафик в wirehark и наткнулся на это (с использованием относительных чисел seq / ack):
1. myIP -> 74.125.227.96 [SYN] seq=0
2. 74.125.227.96 -> myIP [SYN/ACK] seq=0 ack=1
3. myIP -> 74.125.227.96 [ACK] seq=1 ack=1
4. myIP -> 74.125.227.96 [ACK] seq=1 ack=1 len=14600
5. 74.125.227.96 -> myIP [ACK] seq=1 ack=2921
6. 74.125.227.96 -> myIP [ACK] seq=1 ack=5841
7. myIP -> 74.125.227.96 [ACK] seq=14601 ack=1 len=8760
8. 74.125.227.96 -> myIP [ACK] seq=1 ack=8761
9. myIP -> 74.125.227.96 [ACK] seq=23361 ack=1 len=4380
etc...
Я использовал http://packetlife.net/blog/2010/jun/7/understanding-tcp-sequence-acknowledgment-numbers в качестве ресурса, и похоже, что seq = previous ack и ack + = previous seq + len / flags (пожалуйста, поправьте меня, если я ошибаюсь). Но что происходит в строках 4-7? Пакет фрагментирован или что-то в этом роде? Кажется, что числа seq / ack не складываются для меня, так что где я ошибаюсь?
При декодировании трассировок TCP следует помнить о нескольких вещах ...
Однако сами по себе эти точки не учитывают недостающие ACK для порядковых номеров 5841-14600 между пакетами 6 и 7. Мое лучшее предположение (и это все, что я действительно могу сделать на данный момент) заключается в том, что вы могли сбросить пакеты ACK где-то в между сетевой картой и wirehark. Вы можете сказать, когда это произойдет, если увидите подобные сообщения (из сеанса linux xterm или ssh) ...
19431 packets captured
38863 packets received by filter
572 packets dropped by kernel <----------------
7 packets dropped by interface <----------------
В Linux вы можете исправить эти падения, настроив буферы на сетевой карте и между ядром и libpcap.Примечание 1...
ethtool -G eth0 rx 768
sysctl -w net.core.netdev_max_backlog=30000
Если вы находитесь в Windows, это помогает предоставить wirehark больше буферного пространства (опция -B CLI), когда вы его вызываете ...
Примечание 1. YMMV, настройки буфера специфичны для вашей системы ... поиграйте с ними, пока не увидите сообщения о сброшенных пакетах.
Может фрагментация. Может быть, еще один сеанс с сервером. Порты эк? Wireshark может выбрать все пакеты в сеансе tcp из интерфейса (выбрав в меню rcm на пакете)