Alors, je viens de trouver le solution :
Ce qu'il se passe, c'est que j'utilise pyshark (qui lui utilise wireshark) pour récupérer les packets tcp, donc si j'ai un problème sur mon sniffeur python, il y a le même sur wireshark.
Je vais donc voir sur wireshark, et là je vois quelque fois :
![img]()
La structure de l'erreur est toujours la même, un packet potentiellement perdu, un out of ordre et ensuite tout va bien.
(Je passe les retransmission car c'est pas important)
La solution est simple, il suffit d'analyser les numéros de séquence et de len, on voit clairement que :
seq_pkt83 = 4973 = seq_pkt85 + len_pkt85
seq_pkt84 = 3513 = seq_pkt79 + len_pkt79
Puis que seq_pkt87 = 5005 = seq_pkt83 + len_pkt83
En gros on en déduit que l'ordre vrai est le suivant :
pkt 79 -> pkt 85 -> pkt 83 -> pkt 87
J'ai donc ajouté dans mon code une mise en mémoire du packet si le flag Previous segment not captured est présent, et ensuite ce packet est ajouté à la fin du packet suivant pour remettre le tout dans l'ordre.
J'ai testé avec tous les endroits où ce problème apparaît et ça fonctionne à 100% (et heureusement car sinon ça voudrait dire que les packets tcp c'est naze..)