Zastanawiałem się, ponieważ numer sekwencyjny w polu nagłówka TCP jest losowo wybierany podczas uzgadniania i jest stopniowo zwiększany w miarę wymiany pakietów, co dzieje się po 2 ^ 32 - initial_seq_no transmisjach? Czy numer sekwencyjny zawija się i staje się 0, czy też wartość początkowa jest ponownie wykorzystywana (czy też inicjowane jest nowe połączenie od miejsca, w którym poprzednie zostało zatrzymane)?
źródło
Czy numer kolejny zawija się i staje 0?
Tak. Wszystkie szczegóły można znaleźć w specyfikacji TCP RFC 793 - Protokół kontroli transmisji .
Numery sekwencji
Źródło RFC 793 - Protokół kontroli transmisji
źródło
x
iy
są typem,uint32_t
warto zdefiniować,x<=y
aby to oznaczało(uint32_t)(y-x) < 0x80000000
.Tak, to się zawija. Możesz go przeczytać na Wikipedii lub na RFC1323 , który pokazuje, jak zabezpieczyć się przed zapakowanymi numerami sekwencji.
Pozwól mi zacytować:
I:
źródło