2009-06-24 11 views
8

Von was ich verstehe, jede HTTP-Anfrage verwendet eine eigene TCP-Verbindung (bitte korrigieren Sie mich, wenn ich falsch liege). Nehmen wir also an, dass es zwei aktuelle Verbindungen zu demselben Server gibt. Zum Beispiel, clientseitiger Javascript-Code, der einige der AJAX POST-Anfragen auslöst, indem er das XMLHttpRequest-Objekt nacheinander benutzt, bevor die Antwort auf die erste kommt. Es handelt sich also um zwei Verbindungen zum selben Server, die jeweils auf eine Antwort warten, um sie an jede einzelne Callback-Funktion weiterzuleiten.Wie werden verschiedene TCP-Verbindungen in HTTP-Anfragen identifiziert?

Jetzt ist die Sache, die ich nicht verstehe: Das TCP-Paket enthält Quell-und Ziel-IP und Port, aber haben nicht beide dieser Verbindungen die gleichen Src und Ziel IP-Adressen und Port 80? Wie können die Pakete differenziert und entsprechend weitergeleitet werden? Hat es etwas mit der Paketfolgenummer zu tun, die für jede Verbindung unterschiedlich ist?

Antwort

9

Wenn Ihr Browser eine neue Verbindung zum HTTP-Server erstellt, verwendet er einen anderen Quellport.

Angenommen, Ihr Browser erstellt zwei Verbindungen zu einem Server und Ihre IP-Adresse lautet 60.12.34.56. Die erste Verbindung kann vom Quellport 6und die zweite von 60127 stammen. Diese ist in den TCP-Header jedes an den Server gesendeten Pakets eingebettet. Wenn der Server auf jede Verbindung antwortet, verwendet er den geeigneten Port (z. B. 6oder 60127), so dass das Paket es an den richtigen Ort zurückbringt.

Eine der besten Möglichkeiten, darüber zu lernen, ist Wireshark herunterladen und beobachten Sie einfach Verkehr in Ihrem eigenen Netzwerk. Es wird Ihnen dies und noch viel mehr zeigen.

Darüber hinaus gibt dies einen Einblick, wie Network Address Translation (NAT) auf einem Router funktioniert. Sie können festlegen, dass viele Computer dieselbe IP-Adresse verwenden, und der Router schreibt die Anforderung so um, dass ein anderer Port verwendet wird, sodass zwei Computer gleichzeitig Verbindungen zu Orten wie AOL Instant Messenger herstellen können.

2

Sie unterscheiden sich durch den Quellport.

Der Hauptgrund für jede HTTP-Anfrage, keine separate TCP-Verbindung zu erzeugen, heißt übrigens .

0

Ein Socket in der Paketnetzwerkkommunikation wird als Kombination von 4 Elementen betrachtet: Server-IP, Server-Port, Client-IP, Client-Port. Der zweite wird normalerweise in einem Protokoll festgelegt, z. http hören normalerweise in Port 80, aber der Client-Port ist eine zufällige Zahl in der Regel im Bereich 1024-65535. Dies liegt daran, dass das Betriebssystem diese Ports für bekannte Serverprotokolle verwenden könnte (z. B. 21 für FTP, 22 für SSH usw.). Dasselbe Netzwerkgerät kann nicht denselben Client-Port verwenden, um zwei verschiedene Verbindungen auch zu verschiedenen Servern zu öffnen, und wenn zwei verschiedene Clients denselben Port verwenden, kann der Server sie anhand ihrer IP-Adressen unterscheiden. Wenn ein Port in einem System verwendet wird, um entweder auf die Verbindung zu warten oder eine Verbindung herzustellen, kann er nicht für andere Zwecke verwendet werden. Auf diese Weise kann das Betriebssystem Pakete an den korrekten Prozess senden, sobald es von der Netzwerkkarte empfangen wurde.

Verwandte Themen