Я є мережевим трафіком і хочу поділити кожен сеанс TCP на ряд запитів і відповідей (протоколи, з якими я працюю, усі вони працюють таким чином, як HTTP або SSL).
У мене було просте припущення (ігнорування пакетів, що не вийшли з ладу і обурені пакетами) - з огляду на шматок даних, який потрібно надіслати, він буде надісланий за допомогою найбільших можливих пакетів, а останній пакет буде або меншим за максимальний розмір, або буде дотримуватися пакетом з іншого боку (ігноруючи порожні пакети ACK). Тож на сесії HTTP я очікую, що я побачу щось на зразок (знову ж таки, нехтування акками) -
Пакет 1 - Запит "Отримати ..."
Пакет 2 - Відповідь, розмір 1434
Пакет 3 - Відповідь, розмір 1434
Пакет 4 - Відповідь, розмір 1434
Пакет 5 - Відповідь, розмір 500
Це те, що я отримую на більшості сесій, проте я побачив принаймні один випадок, який виглядав так
Пакет 1 - Запит "Отримати ..."
Пакет 2 - Відповідь, розмір 1434
Пакет 3 - Відповідь, розмір 1080
Пакет 4 - Відповідь, розмір 1434
Пакет 5 - Відповідь, розмір 500
Ніяких повторних передач, пакетів поза замовленням тут або відсутні виняткові затримки на сервері.
Хочу знати - що може спричинити це і коли це станеться? Наскільки неправильне моє припущення?
ОНОВЛЕННЯ
Я поклав файл приклад PCAP тут
ОНОВЛЕННЯ 2
Включаючи tshark
дамп із відповідними полями ...
$ tshark -r http_1082.pcap -T fields -e frame.number -e frame.len \
-e ip.src -e ip.dst -e tcp.flags.push -e http.request.method \
-e http.request.uri -e http.response.code | head -n 47
1 66 192.168.1.103 206.33.49.126 0
2 62 206.33.49.126 192.168.1.103 0
3 64 192.168.1.103 206.33.49.126 0
4 411 192.168.1.103 206.33.49.126 1 GET /money/.element/script/3.0/video/xmp/xmp_playlistapi.js
5 54 206.33.49.126 192.168.1.103 0
6 1434 206.33.49.126 192.168.1.103 0
7 1434 206.33.49.126 192.168.1.103 0
8 64 192.168.1.103 206.33.49.126 0
9 1434 206.33.49.126 192.168.1.103 0
10 1434 206.33.49.126 192.168.1.103 0
11 1434 206.33.49.126 192.168.1.103 0
12 64 192.168.1.103 206.33.49.126 0
13 1434 206.33.49.126 192.168.1.103 0
14 1434 206.33.49.126 192.168.1.103 0
15 1434 206.33.49.126 192.168.1.103 0
16 1434 206.33.49.126 192.168.1.103 0
17 64 192.168.1.103 206.33.49.126 0
18 1434 206.33.49.126 192.168.1.103 0
19 1434 206.33.49.126 192.168.1.103 0
20 1434 206.33.49.126 192.168.1.103 0
21 1434 206.33.49.126 192.168.1.103 0
22 1434 206.33.49.126 192.168.1.103 0
23 64 192.168.1.103 206.33.49.126 0
24 1434 206.33.49.126 192.168.1.103 0
25 1434 206.33.49.126 192.168.1.103 0
26 1434 206.33.49.126 192.168.1.103 0
27 1434 206.33.49.126 192.168.1.103 0
28 1434 206.33.49.126 192.168.1.103 0
29 1434 206.33.49.126 192.168.1.103 0
30 64 192.168.1.103 206.33.49.126 0
31 1434 206.33.49.126 192.168.1.103 0
32 1434 206.33.49.126 192.168.1.103 0
33 1434 206.33.49.126 192.168.1.103 0
34 1082 206.33.49.126 192.168.1.103 1 <------ Packet in question
35 1434 206.33.49.126 192.168.1.103 0
36 1434 206.33.49.126 192.168.1.103 0
37 1434 206.33.49.126 192.168.1.103 0
38 64 192.168.1.103 206.33.49.126 0
39 1434 206.33.49.126 192.168.1.103 0
40 1434 206.33.49.126 192.168.1.103 0
41 1434 206.33.49.126 192.168.1.103 0
42 1434 206.33.49.126 192.168.1.103 0
43 1434 206.33.49.126 192.168.1.103 0
44 1434 206.33.49.126 192.168.1.103 0
45 1434 206.33.49.126 192.168.1.103 0
46 626 206.33.49.126 192.168.1.103 1 200
47 64 192.168.1.103 206.33.49.126 0