TCP

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

TCP
Hallo,

ich habe mal eine Frage zum Verbindungsabbau von TCP.

Auf der Folie 132 zum Verbindungsabbau steht bei der dritten Nachricht SQN = server_sqn + 1. Aber in der Nachricht davor waren weder Daten noch ein SYN oder FIN Flag gesetzt. Außerdem ist es hier anders beschrieben:

http://www.tcp-ip-info.de/tcp-ip-schulung/tsld109.htm

Hier wird die server_sqn (hier einfach 300) nach der zweiten Nachricht nicht erhöht.

Was ist nun richtig?

Danke!
MfG Phil


Ich denke mal, dass sich einfach in der Folie ein Fehler eingeschlichen hat.

In der dritten Nachricht ist das FIN-Flag gesetzt und die SQN = server_sqn+1.
Darauf antwortet der Client mit ACK = server_sqn+1. Aber das ACK ist doch das naechste erwartete Byte und bei FIN und SYN wird das doch auch erhoeht.

Also waere es entweder in der vierten Nachricht ACK=server_sqn+2 oder (was ich wahrscheinlicher finde) in der dritten Nachricht SQN=server_sqn.

Was meint ihr?


Hmm, kann es sein, daß ihr die alten Folien verwendet?
Auf “meinem” Bild sehe ich:

→ FIN-F=1, SQN=ClientSQN
← ACK-F=1, ACK=ClientSQN, SQN=ServerSQN
(hier könnte der Server noch Daten senden)
← FIN-F=1, SQN=ServerSQN+1
→ ACK-F=1, ACK=ServerSQN+1, SQN=ClientSQN+1

ich denk mal, daß macht schon Sinn so… auch wenn es die SQN “vielleicht” nicht nötig wären…
Oder ich hab die Frage falsch verstanden :wink:


[edit]
Jetzt hab ich geschnallt, was daß Problem ist :red:
Da es kein “nächstes erwartetes Byte” gibt handelt es sich wohl einfach um einen “Speziallfall”, der so spezifiziert ist… anders ausgedrückt, ACK und SQN beziehen sich ja auf die “Payload”… da es aber keine gibt (geben darf), werden die Datenfelder halt einfach anders benutzt, auch wenn es u.U. redundant ist…
Andere Meinungen? :wink:
[/edit]


Im Skript steht ja:

Client: FIN=1 SQN=client_sqn
//client_sqn+1 wird als ack erwartet wegen dem Satz oben
Server: ACK=1 SQN=server_sqn ACK=client_sqn+1
Server: FIN=1 SQN=server_sqn
//server_sqn+1 wird als ack erwartet wegen dem Satz oben
Client: ACK=1 SQN=client_sqn+1 SQN=server_sqn+1

Die ACKs transportieren ja keine Daten, daher erhöht sich die Sequenznummer der jeweiligen Seite auch nicht