Avant la réponse de Hello71, il pourrait être utile de visualiser un port en réfléchissant à la structure d'une adresse dans un paquet. Un paquet étant une unité de données transmise autour d'un réseau. TCP est un exemple de protocole de couche transport qui utilise des ports et est couramment utilisé sur IP.
L'IP a donc deux composants d'adressage - l'IP source et l'IP de destination. TCP ajoute à cela en utilisant un port source et un port de destination. Ce sont les ports qui permettent à la machine de réception de différencier le trafic destiné à la même adresse IP - c'est-à-dire, si vous avez un serveur qui reçoit à la fois les requêtes Web et les e-mails sur une seule adresse IP, vous devez déterminer quelle application doit recevoir les données. - le service de messagerie ou le service Web. Ils peuvent donc ressembler à ceci si un seul utilisateur devait effectuer une demande Web et une demande par courrier électronique sur le même serveur:
Source IP Source Port Dest IP Dest Port Service
10.1.1.10 23434 192.168.1.1 80 web
10.1.1.10 34343 192.168.1.1 25 incoming email
Le service Web possède le port 80 et le service de messagerie possède le port 25 - ils "écoutent" sur leurs ports respectifs, ce qui permet au trafic de se retrouver au bon endroit.
Le port source est "éphémère" - en ce sens qu'il est constitué au moment de l'envoi du paquet. Cependant, il sert toujours un but utile. Il permet aux deux extrémités de la connexion de garder une trace des conversations distinctes. Considérez si notre utilisateur a envoyé deux demandes Web simultanées:
Source IP Source Port Dest IP Dest Port Service
10.1.1.10 23232 192.168.1.1 80 web request 1
10.1.1.10 23234 192.168.1.1 80 web request 2
Cela permet au service Web de savoir qu'il s'agit de demandes distinctes, mais aussi, le trafic de retour du serveur Web - les pages Web - est renvoyé aux ports source respectifs, ce qui permet au navigateur de savoir à quelle demande le serveur répond.
Notez que tout cela fait référence aux numéros de port, d'un point de vue TCP / IP, les données réelles déplacées sur ces ports pourraient être n'importe quoi. Il ne se soucie pas ou n'a aucune connaissance des applications, donc si vous aviez du trafic Web sur le port 25 et des e-mails sur le port 80, ce ne serait pas plus sage.
Il appartient à l'application d'envoi et de réception de s'assurer que les données sont la bonne structure, et c'est là que les protocoles d'application entrent en jeu. HTTP est un exemple de protocole d'application que les navigateurs Web utilisent pour communiquer avec les serveurs Web. Il s'agit d'un protocole bien défini qui garantit que le navigateur enverra des demandes à n'importe quel serveur Web et que le serveur Web comprendra et répondra de manière sensée. Mais ce qu'il n'inclut pas dans sa définition, c'est la façon dont les paquets passent de A à B - c'est la responsabilité des couches précédentes - les couches de transport, Internet et de liaison.
Hm. Je pense que le meilleur endroit pour commencer serait de regarder la suite IP, alias le modèle TCP / IP. (Ignorer les autres couches du modèle OSI à des fins de simplicité.)
Fondamentalement, c'est une série de couches:
Couche d'application - HTTP, FTP, POP, SSH, etc.
Couche de transport - TCP, UDP, etc.
Couche Internet - IP, ICMP, etc.
Couche de liaison - Ethernet, etc.
Les ports sont, pour la plupart, implémentés au niveau de la couche transport (couche 4 - Oui, la numérotation est correcte.)
La majorité des piles TCP et / ou UDP implémentées dans les systèmes d'exploitation utilisent un système de base pour attribuer des ports aux programmes et simplement déclencher des événements dans ces programmes à mesure que les paquets arrivent sur le réseau. Cependant, toute mise en œuvre pourrait théoriquement fonctionner; il peut même y avoir des piles alternatives hypothétiques réfléchies dans le monde universitaire.
TCP a été défini comme ayant un total de 65535 ports, que tout programme peut utiliser pour faire ce qu'il veut (bien que de nombreux systèmes d'exploitation limitent l'utilisation de ports inférieurs à 1024, ce qui leur confère un statut spécial ad hoc). Bien qu'il existe quelques listes limitées, il n'y a pas de véritable norme pour définir qui obtient quel port et quel port exécute quel programme. Un port est donc plus ou moins un nombre aléatoire sur lequel différentes implémentations d'un programme décident de se mettre d'accord pour communiquer. Bien sûr, les concepteurs de tels programmes essaient d'éviter les ports que d'autres programmes populaires ont déjà choisis.
Certes, il n'est en aucun cas nécessaire pour exécuter en utilisant TCP. Certains protocoles s'exécutent sur la couche Internet nue, ou même sur la couche de liaison nue, principalement à des fins d'efficacité, ou parce que ces protocoles ont été inventés avant même l'existence de TCP ou IP. Bien sûr, ce faisant, vous échangez la simplicité et la vérification approfondie des bogues des bibliothèques de mise en réseau du système d'exploitation.
Pour plus de détails, consultez les pages Wikipedia sur le modèle OSI, TCP et IP.
la source
Bien que cette question ait déjà été marquée comme ayant reçu une réponse, je voulais répondre à certaines des questions supplémentaires posées dans le PO.
Aucun port n'est pas un objet physique.
Un numéro de port est un entier non signé de 16 bits, ce qui signifie que la plage de ports disponibles pour une utilisation va de 1 à 65535 (le numéro de port 0 est réservé et ne peut pas être utilisé). Un processus associe ses canaux d'entrée ou de sortie via des sockets Internet, un type de descripteur de fichier, à un protocole de transport, un numéro de port et une adresse IP. Ce processus est connu sous le nom de liaison et permet d'envoyer et de recevoir des données via le réseau.
Le logiciel de mise en réseau du système d'exploitation a pour tâche de transmettre les données sortantes de tous les ports d'application au réseau et de transmettre les paquets réseau arrivant à un processus en faisant correspondre l'adresse IP et le numéro de port du paquet.
Un seul processus peut se lier à une combinaison d'adresses IP et de ports spécifiques à l'aide du même protocole de transport. Les échecs d'application courants, parfois appelés conflits de port, se produisent lorsque plusieurs programmes tentent de se lier aux mêmes numéros de port sur la même adresse IP à l'aide du même protocole.
Le paragraphe ci-dessus est essentiel pour comprendre pourquoi les ports / protocoles sont utilisés en réseau. Si nous n'avions pas de moyen de spécifier le protocole, qui transmet les données sur un numéro de port convenu - vous ne seriez pas en mesure de faire plus d'une chose à la fois (vérifiez votre courrier électronique et utilisez le Web) car votre ordinateur aurait aucun moyen de faire la différence entre les données de votre client de messagerie et les données du site Web que vous consultez.
Les numéros de port sont attribués de différentes manières, en fonction de trois plages:
Ports bien connus / système (0-1023) - Cette gamme de ports est utilisée par les processus système qui fournissent des types de services réseau largement utilisés (HTTP / 80, HTTPS / 443, Telnet / 21, SSH / 22)
Ports enregistrés / utilisateurs (1024-49151) - La plage de numéros de port de 1024 à 49151 sont les ports enregistrés. Ils sont attribués par l'IANA pour un service spécifique à la demande d'une entité requérante. (Webmin / 10000, proxy HTTP / 8080, protocole de bureau à distance / 3389, etc.)
Ports éphémères / dynamiques / privés (49152-65535) - La plage 49152–65535 contient des ports dynamiques ou privés qui ne peuvent pas être enregistrés auprès de l'IANA. Cette gamme est utilisée à des fins personnalisées ou temporaires et pour l'allocation automatique de ports éphémères.
En ce qui concerne la possibilité d'augmenter le nombre de ports disponibles, vous ne pouvez pas attribuer un port supérieur à 65535 en raison des mathématiques qui permettent au réseau de fonctionner (binaire) - donc la réponse à cette question est non, vous ne pouvez pas augmenter le nombre total de ports disponibles ports au-dessus de 65535.
En informatique, un protocole de communication est un système de règles numériques pour l'échange de messages à l'intérieur ou entre des ordinateurs. Lorsque des messages sont échangés via un réseau informatique, le système de règles est appelé protocole réseau. Un protocole est essentiellement un ensemble convenu d'instructions / commandes / appels sur lequel deux appareils en réseau peuvent communiquer. Vous pensez que si nous n'avions pas convenu de protocoles et de serveurs Web, nous avons simplement envoyé des données de manière aléatoire à des navigateurs Web dont le navigateur ne savait pas quoi faire? Heureusement, nous avons HTTP et que chaque navigateur Web créé a intégré au logiciel afin qu'il puisse communiquer avec n'importe quel serveur Web qui parle également la même langue (HTTP).
Oui, vous pouvez créer vos propres protocoles. Les protocoles sont écrits dans une grande variété de langues. Je ne suis pas développeur de logiciels, mais je suis à peu près sûr que tant que la langue que vous utilisez possède des bibliothèques qui vous permettent d'écrire des logiciels qui peuvent communiquer via TCP / IP (il existe d'autres suites de protocoles, mais TCP / IP est le plus largement utilisé), vous pouvez utiliser cette langue pour écrire un protocole. Le langage de programmation «C» semble être le plus couramment utilisé pour écrire des protocoles. Cela est dû au fait que bon nombre des premiers protocoles réseau ont été développés sur UNIX dans les années 1970 et C se trouve être le langage dans lequel UNIX lui-même est écrit.
Cela diffère un peu entre les systèmes d'exploitation. Par exemple, pour modifier le numéro de port sur lequel s'exécute le protocole Bureau à distance sous Windows, vous devez modifier le registre. Sous Linux, de nombreux services réseau peuvent être configurés directement à partir d'un fichier .conf pour un service réseau particulier.
Voir https://journal.paul.querna.org/articles/2012/02/22/designing-network-protocols/ pour un article de blog par quelqu'un qui a récemment développé un nouveau protocole de mise en réseau et quel genre de choses il devait faire le long du chemin.
la source