web-dev-qa-db-fra.com

comment une application peut-elle utiliser le port 80 / HTTP sans entrer en conflit avec les navigateurs?

Si je comprends bien, les applications utilisent parfois HTTP pour envoyer des messages, car l'utilisation d'autres ports est susceptible de provoquer des problèmes de pare-feu. Mais comment cela fonctionne-t-il sans entrer en conflit avec d'autres applications telles que les navigateurs Web? En fait, comment plusieurs navigateurs fonctionnant à la fois ne sont-ils pas en conflit? Est-ce qu'ils surveillent tous le port et sont informés ... pouvez-vous partager un port de cette façon?

J'ai le sentiment que c'est une question stupide, mais pas quelque chose à laquelle j'ai déjà pensé auparavant, et dans d'autres cas, j'ai vu des problèmes lorsque 2 applications sont configurées pour utiliser le même port.

53
Mr. Boy

Il y a 2 ports: un port source (navigateur) et un port de destination (serveur). Le navigateur demande au système d'exploitation un port source disponible (disons qu'il reçoit 12) puis établit une connexion socket au port de destination (généralement 80/HTTP, 443/HTTPS).

Lorsque le serveur Web reçoit la réponse, il envoie une réponse qui a 80 comme port source et 33123 comme port de destination.

Donc, si vous avez 2 navigateurs accédant simultanément à stackoverflow.com, vous auriez quelque chose comme ceci:

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

Les requêtes HTTP sortantes ne se produisent pas sur le port 80. Lorsqu'une application demande une socket, elle en reçoit généralement une au hasard. Il s'agit du port source.

Le port 80 sert à servir du contenu HTTP (par le serveur, pas le client). Il s'agit du port de destination.

Chaque navigateur utilise une source différente pour générer des demandes. De cette façon, les paquets reviennent à la bonne application.

20
Justin Niessner

C'est le 5-Tuple de (protocole IP, adresse IP locale, port local, adresse IP distante, port distant) qui identifie une connexion. Plusieurs navigateurs (ou en fait un seul navigateur chargeant plusieurs pages simultanément) utiliseront chacun le port de destination 80, mais le port local (qui est alloué par l'O/S) est distinct dans chaque cas. Il n'y a donc pas de conflit.

7
jchl

Les clients choisissent généralement un port entre 1024 et 65535. Cela dépend du système d'exploitation pour gérer cela. Je pense que les clients Windows incrémentent la valeur pour chaque nouvelle connexion, les clients Unix choisissent un numéro de port aléatoire.

Certains services reposent sur un port client statique comme NTP (123 UDP)

5

Un navigateur est une application cliente que vous utilisez pour voir le contenu sur un serveur Web qui se trouve généralement sur une machine différente. Le serveur Web est celui qui écoute sur le port 80, pas le navigateur sur le client.

4
ob1

Vous devez être prudent en faisant la distinction entre "écouter sur le port 80" et "se connecter au port 80".

Lorsque vous dites "les applications utilisent parfois HTTP pour envoyer des messages, car l'utilisation d'autres ports est susceptible de provoquer des problèmes de pare-feu", vous voulez dire en fait "les applications envoient parfois des messages au port 80".

Le serveur écoute sur le port 80 et peut accepter plusieurs connexions sur ce port.

4
Konerak

Le port 80 dont vous parlez ici est le port distant sur le serveur, le navigateur ouvre localement le port haut pour chaque connexion établie.

Chaque connexion a des numéros de port sur les deux extrémités, l'un est appelé port local, l'autre port distant.

Le pare-feu autorise le trafic vers un port élevé pour le navigateur, car il sait que la connexion a été établie depuis votre ordinateur.

2
vartec