14 votes

Que sont réellement les ports et les protocoles ?

J'entends les gens parler de ports et de protocoles (en relation avec les réseaux informatiques), et ils leur fournissent souvent des analogies (par exemple : "un port ressemble beaucoup à un port d'expédition, il envoie et reçoit des données comme un port d'expédition envoie et reçoit des marchandises d'autres ports") et des choses comme ça.

Je comprends ce que tout cela signifie, mais seulement à un niveau très artificiel. En gros, je sais ce qu'est un port et je comprends ce que sont les protocoles, mais qu'est-ce que c'est vraiment ?

Ces ports sont-ils des objets physiques ? Sont-ils intégrés à une partie de mon ordinateur ? Combien de ports y a-t-il ? Puis-je augmenter ou diminuer le nombre de ports ? Sont-ils même quelque chose de physique ? Ou sont-ils écrits dans un code ? Où se trouve ce code ? Dans le système d'exploitation ? Qu'est-ce qu'un port ?

Que sont les protocoles ? J'imagine que c'est une sorte de code. .... Peut-on créer son propre protocole ? Comment faire pour qu'un port spécifique exécute un protocole spécifique ? Quel langage utilisez-vous pour créer un protocole ? Comment définir ou inventer un nouveau protocole ?

11voto

Oliver Points 125

Pour aller plus loin dans la réponse de Hello71, il peut être utile de visualiser un port en pensant à la structure d'une adresse dans un paquet. Un paquet étant une unité de données transmise sur un réseau. TCP est un exemple de protocole de couche de transport qui utilise des ports, et est couramment utilisé sur IP.

Le protocole IP comporte donc deux éléments d'adressage : l'IP source et l'IP de destination. TCP ajoute à cela l'utilisation d'un port source et d'un port destination. Ce sont les ports qui permettent à la machine réceptrice de différencier le trafic destiné à la même adresse IP. Par exemple, si vous avez un serveur qui reçoit à la fois des demandes Web et des courriers électroniques sur une seule adresse IP, vous devez déterminer quelle application doit recevoir les données - le service de courrier électronique ou le service Web. Ainsi, si un seul utilisateur effectue une demande web et une demande de courrier électronique sur le même serveur, cela peut ressembler à ceci :

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 le port 25 - ils "écoutent" sur leurs ports respectifs, ce qui permet au trafic d'aboutir au bon endroit.

Le port source est "éphémère", c'est-à-dire qu'il est constitué au moment où le paquet est envoyé. Cependant, il sert toujours un objectif utile. Il permet aux deux extrémités de la connexion de garder la trace de conversations distinctes. Imaginons que notre utilisateur envoie deux requêtes 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 que le trafic de retour du serveur web - les pages web - est renvoyé vers les ports sources respectifs, ce qui permet au navigateur de savoir à quelle demande le serveur répond.

Notez que tout ceci se réfère à des numéros de port, d'un point de vue TCP/IP, les données réelles qui sont déplacées sur ces ports peuvent être n'importe quoi. Il ne se soucie pas des applications et n'en a pas conscience. Ainsi, si vous avez du trafic Web sur le port 25 et du courrier électronique sur le port 80, il n'en saura rien.

C'est à l'application émettrice et réceptrice de s'assurer que les données ont la bonne structure, et c'est là qu'interviennent les protocoles d'application. 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 permet au navigateur d'envoyer des requêtes à n'importe quel serveur web, qui les comprendra et y répondra de manière appropriée. Mais ce qu'il n'inclut pas dans sa définition, c'est la manière dont les paquets se rendent de A à B - c'est la responsabilité des couches précédentes - les couches transport, internet et liaison.

5voto

Richie086 Points 4872

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 l'OP.

Ces ports sont-ils des objets physiques ?

Non les ports ne sont pas des objets physiques.

Un numéro de port est un nombre entier non signé de 16 bits, ce qui signifie que la gamme des ports disponibles est comprise entre 1 et 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 appelé binding, et permet d'envoyer et de recevoir des données via le réseau.

Sont-ils intégrés dans une partie de mon ordinateur ? Sont-ils même quelque chose de physique ? Ou écrites dans un code ? Où se trouve ce code ? Le système d'exploitation ? Qu'est-ce qu'un port ?

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 sur le réseau, et de transférer les paquets réseau entrants à un processus en faisant correspondre l'adresse IP et le numéro de port du paquet.

Un seul processus peut se lier à une combinaison spécifique d'adresse IP et de port en utilisant le même protocole de transport. Les défaillances courantes des applications, parfois appelées 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 en utilisant le même protocole.

Le paragraphe ci-dessus est essentiel pour comprendre pourquoi les ports/protocoles sont utilisés dans les réseaux. Si nous ne disposions pas d'un 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 (consulter votre courrier électronique et utiliser le Web), car votre ordinateur n'aurait aucun moyen de faire la différence entre les données destinées à votre client de messagerie et celles destinées au site Web que vous consultez.

Combien de ports y a-t-il ?

Les numéros de port sont attribués de différentes manières, en fonction de trois plages :

  1. Ports 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).

  2. Ports enregistrés/utilisateurs (1024-49151) - La gamme 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 sur demande d'une entité requérante. (Webmin/10000, HTTP Proxy/8080, Remote Desktop Protocol/3389, etc.)

  3. Ports éphémères/dynamiques/privés (49152-65535) - La plage 49152-65535 contient des ports dynamiques ou privés qui no puede être enregistré auprès de l'IANA. Cette plage est utilisée à des fins personnalisées ou temporaires et pour l'attribution automatique de ports éphémères.

Puis-je augmenter ou diminuer le nombre de ports ?

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 aux réseaux de fonctionner (binaire) - la réponse à cette question est donc non, vous ne pouvez pas augmenter le nombre total de ports disponibles au-delà de 65535.

Que sont les protocoles ?

En informatique, un protocole de communication est un système de règles numériques pour l'échange de messages au sein d'un ordinateur ou entre ordinateurs. Lorsque des messages sont échangés via un réseau informatique, le système de règles est appelé protocole de réseau. Un protocole est essentiellement un ensemble convenu d'instructions, de commandes et d'appels sur lesquels deux dispositifs en réseau peuvent communiquer. Imaginez que nous n'ayons pas de protocoles convenus et que les serveurs Web envoient au hasard aux navigateurs Web des données dont ces derniers ne savent que faire ? Heureusement, nous disposons du protocole HTTP, que tous les navigateurs Web ont intégré dans leur logiciel afin de pouvoir communiquer avec n'importe quel serveur Web parlant le même langage (HTTP).

J'imagine qu'il s'agit d'une sorte de code..... Pouvez-vous créer votre propre protocole ? Quel langage utilisez-vous pour créer un protocole ?

Oui, vous pouvez créer vos propres protocoles. Les protocoles sont écrits dans une grande variété de langages. Je ne suis pas un développeur de logiciels, mais je suis à peu près sûr que tant que le langage que vous utilisez possède des bibliothèques qui vous permettent d'écrire des logiciels capables de communiquer via TCP/IP (il existe d'autres suites de protocoles, mais TCP/IP est le plus largement utilisé), vous pouvez utiliser ce langage pour écrire un protocole. Le langage de programmation "C" semble être le plus couramment utilisé pour écrire des protocoles. Cela s'explique par le fait qu'un grand nombre des premiers protocoles de réseau ont été développés sur UNIX dans les années 1970 et que le C est le langage dans lequel UNIX lui-même est écrit.

Comment faire pour qu'un port spécifique exécute un protocole spécifique ?

Cela diffère beaucoup d'un système d'exploitation à l'autre. Par exemple, pour modifier le numéro du port sur lequel s'exécute le protocole Remote Desktop sous Windows, vous devez modifier le registre. Sous Linux, la plupart des services réseau peuvent être configurés directement à partir d'un fichier .conf pour un service réseau particulier.

Comment définir ou inventer un nouveau protocole ?

Voir https://journal.paul.querna.org/articles/2012/02/22/designing-network-protocols/ pour un billet de blog de quelqu'un qui a récemment développé un nouveau protocole de mise en réseau et le genre de choses qu'il a dû faire en cours de route.

3voto

Hm. Je pense que le meilleur endroit pour commencer serait de regarder la suite IP, alias le modèle TCP/IP. (En ignorant les autres couches du modèle OSI pour des raisons de simplicité).

En fait, c'est une série de couches :

Couche d'application - HTTP, FTP, POP, SSH, etc.
Transport Layer - TCP, UDP, etc.
Internet Layer - IP, ICMP, etc.
Couche de liaison - Ethernet, etc.

Les ports sont, pour la plupart, mis en œuvre 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 consistant à attribuer des ports à des programmes et à déclencher simplement des événements dans ces programmes lorsque des paquets arrivent sur le réseau. Cependant, n'importe quelle implémentation pourrait théoriquement fonctionner ; il peut même y avoir des piles alternatives hypothétiques étudiées dans le milieu 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 des ports inférieurs à 1024, leur donnant 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 ces programmes essaient d'éviter les ports que d'autres programmes populaires ont déjà choisis.

Il est vrai qu'il n'est en aucun cas nécessaire d'utiliser le protocole TCP. Certains protocoles fonctionnent sur la couche Internet nue, ou même sur la couche de liaison nue, principalement pour des raisons d'efficacité, ou parce que ces protocoles ont été inventés avant même que TCP ou IP n'existent. Bien sûr, en faisant cela, vous renoncez à la simplicité et au contrôle approfondi des bogues des bibliothèques réseau des systèmes d'exploitation.

Pour plus de détails, consultez les pages Wikipedia sur le modèle OSI, TCP et IP.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X