Warum stoßen TCPs Drei-Wege-Handshake die Sequenznummer bei der Akking?
Frage
Warum tut Der TCP-Drei-Wege-Handschlag Beenden Sie die Sequenznummer, wenn Sie während des anfänglichen Händedrucks anfangen? Wie ist das besser, als nur die Bestätigungsnummer gleich der Sequenznummer zu verlassen?
Die Verbindung wird mit hergestellt mit
Client sends SYN,A
Server responds with SYN-ACK,A+1,B
Client confirms with ACK,B+1
Wie ist das besser als
Client sends SYN,A
Server responds with SYN-ACK,A,B
Client confirms with ACK,B
Lösung
Das liegt daran, dass die ACK
Feld bedeutet dies, wenn die ACK
Flag ist eingestellt:
Bestätigungsnummer (32 Bit) - Wenn das ACK -Flag eingestellt ist, ist der Wert dieses Feldes die nächste Sequenznummer, die der Empfänger erwartet.
Wenn es nicht auf (Inital -Sequenzzahl+1) eingestellt ist, wäre es inkonsistent, dass beide die Ack'ing die SYN
(beide SYN
und ACK
Flags müssen in diesem Paket festgelegt werden) und sagen, dass es wieder erwartet wird, dass die Sequenznummer erneut (dh es nicht erhalten hat).