UDP est l'acronyme de ``User Datagram Protocol'', il est défini dans la RFC 768 [Postel 1980]. Les données encapsulées dans un en-tête UDP sont des ``paquets UDP''.
Rappel : Au niveau de la couche Internet les datagrammes sont routés d'une machine à une autre en fonction des bits de l'adresse IP qui identifient le numéro de réseau. Lors de cette opération aucune distinction n'est faite entre les services ou les utilisateurs qui émettent ou recoivent des datagrammes, ie tous les datagrammes sont mélangés.
La couche UDP ajoute un mécanisme qui permet l'identification du service (niveau Application). En effet, il est indispensable de faire un tri entre les divers applications (services) : plusieurs programmes de plusieurs utilisateurs peuvent utiliser simultanément la même couche de transport et il ne doit pas y avoir de confusion entre eux.
Pour le système Unix les programmes sont identifiés de manière unique par un numéro de processus, mais ce numéro est éphémère, non prévisible à distance, il ne peut servir à cette fonction.
L'idée est d'associer la destination à la fonction qu'elle remplie. Cette identification se fait à l'aide d'un entier positif que l'on baptise port.
Pour communiquer avec un service distant il faut donc avoir connaissance de son numéro de port, en plus de l'adresse IP de la machine elle-même.
cm
On peut prévoir le numéro de port en fonction du service à atteindre, c'est l'objet du paragraphe 1.3.
cm
La figure VI.01 explicite la notion de port. La couche IP sépare les datagrammes SCTP, TCP et UDP grâce au champ PROTOVI1 de son en-tête, l'association du protocole de transport et du numéro de port identifie un service sans ambiguïté.
cm
Conceptuellement on s'apperçoit alors que rien ne s'oppose à ce qu'un même service (Numéro de port) soit attribué conjointement aux trois protocoles (en pointillés sur la figure). Cette situation est d'ailleurs courante dans la réalité des serveurs.
Un paquet UDP est conçu pour être encapsulé dans un datagramme
IP et permettre un échange de données entre deux applications, sans
échange préliminaire. Ainsi, si les données à transmettre n'obligent pas
IP
`a fragmenter (cf page
), un paquet
UDP génère un datagramme IP et c'est tout !
cm
figure VI.02 -- UDP encapsulé dans IP
Plus particulièrement, les paquets à destination d'une
application UDP sont conservés dans une pile de type FIFO. Si
l'application destinatrice ne les ``consomme'' pas assez
rapidement, les plus anciens paquets risquent d'être écrasés par
les plus récents...Un risque supplémentaire (par rapport aux
propriétés d'IP déjà connues) de perte de données.
C'est au niveau applicatif qu'il convient de prendre
en compte cette lacune.
Parmis les utilisations les plus courantes d'UDP on peut signaler le serveur de nomsVI2, base de données répartie au niveau mondial, et qui s'accomode très bien de ce mode de transport.
En local d'autres applications très utiles comme tftp ou nfs sont également susceptibles d'employer UDP.
La figure VI.03 décrit la structure de l'en-tête.
cm
figure VI.03 -- Structure de l'en-tête UDP
Ce pseudo en-tête est prévu initialement pour apporter une
protection en cas de datagrammes mal routés !
cm
figure VI.04 -- Cas du checksum non nul
1.3 Ports réservés -- ports disponibles
Le numéro de port est un entier 16 bits non signé, les bornes sont donc [0,65535], par construction. Nous avons vu précédement que le port 0 n'est pas exploitable en tant que désignation de service valide, donc le segment réellement exploitable est [1,65535].
Toute machine qui utilise la pile TCP/IP se doit de connaître un certain nombre de services bien connus, repérés par une série de ports bien connus ou ``well known port numbers'', pour pouvoir dialoguer avec les autres machines de l'Internet (vs Intranet). Sur une machine Unix, cette liste de services est placée dans le fichier /etc/services et lisible par tous les utilisateurs et toutes les applications.
En effet, comme nous l'examinerons en détail dans le cours de programmation, un service (comprendre un programme au niveau applicatif) qui démarre son activité réseau (et qui donc est considéré comme ayant un rôle de serveur) s'attribue le (les) numéro(s) de port qui lui revient (reviennent) conformément à cette table.
| Nom | Port | Proto | Commentaire |
| echo | 7 | tcp | |
| echo | 7 | udp | |
| ftp-data | 20 | tcp | #File Transfer [Default Data] |
| ftp-data | 20 | udp | #File Transfer [Default Data] |
| ftp | 21 | tcp | #File Transfer [Control] |
| ftp | 21 | udp | #File Transfer [Control] |
| ssh | 22 | tcp | #Secure Shell Login |
| ssh | 22 | udp | #Secure Shell Login |
| smtp | 25 | tcp | mail #Simple Mail Transfer |
| smtp | 25 | udp | mail #Simple Mail Transfer |
| domain | 53 | tcp | #Domain Name Server |
| domain | 53 | udp | #Domain Name Server |
| http | 80 | tcp | www www-http #World Wide Web HTTP |
| http | 80 | udp | www www-http #World Wide Web HTTP |
| pop3 | 110 | tcp | #Post Office Protocol - Version 3 |
| pop3 | 110 | udp | #Post Office Protocol - Version 3 |
| imap | 143 | tcp | #Interim Mail Access Protocol |
| imap | 143 | udp | #Interim Mail Access Protocol |
| https | 443 | tcp | #Secure World Wide Web HTTP |
| https | 443 | udp | #Secure World Wide Web HTTP |
Le tableau de la figure VI.05 présente quelques uns des ports bien connus plus connus les plus utilisés, il y en a quantité d'autres...
Une autorité, l'IANAVI3, centralise et diffuse l'information relative à tous les nombres utilisés sur l'Internet via une RFC. La dernière en date est la RFC 1700, elle fait plus de 200 pages !
Par voie de conséquence cette RFC concerne aussi les numéros de ports.
1.3.1 Attribution des ports ``ancienne méthode''
Historiquement les ports de 1 à 255 sont réservés aux services bien connus, plus récemment, ce segment à été élargi à [1,1023]. Aucune application ne peut s'attribuer durablement et au niveau de l'Internet un numéro de port dans ce segment, sans en référrer à l'IANA, qui en contrôle l'usage.
À partir de 1024 et jusqu'à 65535, l'IANA se contente d'enregistrer les demandes d'usage et signale les éventuels conflits.
1.3.2 Attribution des ports ``nouvelle méthode''
Devant l'explosion du nombre des services enregistrés l'IANA a modifié la segmentationVI4qui précède. Désormais les numéros de ports sont classés selon les trois catégories suivantes :
Les services bien connus sont désignés par l'IANA et
sont mis en
Ils sont énumérés par l'IANA et peuvent être employés
par des processus ayant des droits ordinaires.
Par exemple :
uvre par des applications qui s'exécutent
avec des droits privilégiés (root sur une machine
Unix)
Nom
Port
Proto
Commentaire
bpcd
13782
tcp
VERITAS NetBackup
bpcd
13782
udp
VERITAS NetBackup
Pour en savoir plus :
Sans oublier :
Next: VII Protocole TCP
Up: A Introduction à la
Previous: V Protocole IP
Contents
Index
François Laissus
2009-02-27