Si je comprends bien, 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. Mais comment cela fonctionne sans entrer en conflit avec d’autres applications telles que les navigateurs Web? En fait, comment plusieurs navigateurs s’exécutent simultanément ne sont-ils pas en conflit? Est-ce qu’ils surveillent tous le port et sont avertis … pouvez-vous partager un port de cette manière?
J’ai l’impression que c’est une question idiote, mais ce n’est pas quelque chose auquel 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.
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 (supposons qu’il reçoive 33123 ) puis établit une connexion socket vers le port de destination (généralement 80 / HTTP , 443 / HTTPS ).
Lorsque le serveur Web reçoit la réponse, il envoie une réponse comportant 80 comme port source et 33123 comme port de destination.
Donc, si vous avez 2 navigateurs accédant simultanément à stackoverflow.com, vous avez 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 une au hasard. C’est le port source.
Le port 80 sert à servir le contenu HTTP (par le serveur, pas 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 reviennent à la bonne application.
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 simultanément plusieurs pages) utiliseront chacun le port de destination 80, mais le port local (qui est alloué par le S / S) est distinct dans chaque cas. Il n’y a donc pas de conflit.
Les clients choisissent généralement un port entre 1024 et 65535. Cela dépend du système d’exploitation. Je pense que les clients Windows incrémentent la valeur de chaque nouvelle connexion, les clients Unix sélectionnent un port non aléatoire.
Certains services reposent sur un port client statique tel que NTP (123 UDP)
Un navigateur est une application client que vous utilisez pour voir le contenu sur un serveur Web qui se trouve généralement sur un autre ordinateur . Le serveur Web est celui qui écoute sur le port 80, pas le navigateur sur le client.
Vous devez faire attention 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, l’utilisation d’autres ports pouvant entraîner 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.
Le port 80 dont vous parlez ici est le port distant du serveur, le navigateur local ouvre le port haut pour chaque connexion établie.
Chaque connexion a des numéros de port aux deux extrémités, l’un est appelé port local, un autre port distant.
Le pare-feu autorisera le trafic vers le port haut pour le navigateur, car il sait que la connexion a été établie à partir de votre ordinateur.