# Port (logiciel)

Dans la suite des protocoles Internet et correspondant à la couche de transport du modèle OSI, la notion de port logiciel permet, sur un ordinateur donné, de distinguer différents interlocuteurs. Ces interlocuteurs sont des programmes informatiques qui, selon les cas, écoutent ou émettent des informations sur ces ports. Un port est distingué par son numéro.
Le terme port est aussi parfois utilisé pour désigner les sockets (interfaces de connexion), un concept sensiblement différent. Là où un socket sert d'identifiant unique dans un réseau donné résultant de la concaténation de l'adresse internet et du numéro de port, un port sert localement à identifier un processus.

## Origine du mot

Port, en informatique, est un emprunt intégral du terme anglais port (en). En anglais, ce terme informatique provient du latin porta (> porte), qui peut se traduire alors en français par sabord, et non pas du latin portus (> port).

## Explication métaphorique

Pour simplifier, on peut considérer les ports comme des portes donnant accès au système d'exploitation : (Microsoft Windows, Mac OS, GNU/Linux, Solaris…). Pour fonctionner, un programme (par exemple un jeu à accélération 3D/2D, ou un logiciel de retouche photo) ouvre des portes pour entrer dans le système d'exploitation, mais lorsque l'on quitte le programme, la porte n'a plus besoin d'être ouverte.

## Utilité

Grâce à cette abstraction, on peut exécuter plusieurs logiciels serveurs sur une même machine, et même simultanément des logiciels clients et des serveurs, ce qui est fréquent sur les systèmes d'exploitation multitâches et multiutilisateurs.

## Attribution des ports

Un numéro de port est codé sur 16 bits, ce qui fait qu'il existe un maximum de $2^{16}$, soit 65 536 ports distincts par machine. Ces ports sont classés en 3 catégories en fonction de leur numéro:
* les numéros de port de 0 à 1 023 correspondent aux ports "bien connus" (well-known ports), utilisés pour les services réseaux les plus courants,
* les numéros de ports de 1 024 à 49 151 correspondent aux ports enregistrés (registered ports), assignés par l'IANA ,
* les numéros de ports de 49 152 à 65 535 correspondent aux ports dynamiques, utilisables pour tout type de requêtes TCP ou UDP autres que celles citées précédemment.
Lorsqu'un logiciel client veut dialoguer avec un logiciel serveur, aussi appelé service, il a besoin de connaître le port écouté par ce dernier. Les ports utilisés par les services devant être connus par les clients, les principaux types de services utilisent des ports qui sont dits réservés. Par convention, ce sont tous ceux compris entre 0 et 1 023 inclus et leur utilisation par un logiciel serveur nécessite souvent que celui-ci s'exécute avec des droits d'accès particuliers. Les services utilisant ces ports sont appelés les services bien connus ("Well-Known Services").
Le fichier services indique la liste de ces services dits well-known. Sous UNIX, ce fichier est directement dans /etc ; sous Windows, ce fichier est par défaut dans C:\Windows\System32\drivers\etc. Les services les plus utilisés sont :
* 9, pour le WoL, Wake-on-LAN, c'est-à-dire le démarrage à distance par un câble réseau ethernet,
* 20/21, pour l'échange de fichiers via FTP,
* 22, pour l'accès à un shell sécurisé Secure SHell, également utilisé pour l'échange de fichiers sécurisés SFTP,
* 23, pour le port telnet,
* 25, pour l'envoi d'un courrier électronique via un serveur dédié SMTP,
* 53, pour la résolution de noms de domaine en adresses IP : DNS,
* 67/68, pour DHCP et BOOTP,
* 69, pour le TFTP,
* 80, pour la consultation d'un serveur HTTP par le biais d'un navigateur web,
* 110, pour la récupération de son courrier électronique via POP,
* 123, pour la synchronisation de l'horloge : Network Time Protocol (NTP),
* 143, pour la récupération de son courrier électronique via IMAP,
* 389, pour la connexion à un LDAP,
* 443, pour les connexions HTTP utilisant une surcouche de sécurité de type SSL : HTTPS,
* 465, pour l'envoi d'un courrier électronique via un serveur dédié utilisant une surcouche de sécurité de type SSL : SMTPS,
* 500, port utilisé pour le canal d'échange de clés IPsec,
* 554, port utilisé pour accepter les connexions client RTSP entrantes et pour fournir des paquets de données aux clients qui diffusent en utilisant RTSPT,
* 636, pour l'utilisation d'une connexion à un LDAP sécurisé par une couche SSL/TLS,
* 1352, pour le protocole Lotus Notes Domino,
* 1433, serveur de base de données MS SQL,
* 1521, serveur de base de données Oracle Database ,
* 1723, pour l'utilisation du protocole de VPN PPTP,
* 3306, serveur de base de données MySQL,
* 3389, pour la prise de contrôle à distance RDP,
* 5432, serveur de base de données PostgreSQL,
* 6667, pour la connexion aux serveurs IRC,
* 7777, port souvent utilisé pour des serveurs de jeux-vidéo tels que Terraria ou Unreal Tournament,
* 25565, port par défaut des serveurs Minecraft$^,$$^,$.
Toutefois, les conventions ci-dessus peuvent ne pas être respectées pourvu que le client et le serveur soient cohérents entre eux et que le nouveau numéro choisi ne soit pas déjà utilisé par ailleurs (on peut ainsi activer différentes versions d'un même service sur des numéros de ports différents, pour des tests). La plupart des logiciels de communication permettent d'effectuer ce réglage.