recherche

 

Pile TCP/IP : Caractéristiques des principaux protocoles

 

Le protocole IP (rfc 791)

Le protocole IP fait partie de la couche Internet de la suite de protocoles TCP/IP. C'est un des protocoles les plus importants d'Internet car il permet l'élaboration et le transport des datagrammes IP (les paquets de données), sans toutefois en assurer la "livraison". En réalité le protocole IP traite les datagrammes (paquets) IP indépendamment les uns des autres en définissant leur représentation, leur routage et leur expédition.

Le protocole IP détermine le destinataire du message grâce à 3 champs:

  • Le champ adresse IP : adresse de la machine
  • Le champ masque de sous-réseau : un masque de sous-réseau permet au protocole IP de déterminer la partie de l'adresse IP qui concerne le réseau
  • Le champ passerelle par défaut : Permet au protocole Internet de savoir à quelle machine remettre le datagramme si jamais la machine de destination n'est pas sur le réseau local

Les datagrammes

 

Les données circulent sur Internet sous forme de datagrammes (on parle aussi de paquets). Les datagrammes sont des données encapsulées, c'est-à-dire des données auxquelles on a ajouté des en-têtes correspondant à des informations sur leur transport (telles que l'adresse IP de destination, ...).

Les données contenues dans les datagrammes sont analysées (et éventuellement modifiées) par les routeurs permettant leur transit.

 

Le format des données sous IP

 

Signification des différents champs:

·   Version (4 bits) : il s'agit de la version du protocole IP que l'on utilise (actuellement on utilise la version 4 IPv4) afin de vérifier la validité du datagramme. Elle est codée sur 4 bits.

·   Longueur d'en-tête, ou IHL pour Internet Header Length (4 bits) : il s'agit du nombre de mots de 32 bits constituant l'en-tête (nota : la valeur minimale est 5). Ce champ est codé sur 4 bits.

·   Type de service (8 bits) : il indique la façon selon laquelle le datagramme doit être traité.

·   Longueur totale (16 bits): il indique la taille totale du datagramme en octets. La taille de ce champ étant de 2 octets, la taille totale du datagramme ne peut dépasser 65536 octets. Utilisé conjointement avec la taille de l'en-tête, ce champ permet de déterminer où sont situées les données.

·   Identification, drapeaux (flags) et déplacement de fragment sont des champs qui permettent la fragmentation des datagrammes, ils sont expliqués plus bas.

·   Durée de vie appelée aussi TTL, pour Time To Live (8 bits) : ce champ indique le nombre maximal de routeurs à travers lesquels le datagramme peut passer. Ainsi ce champ est décrémenté à chaque passage dans un routeur, lorsque celui-ci atteint la valeur critique de 0, le routeur détruit le datagramme. Cela évite l'encombrement du réseau par les datagrammes perdus.

·   Protocole (8 bits) : ce champ, en notation décimale, permet de savoir de quel protocole est issu le datagramme

o  ICMP : 1

o  IGMP : 2

o  TCP : 6

o  UDP : 17

·   Somme de contrôle de l'en-tête, ou en anglais header checksum (16 bits) : ce champ contient une valeur codée sur 16 bits qui permet de contrôler l'intégrité de l'en-tête afin de déterminer si celui-ci n'a pas été altéré pendant la transmission. La somme de contrôle est le complément à un de tous les mots de 16 bits de l'en-tête (champ somme de contrôle exclu). Celle-ci est en fait telle que lorsque l'on fait la somme des champs de l'en-tête (somme de contrôle incluse), on obtient un nombre avec tous les bits positionnés à 1

·   Adresse IP source (32 bits) : Ce champ représente l'adresse IP de la machine émettrice, il permet au destinataire de répondre

·   Adresse IP destination (32 bits) : adresse IP du destinataire du message

La fragmentation des datagrammes IP

Comme nous l'avons vu précédemment, la taille d'un datagramme maximale est de 65535 octets. Toutefois cette valeur n'est jamais atteinte car les réseaux n'ont pas une capacité suffisante pour envoyer de si gros paquets. De plus, les réseaux sur Internet utilisent différentes technologies, si bien que la taille maximale d'un datagramme varie suivant le type de réseau.
La taille maximale d'une trame est appelée MTU (Maximum Transfer Unit), elle entraînera la fragmentation du datagramme si celui-ci a une taille plus importante que le MTU du réseau.

 

Type de réseau

MTU (en octets)

Arpanet

1000

Ethernet

1500

FDDI

4470

 

La fragmentation d'un datagramme se fait au niveau des routeurs, c'est-à-dire lors de la transition d'un réseau dont le MTU est important à un réseau dont le MTU est plus faible. Si le datagramme est trop grand pour passer sur le réseau, le routeur va le fragmenter, c'est-à-dire le découper en fragments de tailles inférieures au MTU du réseau et de telle façon que la taille du fragment soit un multiple de 8 octets.

Pour tenir compte de la fragmentation, chaque datagramme possède plusieurs champs permettant leur réassemblage:

  • champ déplacement de fragment (13 bits) : champ permettant de connaître la position du début du fragment dans le datagramme initial. L'unité de mesure de ce champ est de 8 octets (le premier fragment ayant une valeur de zéro).
  • champ identification (16 bits) : numéro attribué à chaque fragment afin de permettre leur réassemblage dans le bon ordre.
  • champ longueur totale (16 bits) : il est recalculé pour chaque fragment.
  • champ drapeau (3 bits) : il est composé de trois bits:

Le premier n'est pas utilisé.

Le second (appelé DF : Don't Fragment) indique si le datagramme peut être fragmenté ou non. Si jamais un datagramme a ce bit positionné à un et que le routeur ne peut pas l'acheminer sans le fragmenter, alors le datagramme est rejeté avec un message d'erreur

Le dernier (appelé MF : More Fragments, en français Fragments à suivre) indique si le datagramme est un fragment de donnée (1). Si l'indicateur est à zéro, cela indique que le fragment est le dernier (donc que le routeur devrait être en possession de tous les fragments précédents) ou bien que le datagramme n'a pas fait l'objet d'une fragmentation

 

Le protocole ICMP (rfc 792)

 

La gestion des erreurs

 

Le protocole ICMP (Internet Control Message Protocol) est un protocole qui permet de gérer les informations relatives aux erreurs aux machines connectées. Etant donné le peu de contrôles que le protocole IP réalise il permet non pas de corriger ces erreurs mais de faire part de ces erreurs aux protocoles des couches voisines. Ainsi, le protocole ICMP est utilisé par tous les routeurs, qui l'utilisent pour reporter une erreur (appelé Delivery Problem).

 

Les messages ICMP sont encapsulés

 

Les messages d'erreur ICMP sont transportés sur le réseau sous forme de datagramme, comme n'importe quelle donnée. Ainsi, les messages d'erreur peuvent eux-mêmes être sujet d'erreurs.

Toutefois en cas d'erreur sur un datagramme transportant un message ICMP, aucun message d'erreur n'est délivré pour éviter un effet "boule de neige" en cas d'incident sur le réseau.

Message ICMP encapsulé dans un datagramme IP:

 

En-tête

Message ICMP

 

Type
(8 bits)

Code
(8 bits)

Checksum
(16 bits)

Message
(taille variable)

 

 

Exemple :

Message "destinataire non accessible"

 

Champs IP:

Adresse destinataire :

L'adresse et réseau source du datagramme original.

Champs ICMP:

Type :

3

Code :

0 = réseau inaccessible;
1 = hôte inaccessible;
2 = protocole non disponible;
3 = port non accessible;
4 = fragmentation nécessaire mais interdite;
5 = échec d'acheminement source.

Checksum :

Le complément à un sur 16 bits de la somme des compléments à un du message ICMP. Lors du calcul du Checksum, le champ destiné à recevoir ce Checksum sera laissé à zéro. Ce mécanisme de Checksum sera changé dans le futur. 

 

Le protocole TCP (rfc 793)

 

Les caractéristiques du protocole TCP

TCP (qui signifie Transmission Control Protocol, soit en français: Protocole de Contrôle de Transmission) est un des principaux protocoles de la couche transport du modèle TCP/IP. Il permet, au niveau des applications, de gérer les données en provenance (ou à destination) de la couche inférieure du modèle (c'est-à-dire le protocole IP). Lorsque les données sont fournies au protocole IP, celui-ci les encapsule dans des datagrammes IP, en fixant le champ protocole à 6 (Pour savoir que le protocole en amont est TCP...). TCP est un protocole orienté connexion, c'est-à-dire qu'il permet à deux machines qui communiquent de contrôler l'état de la transmission.
Les caractéristiques principales du protocole TCP sont les suivantes:

  • TCP permet de remettre en ordre les datagrammes en provenance du protocole IP
  • TCP permet de vérifier le flot de données afin d'éviter une saturation du réseau
  • TCP permet de formater les données en segments de longueur variable afin de les "remettre" au protocole IP
  • TCP permet de multiplexer les données, c'est-à-dire de faire circuler simultanément des informations provenant de sources (applications par exemple) distinctes sur une même ligne
  • TCP permet enfin l'initialisation et la fin d'une communication de manière courtoise

 

Le but de TCP

Grâce au protocole TCP, les applications peuvent communiquer de façon sûre (grâce au système d'accusés de réception du protocole TCP), indépendamment des couches inférieures. Cela signifie que les routeurs (qui travaillent dans la couche Internet) ont pour seul rôle l'acheminement des données sous forme de datagrammes, sans se préoccuper du contrôle des données, car celui-ci est réalisé par la couche transport.

Les machines dans un tel environnement communiquent en full duplex.

Pour permettre le bon déroulement de la communication et de tous les contrôles qui l'accompagnent, les données sont encapsulées.

Une autre particularité de TCP est de pouvoir réguler le débit des données grâce à sa capacité à émettre des messages de taille variable, ces messages sont appelés segments.

 

La fonction de multiplexage

TCP permet d'effectuer une tâche importante: le multiplexage/démultiplexage, c'est-à-dire faire transiter sur une même ligne des données provenant d'applications diverses ou en d'autres mots mettre en série des informations arrivant en parallèle.

 

 

 

 

 

 

 

 

Ces opérations sont réalisées grâce au concept de ports (ou sockets), c'est-à-dire un numéro associé à un type d'application, qui, combiné à une adresse IP, permet de déterminer de façon unique une application qui tourne sur une machine donnée.

 

Le format des données sous TCP

Un segment TCP est constituée comme suit:

 

 

- Les numéros de port permettent de référencer les applications (voir Annexe).

- Le numéro de séquence indique le numéro du premier octet transmis dans le segment.

- Le numéro d’acquittement contient le numéro de séquence du prochain octet attendu par  l’émetteur.

- La longueur de l’en-tête est codée sur 4 bits et donne le nombre de mots de 32 bits.

- Les bits de contrôle permettent de définir la fonction des messages ainsi que la validité de certains champs :

·  URG = 1 si le champ des priorités est utilisé (pour des demandes d’interruption d’émission par exemple)

·  ACK = 1 si la valeur du champ acquittement est significative;

·  EOM (ou PSH) indique une fin de message (End of Message), les données doivent être transmises (pushed) à la couche supérieure;

·  RST (Reset) demande de réinitialisation de la connexion;

·  SYN: demande d’ouverture de connexion (les numéros de séquence doivent être synchronisés)

·  FIN : fin de connexion.

- Le champ fenêtre (Windows) indique le nombre d’octets que le récepteur peut accepter à partir du numéro d’acquittement.

- Le champ checksum correspond à une somme de contrôle de l’en-tête et du message.

- Le champ priorité contient lors d’une interruption d’émission (URG=l) un pointeur sur les octets de données à traiter en priorité.

- Le champ options permet de définir, par exemple, la taille maximale d’un segment.

 

a) Ouverture d’une connexion

Après autorisation locale sur chaque station et déclaration d’un identificateur permettant à l’application de référencer la connexion, la demande d’ouverture de connexion est transmise à la couche transport qui positionne son bit SYN à 1 (figure 7.17). Le numéro de séquence initial à l’émission (Initial Send Sequence number, ISS) est délivré, au moment de la demande, par un compteur incrémenté toutes les 4 ms (la taille du champ séquence étant de 32 bits, la période du compteur est supérieure à 4 heures).

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

b)      Transfert de données

Le transfert de données peut alors commencer avec les numéros de séquence en cours (figure 7.18). Le contrôle de flux est réalisé dans les deux sens par les numéros d’acquittement (le bit ACK est alors positionné à 1). La taille de la fenêtre de transmission sans acquittement est fixée par le destinataire avant envoi du premier segment. Comme pour le protocole HDLC, lorsque l’émetteur n’a pas reçu d’acquittement après expiration d’un délai programmé, une retransmission des segments non acquittés est réalisée.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

c) Fermeture d’une connexion

La fermeture d’une connexion est réalisée lorsque le récepteur reçoit un en-tête TCP dont le bit FIN est positionné à 1 (figure 7.19). La demande est traitée dans les deux sens au niveaux supérieurs avant acquittement.

 


Le protocole UDP (rfc 768)

 

UDP est un protocole sans connexion et permet à une application d’envoyer des messages à une autre application avec un minimum de fonctionnalités (pas de garanties d’arrivée, ni de contrôle de séquencement). Il n’apporte pas de fonctionnalités supplémentaires par rapport à IP et permet simplement de désigner les numéros de port correspondant aux applications envisagées avec des temps de réponse courts.

Un message UDP est désigné dans un paquet IP par une valeur du champ protocole égal à 17.

 

 

- Le port source et le port destination permettent de référencer les applications qui s’exécutent sur les machines locales et distantes. Les numéros de port des applications UNIX usuelles (process) sont donnés en Annexe. Les valeurs supérieures à 1023 correspondent à des ports clients et sont affectées à la demande par la machine qui effectue une connexion TCP.

- La longueur indique la longueur totale du message en octets (données et en-téte).

- La somme de contrôle est calculée comme pour les paquets IP. Une somme à 0 indique qu’elle n’est pas gérée.

 

 

Annexe

 

“The Well Known Ports are those from 0 through 1023”
“The Registered Ports are those from 1024 through 49151”
“The Dynamic and/or Private Ports are those from 49152 through 65535”
 

Les ports « bien connus » sont 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)

 

Assignation des ports associés aux processus serveurs  en fonction des protocoles de transport

Cette liste non exhaustive, indique le port employé par le processus de serveur comme son port de contact. Le port de contact s'appelle parfois le port "bien connu".

 

Processus              Port/Proto    Description

 

echo              7/tcp    Echo
echo              7/udp    Echo
systat           11/tcp    Active Users
systat           11/udp    Active Users
daytime          13/tcp    Daytime (RFC 867)
daytime          13/udp    Daytime (RFC 867)
qotd             17/tcp    Quote of the Day
qotd             17/udp    Quote of the Day
msp              18/tcp    Message Send Protocol
msp              18/udp    Message Send Protocol
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    SSH Remote Login Protocol
ssh              22/udp    SSH Remote Login Protocol
telnet           23/tcp    Telnet
telnet           23/udp    Telnet
                 24/tcp    any private mail system
                 24/udp    any private mail system
smtp             25/tcp    Simple Mail Transfer
smtp             25/udp    Simple Mail Transfer
msg-icp          29/tcp    MSG ICP
msg-icp          29/udp    MSG ICP
msg-auth         31/tcp    MSG Authentication
msg-auth         31/udp    MSG Authentication
time             37/tcp    Time
time             37/udp    Time
#                          Jon Postel <postel@isi.edu>
name             42/tcp    Host Name Server
name             42/udp    Host Name Server
nameserver       42/tcp    Host Name Server
nameserver       42/udp    Host Name Server
nicname          43/tcp    Who Is
nicname          43/udp    Who Is
domain           53/tcp    Domain Name Server
domain           53/udp    Domain Name Server
whois++          63/tcp    whois++
whois++          63/udp    whois++
sql*net          66/tcp    Oracle SQL*NET
sql*net          66/udp    Oracle SQL*NET
bootps           67/tcp    Bootstrap Protocol Server
bootps           67/udp    Bootstrap Protocol Server
bootpc           68/tcp    Bootstrap Protocol Client
bootpc           68/udp    Bootstrap Protocol Client
tftp             69/tcp    Trivial File Transfer
tftp             69/udp    Trivial File Transfer
gopher           70/tcp    Gopher
gopher           70/udp    Gopher
finger           79/tcp    Finger
finger           79/udp    Finger
http             80/tcp    World Wide Web HTTP
http             80/udp    World Wide Web HTTP
www              80/tcp    World Wide Web HTTP
www              80/udp    World Wide Web HTTP
www-http         80/tcp    World Wide Web HTTP
www-http         80/udp    World Wide Web HTTP
kerberos         88/tcp    Kerberos
kerberos         88/udp    Kerberos
dnsix            90/tcp    DNSIX Securit Attribute Token Map
dnsix            90/udp    DNSIX Securit Attribute Token Map
npp              92/tcp    Network Printing Protocol
npp              92/udp    Network Printing Protocol
hostname        101/tcp    NIC Host Name Server
hostname        101/udp    NIC Host Name Server
rtelnet         107/tcp    Remote Telnet Service
rtelnet         107/udp    Remote Telnet Service
#                          Jon Postel <postel@isi.edu>
pop2            109/tcp    Post Office Protocol - Version 2
pop2            109/udp    Post Office Protocol - Version 2
pop3            110/tcp    Post Office Protocol - Version 3
pop3            110/udp    Post Office Protocol - Version 3
sunrpc          111/tcp    SUN Remote Procedure Call
sunrpc          111/udp    SUN Remote Procedure Call
ident           113/tcp    
auth            113/tcp    Authentication Service
auth            113/udp    Authentication Service
audionews       114/tcp    Audio News Multicast
audionews       114/udp    Audio News Multicast
sftp            115/tcp    Simple File Transfer Protocol
sftp            115/udp    Simple File Transfer Protocol
sqlserv         118/tcp    SQL Services
sqlserv         118/udp    SQL Services
nntp            119/tcp    Network News Transfer Protocol
nntp            119/udp    Network News Transfer Protocol
ntp             123/tcp    Network Time Protocol
ntp             123/udp    Network Time Protocol
statsrv         133/tcp    Statistics Service
statsrv         133/udp    Statistics Service
netbios-ns      137/tcp    NETBIOS Name Service    
netbios-ns      137/udp    NETBIOS Name Service    
netbios-dgm     138/tcp    NETBIOS Datagram Service
netbios-dgm     138/udp    NETBIOS Datagram Service
netbios-ssn     139/tcp    NETBIOS Session Service
netbios-ssn     139/udp    NETBIOS Session Service
 

 dernière modification:   Lundi, 12 Janvier 2004

 Copyright © 2001 formsys - tous droits réservés.