Question du numéro de séquence TCP
C'est plus une question théorique qu'un problème réel que j'ai.
Si je comprends bien, le numéro de séquence dans L'en-tête TCP d'un paquet est l'index du premier octet du paquet dans l'ensemble du flux, correct? Si tel est le cas, puisque le numéro de séquence est un entier 32 bits non signé, alors que se passe-t-il après le transfert de plus de ffffffff = 4294967295 octets? Le numéro de séquence s'enroulera-t-il ou l'expéditeur enverra-t-il un paquet SYN pour redémarrer à 0?
3 réponses
Le numéro de séquence revient à 0. Source:
Numéros de séquence TCP et réception windows se comportent très bien comme une horloge. La fenêtre de réception se déplace à chaque fois le destinataire reçoit et accuse réception un nouveau segment de données. Une fois qu'il s'exécute de numéros de séquence, la séquence le nombre revient à 0.
Voir Aussi le chapitre 4 de RFC 1323.
Il s'enroule. RFC 793:
Il est essentiel de se rappeler que l'espace réel des numéros de séquence est fini, bien que très grand. Cet espace varie de 0 à 2**32 - 1. Puisque l'espace est fini, toute l'arithmétique traitant des numéros de séquence doit être effectuée modulo 2 * * 32. Cette arithmétique non signée préserve la relation des numéros de séquence lors de leur cycle à partir de 2**32 - 1 à 0 encore. Il y a quelques subtilités à l'arithmétique Modulo de l'ordinateur, donc un grand soin devrait être pris dans la programmation la comparaison de ces valeurs. Le symbole "=
Lire la suite: http://www.faqs.org/rfcs/rfc793.html#ixzz0lcD37K7J
Le numéro de séquence n'est pas en fait "l'index du premier octet dans le paquet dans le flux entier" puisque les numéros de séquence commencent délibérément à une valeur aléatoire (ceci est pour arrêter une forme d'attaque connue sous le nom D'attaque de prédiction de Séquence TCP).
Aucun SYN n'est requis, le numéro de séquence revient simplement à zéro une fois qu'il atteint la limite.