Les applications réseaux fonctionnent sur le modèle client/serveur. Sur la machine serveur un processus serveur (daemon) traite les requêtes des clients. Client et serveur dialoguent en échangeant des messages qui contiennent des requêtes et des réponses.
Prenons par exemple telnet.
Une fois le datagramme transmis à l'hôte destinataire, il doit parvenir à l'utilisateur (si le système est multi-utilisateur) et à l'application visée (si le système est multi-tâches).
sur la machine cliente, l'utilisateur (usager ou programme) effectue une requête vers une machine IP serveur sur le réseau. (par exemple telnet host ou ftp host ). Cela se traduit par la réservation d'un port de sortie TCP ou UDP et l'envoi d'un paquet IP à la machine serveur. Ce paquet contient un message TCP ou UDP avec un numéro de port correspondant à l'application demandée sur le serveur.
sur le serveur, la requête est réceptionnée par le pilote IP, aiguillée vers TCP ou UDP puis vers le port demandé. Le processus serveur correspondant est à l'écoute des appels sur ce port (par ex: le daemon telnetd traite les requêtes telnet, le daemon ftpd traite les requêtes ftp).
processus client et processus serveur échangent ensuite des messages.
Des numéros de port (entre 0 et 1023) sont réservés pour les applications « standards : les ports « bien connus » (Well Known Ports), ils ont été assignés par l'IANA. Sur la plupart des systèmes ils peuvent être seulement employés par des processus du système (ou root) ou par des programmes exécutés par les utilisateurs privilégiés (liste complète : http://www.iana.org/assignments/port-numbers ou dans le fichier /etc/services y compris sous Windows).
D'autres numéros de port sont disponibles pour les applications développées par les utilisateurs (1024 à 65535).
On identifie le protocole de communication entre applications par un numéro de protocole etl'application par un numéro de port.
Par exemple, les serveurs HTTP dialoguent de manière traditionnelle par le port 80 :
http ://www.sncf.com/index.htm <=> http :// www.sncf.com:80/index.htm
Les numéros de protocole et de port sont inclus dans le datagramme.
Une fois la connexion établie entre le client et le serveur, ceux-ci peuvent s'échanger des informations selon un protocole défini selon l'applicatif. Le client soumet des requêtes auxquelles répondra le serveur.
Ce mode de communication s'appuie sur la couche "socket". Cette couche est une interface entre la couche présentation et transport. Elle permet la mise en place du canal de communication entre le client et le serveur. On peut schématiquement dire qu'un socket fournit un ensemble de fonctions. Ces fonctions permettent à une application client/serveur d'établir un canal de communication entre 2 ou plusieurs machines, qui utilisent un protocole de transport (TCP ou UDP) et un port de communication.
Service réseau | N° de Port | Type | Commentaire |
ICMP | 7 | TCP/UDP | Commandes Ping |
Netstat | 15 | TCP/UDP | Etat du réseau |
FTP | 21 | TCP | Transfert de fichiers |
SSH | 22 | TCP/UDP | SSH Remote Login Protocol |
Telnet | 23 | TCP | Connexion via terminal réseau |
SMTP | 25 | TCP | Envoi de courrier |
DNS | 53 | TCP/UDP | Serveurs de noms de domaine |
HTTP | 80 | TCP | Serveur Web |
Pop3 | 110 | TCP | Réception de courrier |
nntp | 119 | TCP | Service de news |
ntp | 123 | UDP | Protocole temps réseau |
nbname | 137 | TCP/UDP | Service de Nom Netbios |
netbios-ssn | 139 | TCP/UDP | Service de Session Netbios |
imap | 143 | TCP/UDP | Protocole d'accès messagerie Internet |
SNMP | 161 | UDP | Administration de réseau |