Wie unterscheiden sich Internetverbindungen durch ein Betriebssystem?


0

Wie würde mein Betriebssystem in diesem Beispiel zwischen den einzelnen Anforderungen unterscheiden?

Nehmen wir an, ich habe 3 Registerkarten geöffnet, und genau zur gleichen Zeit wechseln sie alle zu http://google.com. Wie würde mein Betriebssystem die zurückkommenden Antwortdaten unterscheiden? Wäre nicht alles genau dasselbe? Im TCP-Header stimmen der Quell- und der Zielport mit der Quell- und der Ziel-IP-Adresse sowie dem Schema (http) überein.

Ich weiß, dass IP-Paket-Header einen ID-Header haben, aber dies ist nicht für die Fragmentierung gedacht, nicht für die physische Identifizierung eines Pakets. Außerdem sollten IP-Pakete verbindungslos korrekt sein?

In ICMP-Echoanforderungen haben beispielsweise die Echoanforderungen und -antworten IDs, um jedes Paket mit jeder Antwort abzugleichen. Wie würde das dann in meinem Szenario geschehen? Ich vermute, dass Daten im TCP-Paket zur Unterscheidung gesendet werden, bin mir aber nicht sicher.

Edit: Ich habe eine schlechte Annahme gemacht. Nur weil ein Paket an Port 80 gesendet wird, muss die Quelle nicht auch Port 80 sein. Wenn wir uns beispielsweise dieses NAT-Beispiel ansehen, sehen wir, dass dies nicht erfolgt ist. Dadurch kann das Quellensegment für jede Anforderung einen anderen Quellport haben.


Antworten:


2

Wenn ein Client-Programm (z. B. ein Browser) eine Verbindung zu einem Server herstellt, wird ein Socket geöffnet. Und (es sei denn, das Programm gibt eine an, was sehr selten ist), weist das Betriebssystem dem Socket eine eindeutige Portnummer zu. Dies liegt üblicherweise im Bereich von 1000-2000. Die Quell-IP ist natürlich die Adresse des Client-Hosts. Der Server bestimmt die Zielparameter. zB die IP-Adresse von google.com und 80.

Also hast du recht; Separate TCP-Verbindungen von demselben Client-Computer zu demselben Server-Port unterscheiden sich durch unterschiedliche Quellportnummern. Das hat nichts mit NAT zu tun.

Sie können dies sehen, wenn Sie die Ausgabe von untersuchen netstat.


-1

Dies ist einfacher, wenn Sie einige Ebenen nachschlagen. Ich erinnere mich nur an den Lebenszyklus einer HTTP-Anfrage:

  • Der Client-Browser initiiert eine Socket-Verbindung zum Webserver

  • Eine Anfrage bei http standard wird an den Server gesendet.

  • Der Server verarbeitet die Anfrage und sendet eine Antwort im HTTP-Standard an den Kunden zurück.

  • Der Client-Browser empfängt die Antwort.

  • Die Verbindung zum Server wird geschlossen.

  • Der Browser-Client interpretiert die Antwort und zeigt das Ergebnis auf dem Bildschirm an

Wenn der Browser eine Anfrage öffnet, wartet er auf eine Antwort. In Anbetracht des Keepalive- Charakters einer TCP / IP-Verbindung erfolgt diese Antwort über dieselbe Verbindung. Der Browser kann dann unterscheiden, welche Anforderung für diese Registerkarte bestimmt ist.

Der Browser öffnet mehrere Verbindungen gleichzeitig.


1
Wie beantwortet dies die Frage? Sie sagen: "Diese Antwort erfolgt über dieselbe Verbindung. Dann kann der Browser unterscheiden, welche Anforderung für diese Registerkarte bestimmt ist." Wie kann der Client den Datenverkehr für verschiedene Registerkarten (oder verschiedene Browser) unterscheiden? PS Die Unterscheidung wird nicht von den Browsern vorgenommen. Es wird vom Betriebssystem ausgeführt.
Scott

Wer über die Socket-Verbindung öffnet und schließt, ist der Browser. Das Betriebssystem bietet nur Möglichkeiten, dies über seine API zu tun. Seine Erklärung der Ports ist relevant, reagiert aber nicht darauf, wie sich ein Tab und ein anderes unterscheiden, schließlich ist es nicht das Betriebssystem, das diese Unterscheidung vornimmt. Er liefert nur einen Socket-Verbindungs-Handle an den Anforderer. Nicht einmal wissen, dass diese Verbindung im HTTP-Standard ist. Wer das macht ist der Browser. Und ja, Anfrage und Antwort erfolgen im selben Zusammenhang
João Luiz Grigoletti
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.