3 votes

Comment deux numéros de port peuvent-ils fonctionner en même temps ?

Maintenant, je suis super confus avec la façon dont les ports fonctionnent réellement, Voici ce que je comprends des ports. Je sais que le port 80 est pour le protocole HTTP et le port 443 est pour le protocole HTTPS, donc chaque fois que j'accède à http://website.com [(name or ip)] il est converti en http://website.com:80 [(name or ip)] et lorsque j'accède à https://website.com [(name or ip)] il est converti en https://website.com:443 [(name or ip)] .

Donc, si j'accède à un site web sur un autre port, c'est-à-dire que j'ai ma configuration locale de springboot ou angular app, et qu'ils sont des points de terminaison HTTP, et que j'accède à http://localhost:someportNumber (exemple : http://localhost:5000 ), comment cela est-il traduit en port, car j'ai explicitement spécifié le port 5000, mais HTTP fonctionne sur le port 80.

Pouvez-vous s'il vous plaît m'aider à comprendre le fonctionnement des ports. Jusqu'à présent, j'étais clair sur la façon dont les ports fonctionnent, mais maintenant, quand je pense à ce sujet aujourd'hui, il remet en question ma compréhension des ports.

J'ai rencontré ce conflit de compréhension lorsque je me suis familiarisé avec les services du moteur Kubernetes de Google. J'y ai créé un service de type nodeport, dont les configurations étaient les suivantes

port: 443
targetPort: 443
nodePort: 31000

et lorsque j'accède à l'adresse IP externe d'un des nœuds https://[external-ip]:31000 ça a marché.

J'ai donc commencé à remettre en question ma compréhension et je n'arrive pas à comprendre comment cela fonctionne.

PS:- Il ne s'agit pas du concept de NodePort/ClusterIP/LoadBalancer. Mais en général sur la façon dont ces ports fonctionnent avec le port de protocole http ou https, avec un port d'application.

4voto

paddy Points 26183

Vous pouvez spécifier n'importe quel port (comme 5000 dans votre exemple). L'URI commence simplement par http pour indiquer ce que protocole est utilisé - il n'impose pas l'utilisation du port 80. Le site adresse est ensuite utilisé pour contacter l'hôte sur le port spécifié (qui sera le port 80 sauf si un port différent a été spécifié). Une fois la connexion réussie, le client s'attend alors à ce que le serveur parle HTTP.

Du côté du serveur, il y a juste un programme qui écoute sur un port, attendant les connexions entrantes.

3voto

Kolban Points 2587

Autrefois, on n'appelait pas directement une personne dans une entreprise. Au lieu de cela, on appelait le standard principal de l'entreprise et on demandait la personne à un certain poste.

Opérateur : Comment puis-je vous aider ? Vous : Poste 123 Opérateur : Je vous connecte maintenant

Pensez à un "port" comme à un poste de travail dans une entreprise. Le nom d'hôte/l'adresse IP est le numéro de téléphone de la société, le port est le poste de cette société.

Pour revenir à l'analogie, une fois que vous êtes connecté au poste téléphonique, vous avez une conversation. Les deux parties s'attendent à ce que la conversation ait lieu. Par exemple, si j'appelle le poste correspondant aux ventes, je peux passer une commande, tandis que si j'appelle le poste correspondant au recrutement, je peux soumettre mon CV. Cette relation entre l'objet de l'appel et le poste est établie par convention et n'est pas implicite dans le poste lui-même.

Lorsque vous établissez une connexion sur Internet avec une machine au port 80, vous partez du principe que vous allez échanger du trafic HTTP. Cependant, si j'établis une connexion avec une machine au port 5000, rien n'empêche CETTE connexion d'envoyer et de recevoir également du trafic HTTP. Par exemple, si le service commercial de mon entreprise peut être contacté sur le poste 80 et que vous pouvez passer une commande, il peut également exister un poste supplémentaire (5000) que vous pouvez appeler pour passer d'autres types de commandes qui ne sont pas disponibles sur le poste 80.

Voir aussi :

http://www.steves-internet-guide.com/tcpip-ports-sockets/

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X