Verwenden in einem Webbrowser, der mehrere Registerkarten unterstützt, wie z. B. Firefox, verschiedene Registerkarten, die zu verschiedenen Website-Domänen gehören, für jede Domäne einen eigenen Port ?.
Oder verwendet der Browser einen einzigen Port für die Verwaltung aller Registerkarten und damit aller Domänen?
networking
browser
port
tabs
yoyo_fun
quelle
quelle
Antworten:
Verwenden Browser unterschiedliche Ports, um eine Verbindung zu unterschiedlichen Websites herzustellen?
Ja, das tun sie.
Hier ist ein Beispiel, das meine aktuellen Firefox-Verbindungen (ich habe 9 offene Tabs) unter Windows 7 zeigt:
Anmerkungen:
Sie können sehen, dass die lokalen Ports alle unterschiedlich sind.
Die Remote-Ports sind normalerweise 80 (HTTP), 443 (HTTPS) oder 8080 (HTTP Alternate).
HTTP
in der Liste der TCP- und UDP-Portnummern .Der vollständige Prozess zum Rendern einer Webseite wird nachfolgend beschrieben. Siehe insbesondere die Schritte 5, 6, 13 und 15 (fett gedruckt):
Im Allgemeinen werden für das Rendern einer einzelnen Webseite mehrere Verbindungen verwendet, von denen sich nicht alle auf dieselbe Remoteadresse beziehen.
Dies liegt daran, dass Webseiten häufig Ressourcen enthalten, die an anderer Stelle gehostet werden (Javascript-Dateien usw.).
Mehrere Verbindungen zu derselben Website (z. B. stackoverflow.com) weisen auch unterschiedliche lokale Ports auf (da es sich um separate Verbindungen in verschiedenen Registerkarten handelt, die unterschiedliche Seiten darstellen).
Eine Webseite rendern - Schritt für Schritt
Hinweis:
Quelle Eine Webseite rendern - Schritt für Schritt
quelle
Jede Verbindung zu einer Website verwendet einen anderen Socket mit dem Standardziel-TCP-Port 80 für einfaches HTTP und 443 für HTTPS. Damit der Socket eindeutig ist, muss die Kombination aus Quell-IP-Adresse, Quell-TCP-Port, Ziel-IP-Adresse und Ziel-TCP-Port unterschiedlich sein.
Wenn Sie mehrere Verbindungen zu derselben Website haben (vorausgesetzt, die Website verwendet nur 1 IP-Adresse), muss ein anderer Quell-TCP-Port verwendet werden. Auf diese Weise ist jede Verbindung einzigartig.
Es ist jedoch zu beachten, dass ab HTTP 1.1 alle Verbindungen für einen bestimmten Zeitraum bestehen bleiben (sofern nicht anders angegeben). Dies bedeutet, dass dieselbe Verbindung von Ihrem Browser wieder verwendet werden kann, wenn mehrere Ressourcen von derselben Website angefordert werden (z. B. CSS / JS-Dateien). Dies gilt auch, wenn Sie mehrere Instanzen derselben Website in Ihrem Browser haben.
Unter Windows zeigt der
netstat -no -p TCP
Befehl alle aktiven TCP-Sockets und ihre entsprechende Prozess-ID an, einschließlich der Ihres Browsers:Wenn Sie unter Unix / Linux (in diesem Fall Debian) arbeiten, können Sie den Befehl
netstat -ntp
oder verwendenss -t
:quelle
netstat -n
sollte er unter den meisten Betriebssystemen funktionieren, einschließlich Linux und Mac OS.netstat -n -o
sehen, welcher Prozess welche Verbindung hergestellt hat. Oder Sie können SysInternals tcpview ausführen , um die Liste in einer GUI mit Prozessnamen und -symbolen und allem zu sehen.In Bezug auf Tabs zu verschiedenen Websites gibt es in TCP nichts, was einen anderen lokalen Port erfordert, solange das Tupel {lokale IP, lokaler Port, Ziel-IP, Ziel-Port} eindeutig ist. Bei Tabs auf derselben Website ist die Situation viel komplexer.
Der Browser verwendet wie jede andere Client-Software einen anderen lokalen Port für jede ausgehende Verbindung zum gleichen Ziel. Im Allgemeinen werden mehrere Verbindungen zu einer bestimmten Website hergestellt, um eingebettete Ressourcen wie Bilder, CSS, JavaScript usw. abzurufen. Außerdem werden diese Verbindungen für eine mögliche Wiederverwendung zusammengefasst.
Es ist nicht möglich zu sagen, ob verschiedene Tabs auf derselben Website unterschiedliche Verbindungen verwenden, da (a) in der Regel ohnehin keine einzige Verbindung pro Tab vorhanden ist und (b) je nach Zeitpunkt und Authentifizierung möglicherweise Verbindungen bestehen zwischen Tabs wiederverwendet; und da es nicht möglich ist, die Verbindungen zu identifizieren, ist es auch nicht möglich, die lokalen Ports zu identifizieren.
quelle
Ja. Nein, vielleicht. Es hängt davon ab, ob.
Erstens kann ein Browser eine der folgenden Strategien für Verbindungen verwenden:
Sie haben keine Möglichkeit zu wissen, welche Strategie ein Browser verwendet, obwohl die Verwendung eines Pools von Verbindungen (und die Wiederverwendung von Verbindungen) eine vernünftige Annahme ist.
Zweitens haben Sie, wie TCP funktioniert, für jede Verbindung einen Quell- und einen Zielport. Das Paar aus Quell- und Zieladresse / Port definiert die Verbindung.
Sie verwenden immer [1] einen bekannten Port (z. B. 80 oder 443), um eine Verbindung zum Server herzustellen (auf den er die angegebene Adresse hört), der andere Port wird jedoch zufällig ausgewählt. Abhängig davon, von welcher Seite Sie eine Verbindung betrachten, verfügt sie über einen oder mehrere mögliche Ports.
So das gleiche kann Register (und in der Regel) mehr verschiedenen Ports an seinem Ende verwenden, aber grundsätzlich verschiedene Registerkarten könnte (wenn Verbindungen zusammengefasst werden und verschiedene Ressourcen in verschiedenen Tabs aus dem gleichen Server geladen) verwendet den gleichen Anschluss.
Da in der Frage ausdrücklich auf ausgehende Verbindungen hingewiesen wird, stimmen die Portnummern im "normalen" Fall unabhängig davon, auf welcher Registerkarte sie sich befinden, oder mit einem von zwei möglichen Ports (80 und 443) überein. Obwohl es natürlich möglich ist, explizit nach einem anderen Port (wie 8080) in einer URL zu fragen. Das ist allerdings eher selten.
[1] Nun, nicht immer ... aber machen wir es nicht zu kompliziert.
quelle