Sou tráfego de rede e desejo dividir cada sessão TCP em uma série de solicitações e respostas (os protocolos com os quais estou trabalhando funcionam dessa maneira, como HTTP ou SSL).
Eu tinha uma suposição simples (ignorando pacotes fora de ordem e reenviando) - dado um pedaço de dados que precisa ser enviado, eles serão enviados usando os maiores pacotes possíveis e o último pacote será menor que o tamanho máximo ou será seguido por um pacote do outro lado (ignorando pacotes vazios de ACK). Então, em uma sessão HTTP, espero ver algo como (novamente, desconsiderando o acks) -
Pacote 1 - Solicite "Obter ..."
Pacote 2 - Resposta, tamanho 1434
Pacote 3 - Resposta, tamanho 1434
Pacote 4 - Resposta, tamanho 1434
Pacote 5 - Resposta, tamanho 500
Qual é o que eu recebo na maioria das sessões, mas há pelo menos uma ocasião que eu vi que parecia
Pacote 1 - Solicite "Obter ..."
Pacote 2 - Resposta, tamanho 1434
Pacote 3 - resposta, tamanho 1080
Pacote 4 - Resposta, tamanho 1434
Pacote 5 - Resposta, tamanho 500
Sem retransmissões, pacotes com defeito aqui ou atrasos excepcionais no servidor.
Eu quero saber - o que pode causar isso e quando ocorrerá? Quão errada é minha suposição?
ATUALIZAR
Eu coloquei um exemplo de arquivo pcap aqui
ATUALIZAÇÃO 2
Incluindo um tshark
despejo com campos relevantes ...
$ 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