bonjour à tous,
Je me présnte brièvement : je suis l'unique développeur d'une TPE d'éléctronique.
Suite à un problème de connexion chez un client, je me suis lancé à analyser les trames TCP avec wireshark afin de trouver une piste de debug et suis tombé sur une retransmission curieuse :
// partie connection OK :
PC -> serveur : [SYN], Seq = 0, Length = 0
serveur -> PC : [SYN,ACK], Seq = 0, Ack = 1, Length = 0
PC -> serveur : [ACK], Seq = 1, ,Ack = 1, Length = 0
// puis debut de communication : retransmission dès le premier envoi de données
PC -> serveur : [PSH,ACK], Seq = 1, Ack = 1, Len = 37
// là, le serveur n'acquite pas (au bout de 3 secondes), alors le PC retransmet le segment mais avec plus de données !!!! :
PC -> serveur : (TCP retransmission) : [PSH,ACK], Seq = 1, Ack = 1, Len = 48
// POURQUOI ? EST-CE NORMAL ? EST-CE MA FAUTE ? QUELS SONT MES MOYENS D'ACTION SUR CE COMPORTEMENT ?
// enfin, le serveur aquite mais c'est trop tard pour le logiciel (time out à 1 seconde) :
serveur -> PC : (TCP Acked unseen segment) : [PSH,ACK] Seq = 1, Ack = 49, Len = 200
Un peu plus d'infos sur le contexte :
- le serveur est une alimentation de labo que nous produisons et vendons (société d'électronique), le fait qu'il n'acquite pas est donc un bug de notre côté mais ma question porte uniquement sur le pourquoi de la retransmission d'un segment contenant plus de données que celui d'origine.
- le code de notre logiciel est en C++ et utilise winsock 2.0 (le PC client est sous windows XP)
- le réseau se limite au châssis que nous vendons connecté directement à la carte réseau du PC.
- les données supplémentaires du segment retransmis sont issus de notre soft (mais pas mal de lignes plus tard) :
segment initial : "syst:verb0;syst:cpu?;syst:vers?" (commandes SCPI)
segment retransmis : "syst:verb0;syst:cpu?;syst:vers?syst:err ?"
merci d'avance à ceux qui auront le courage de me lire...
Partager