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 risque de causer des problèmes de pare-feu. Mais comment cela fonctionne-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 que j'ai jamais pensé avant, et dans d'autres cas J'ai vu des problèmes lorsque 2 applications sont configurées pour utiliser le même port.
7 réponses
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 33123) fait ensuite 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)
Les requêtes HTTP sortantes ne se produisent pas sur le port 80. Lorsqu'une application demande un socket, elle en reçoit généralement un au hasard. C'est le port Source.
Le Port 80 sert à servir le contenu HTTP (par le serveur, pas par le client). C'est le port de Destination.
Chaque navigateur utilise une Source différente pour générer des requêtes. De cette façon, les paquets le rendent à l'application correcte.
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. Par conséquent, il n'y a pas de conflit.
Les Clients choisissent généralement un port entre 1024 et 65535. Il dépend du système d'exploitation comment gérer cela. Je pense que les Clients Windows incrémentent la valeur pour chaque nouvelle connexion, les Clients Unix choisissent un port aléatoire Non.
Certains services reposent sur un port client statique comme NTP (123 UDP)
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 autre machine. Le serveur web est celui qui écoute sur le port 80, pas le navigateur du client.
Vous devez faire attention à faire la distinction entre "écoute sur le port 80" et "connexion au port 80".
Lorsque vous dites "les applications utilisent parfois HTTP pour envoyer des messages, car l'utilisation d'autres ports est susceptible de causer des problèmes de pare-feu", vous voulez dire "les applications envoient parfois des messages au port 80".
Le serveur écoute sur le port 80, et peut accepter plusieurs connexions sur ce port.
Port 80 dont vous parlez ici est le port distant sur le serveur, localement le navigateur ouvre le port élevé pour chaque connexion établie.
Chaque connexion a des numéros de port sur les deux extrémités , l'une est appelée port local, l'autre port distant.
Le pare-feu autorisera le trafic vers le port élevé pour le navigateur, car il sait que la connexion a été établie à partir de votre ordinateur.