web-dev-qa-db-ger.com

Wie kann eine Anwendung Port 80 / HTTP verwenden, ohne mit Browsern in Konflikt zu geraten?

Wenn ich das richtig verstehe, verwenden Anwendungen manchmal HTTP, um Nachrichten zu senden, da die Verwendung anderer Ports zu Firewall-Problemen führen kann. Aber wie funktioniert das, ohne mit anderen Anwendungen wie Webbrowsern in Konflikt zu geraten? Wie können mehrere Browser, die gleichzeitig ausgeführt werden, Konflikte vermeiden? Überwachen alle den Port und werden benachrichtigt ... können Sie einen Port auf diese Weise freigeben?

Ich habe das Gefühl, dass dies eine blöde Frage ist, aber nicht etwas, woran ich jemals gedacht habe. In anderen Fällen habe ich Probleme gesehen, wenn 2 Apps für die Verwendung desselben Ports konfiguriert sind.

53
Mr. Boy

Es gibt 2 Ports: einen Quellport (Browser) und einen Zielport (Server). Der Browser fragt das Betriebssystem nach einem verfügbaren Quellport (sagen wir, er empfängt 12) und stellt dann eine Socket-Verbindung zum Zielport her (normalerweise 80/HTTP, 443/HTTPS).

Wenn der Webserver die Antwort empfängt, sendet er eine Antwort mit 80 als Quellport und 33123 als Zielport.

Wenn Sie also zwei Browser gleichzeitig auf stackoverflow.com zugreifen, haben Sie ungefähr Folgendes:

Firefox (localhost:33123) <-----------> stackoverflow.com (69.59.196.211:80)
Chrome  (localhost:33124) <-----------> stackoverflow.com (69.59.196.211:80)
75
Flavius Stef

Ausgehende HTTP-Anforderungen treten nicht an Port 80 auf. Wenn eine Anwendung einen Socket anfordert, erhält sie normalerweise einen zufälligen. Dies ist der Quellport.

Port 80 dient zum Bereitstellen von HTTP-Inhalten (vom Server, nicht vom Client). Dies ist der Zielport.

Jeder Browser verwendet eine andere Quelle, um Anforderungen zu generieren. Auf diese Weise gelangen die Pakete zurück zur richtigen Anwendung.

20
Justin Niessner

Es ist das 5-Tupel von (IP-Protokoll, lokale IP-Adresse, lokaler Port, entfernte IP-Adresse, entfernter Port), das eine Verbindung identifiziert. Mehrere Browser (oder tatsächlich ein einzelner Browser, der mehrere Seiten gleichzeitig lädt) verwenden jeweils den Zielport 80, aber der lokale Port (der vom Betriebssystem zugewiesen wird) ist in jedem Fall unterschiedlich. Daher gibt es keinen Konflikt.

7
jchl

Clients wählen normalerweise einen Port zwischen 1024 und 65535 aus. Die Vorgehensweise hängt vom Betriebssystem ab. Ich denke, Windows-Clients erhöhen den Wert für jede neue Verbindung, Unix-Clients wählen eine zufällige Port-Nr.

Einige Dienste basieren auf einem statischen Client-Port wie NTP (123 UDP)

5

Ein Browser ist eine Client-Anwendung, die Sie verwenden, um Inhalte auf einem Webserver anzuzeigen, der sich normalerweise auf einem anderen Computer befindet. Der Webserver ist derjenige, der Port 80 abhört, nicht der Browser auf dem Client.

4
ob1

Sie müssen vorsichtig sein, wenn Sie zwischen "Überwachen von Port 80" und "Verbinden mit Port 80" unterscheiden.

Wenn Sie sagen, dass "Anwendungen manchmal HTTP zum Senden von Nachrichten verwenden, da die Verwendung anderer Ports zu Firewall-Problemen führen kann", meinen Sie tatsächlich "Anwendungen senden manchmal Nachrichten an Port 80".

Der Server überwacht Port 80 und kann mehrere Verbindungen an diesem Port akzeptieren.

4
Konerak

Port 80, von dem Sie hier sprechen, ist der Remote- Port auf dem Server. Der lokale Browser öffnet den High-Port für jede hergestellte Verbindung.

Jede Verbindung hat Portnummern an beiden Enden, einer wird als lokaler Port bezeichnet, der andere als entfernter Port.

Die Firewall lässt den Datenverkehr für den Browser auf einen hohen Port zu, da sie weiß, dass von Ihrem Computer aus eine Verbindung hergestellt wurde.

2
vartec