W przeglądarce internetowej obsługującej wiele kart, takiej jak Firefox, wykonaj różne karty, które przechodzą do różnych domen witryny, używając dedykowanego portu dla każdej domeny ?.
Czy też przeglądarka używa jednego portu do zarządzania wszystkimi kartami, a tym samym wszystkimi domenami ?.
networking
browser
port
tabs
yoyo_fun
źródło
źródło
Odpowiedzi:
Czy przeglądarki używają różnych portów do łączenia się z różnymi stronami internetowymi?
Tak, robią.
Oto przykład pokazujący moje obecne połączenia z Firefoksem (mam 9 otwartych kart) w systemie Windows 7:
Uwagi:
Widać, że porty lokalne są różne.
Zdalne porty to zwykle 80 (HTTP), 443 (HTTPS) lub 8080 (HTTP Alternate).
HTTP
na liście numerów portów TCP i UDP niektóre z nich.Pełny proces renderowania strony internetowej opisano poniżej. Zobacz w szczególności kroki 5, 6, 13 i 15 (pogrubione):
Ogólnie renderowanie pojedynczej strony internetowej wykorzystuje wiele połączeń, z których nie wszystkie będą miały ten sam zdalny adres.
Wynika to z faktu, że strony internetowe często zawierają zasoby hostowane gdzie indziej (pliki javascript itp.).
Wiele połączeń z tą samą witryną (np. Stackoverflow.com) ma również różne porty lokalne (ponieważ są to osobne połączenia na różnych kartach, które wyświetlają różne strony).
Renderowanie strony internetowej - krok po kroku
Uwaga:
Źródło Renderowanie strony internetowej - krok po kroku
źródło
Każde połączenie ze stroną internetową korzysta z innego gniazda z domyślnym docelowym portem TCP 80 dla zwykłego HTTP i 443 dla HTTPS. Aby gniazdo było unikalne, kombinacja źródłowego adresu IP, źródłowego portu TCP, docelowego adresu IP i docelowego portu TCP musi być inna.
Jeśli masz wiele połączeń z tą samą witryną (zakładając, że witryna używa tylko 1 adresu IP) z tego samego komputera, należy użyć innego źródłowego portu TCP. W ten sposób każde połączenie jest unikalne.
Należy jednak zauważyć, że od HTTP 1.1 wszystkie połączenia są trwałe przez określony czas (chyba że zadeklarowano inaczej). Oznacza to, że to samo połączenie może zostać ponownie wykorzystane przez przeglądarkę, jeśli zażądanych jest wiele zasobów z tej samej strony (np. Pliki css / js). Dotyczy to również sytuacji, gdy masz wiele wystąpień tej samej witryny w przeglądarce.
Jeśli korzystasz z systemu Windows,
netstat -no -p TCP
polecenie wyświetli wszystkie aktywne gniazda TCP i odpowiadające im identyfikatory procesów, w tym również przeglądarki:Jeśli korzystasz z systemu Unix / Linux (w tym przypadku Debian), możesz użyć polecenia
netstat -ntp
lubss -t
:źródło
netstat -n
powinien działać w większości systemów operacyjnych, w tym Linux i Mac OS.netstat -n -o
sprawdzić, który proces utworzył połączenie. Możesz też uruchomić tcpview SysInternal, aby zobaczyć listę w GUI, z nazwami procesów i ikonami.Jeśli chodzi o zakładki do różnych stron internetowych, w TCP nie ma nic, co wymagałoby innego portu lokalnego, o ile krotka {lokalny adres IP, lokalny port, docelowy adres IP, port docelowy} jest unikalny. W przypadku zakładek do tej samej strony sytuacja jest znacznie bardziej złożona.
Przeglądarka, podobnie jak każde inne oprogramowanie klienckie, używa innego portu lokalnego dla każdego połączenia wychodzącego z tym samym celem. Zasadniczo utworzy wiele połączeń z dowolną witryną, aby pobrać osadzone zasoby, takie jak obrazy, CSS, JavaScript itp. Będzie także łączyć te połączenia w celu ewentualnego ponownego wykorzystania.
Nie można powiedzieć, czy różne karty w tej samej witrynie będą używać odrębnych połączeń, ponieważ (a) i tak zwykle nie ma jednego połączenia na kartę, oraz (b) w zależności od czasu i uwierzytelnienia połączenia mogą być ponownie użyte między kartami; a ponieważ nie można zidentyfikować połączeń, nie można również zidentyfikować portów lokalnych.
źródło
Tak. Nie, może. To zależy.
Po pierwsze, przeglądarka może wykorzystywać dowolną z następujących strategii połączeń:
Nie masz możliwości poznania strategii, z której skorzysta przeglądarka, chociaż rozsądnym założeniem jest użycie puli połączeń (i ponowne użycie połączeń).
Po drugie, w jaki sposób działa TCP, masz port źródłowy i port docelowy dla każdego połączenia. Para źródłowego i docelowego adresu / portu określa połączenie.
Zawsze [1] używasz dobrze znanego portu (takiego jak 80 lub 443), aby połączyć się z serwerem (do którego nasłuchuje na jego reklamowanym adresie), ale drugi port jest wybierany losowo. Dlatego w zależności od tego, z której strony patrzysz na połączenie, ma ono jeden lub wiele możliwych portów.
Zatem ta sama karta może (i zwykle będzie) korzystać z kilku różnych portów na swoim końcu, ale w zasadzie różne karty mogą (jeśli połączenia są połączone w pulę i różne zasoby na różnych kartach są ładowane z tego samego serwera) korzystać z tego samego portu.
Ponieważ pytanie wyraźnie wspomina wychodzące , w „normalnym” przypadku numery portów byłyby takie same, niezależnie od tego, w której zakładce się znajdują, lub jednego z dwóch możliwych portów (80 i 443). Chociaż oczywiście można jawnie poprosić o inny port (np. 8080) w adresie URL. To trochę rzadkie.
[1] Cóż, nie zawsze ... ale nie komplikujmy tego zbytnio.
źródło