Angenommen, zwei Hosts, A und B, versuchen beide, eine Verbindung miteinander herzustellen, aber die SYN von A gelangt zu B, bevor die SYN von B zu A gelangt.
Meine Antwort ist, dass A SYN ACK gesendet und die SYN von B ignoriert hat. Bin ich richtig?
networking
tcp
sockets
orange
quelle
quelle
Antworten:
Es würden zwei Verbindungen hergestellt. TCP ist in dieser Weise nicht zustandsbewusst - keine Verbindung hätte ein Konzept für die andere Verbindung.
Zum Beispiel:
Damit dies fortgesetzt werden kann, benötigen beide einen Überwachungsdienst auf Port 80, sodass jeder einen Überwachungsdienst auf TCP für Port 80 hat und dieser Dienst die SYN empfängt und mit einem SYN-ACK antwortet:
Denken Sie daran, dass diese Abhördienste auf entgegengesetzten Computern ausgeführt werden. Es ist nicht zu erkennen, dass der andere Computer ebenfalls eine SYN-Bestätigung erhalten hat. Sie sollten daher keine SYN-Bestätigung senden.
Wie das TCP-Protokoll vorschreibt, antwortet die Ursprungsseite, sobald sie die SYN-ACK empfängt, wie folgt:
Sie haben jetzt zwei unabhängige Verbindungen mit abgeschlossenen TCP-Handshakes. Wie in den Kommentaren von SvW erwähnt: Wenn dies eine schlechte Sache ist, muss die jeweilige Anwendung die Verbindungen initiieren, um festzustellen, ob dieser Zustand vorliegt, und um herauszufinden, welche Verbindung abgebrochen werden muss - dieser Teil ist nicht die Aufgabe von TCP.
quelle
Denken Sie daran, dass ein TCP-Socket ein Quadruplet srcHost: srcPort: dstHost: dstPort ist und dass ein Host einen bestimmten Port überwachen muss, damit eine Verbindung hergestellt werden kann.
Für die erste Verbindung lautet der Socket A: portA: B: portB (B hört auf portB):
Und für die zweite Verbindung A: portA ': B: portB' (A hört auf portA ')
quelle
Unter der Annahme, dass beide Hosts dasselbe Portpaar verwenden, wird eine Verbindung hergestellt. In der Praxis ist dies nicht der Fall, da Hosts beim Herstellen einer Verbindung einen zufälligen lokalen Port und einen bekannten Remote-Port verwenden, sodass nicht beide Hosts dasselbe Portpaar verwenden würden. Selbst wenn dies der Fall wäre, müsste das Timing genau richtig sein, damit sich die SYNs im Flug überholen. Wenn ein Host die SYN erhält, bevor er seine eigene sendet, antwortet er mit einer RST.
quelle