Le Modèle TCP/IP
Le Modèle TCP/IP
Le Modèle TCP/IP
Le Modèle TCP/IP
1-1
1 Présentation du Modèle TCP/IP et comparaison avec OSI
Le modèle TCP/IP est né en 1973 grâce aux travaux de recherches des Ingénieurs
Chercheurs (à l’époque) Robert Elliot Kahn (Bob Kahn) et Vinton Gray Cerf (Vint
Cerf), considérés tous les deux comme les pères d’Internet. Le modèle propose
une suite de protocoles permettant d’interconnecter des réseaux hétérogènes.
Comme tout modèle de réseau, TCP/IP est définit sur une architecture de type
couches. Il en propose 4. Dans certaines représentations, on en trouve 5. Chacune
devra répondre à un certain nombre de besoins liés à la transmission des données
à travers le réseau. Ce modèle ne se préoccupe pas du contenu (message à
transmettre), il se contente de remplir des fonctions qui facilitent les
communications, le partage et la diffusion de ce contenu. Comparé au modèle
OSI, cela donne :
Rappelons ici que le modèle TCP/IP est né avant le modèle OSI. Le premier est une
réelle « Implémentation », le second n’est qu’une représentation «Fonctionnelle»
théorique.
1-2
Les unités d’informations prennent des noms et des formes différentes d’une
couche à une autre.
1-3
communication est faite entre des processus (applications) s’exécutant au niveau
de la source et de la destination. Ceci ressemble à une liaison fictive entre les
deux bouts.
Les unités logiques d'informations véhiculées par cette couche sont appelées
segments. Le contrôle de la fiabilité s’appuie sur les messages d’acquittement
(ACKnowlodge) envoyés par le récepteur à la destination de l’Émetteur pour lui
rassurer que les données envoyées ont été correctement reçue.
1-4
temporisation que l’émetteur lance après chaque envoie, le segment sera
considéré comme perdu et l’émetteur va renvoyé le même segment à partir de la
copie qu’il a dans son Buffer.
Avant toute transmission de données (messages utiles), une connexion TCP doit
être établie entre l’émetteur et le récepteur. Elle s’effectue de la façon suivante :
• L’émetteur qui va initier la connexion envoie un segment de type
"ouverture de connexion" avec le n° de séquence N (dans ce segment ne
figure aucune donnée).
• Le destinataire renvoie un segment de type "ouverture de connexion" avec
le n° de séquence M et en acquittant la séquence N envoyée par
l’émetteur.
• L’émetteur renvoie un acquittement au destinataire du segment n° M, de
cette façon chaque machine connaît le n° de séquence de l'autre et
l'échange d'information peut débuter.
Exemple de connexion TCP:
1-5
Un segment TCP obéit à une structure. La même structure est utilisée quelques soit
son usage dans une communication TCP (établissement de connexion, transfert de
données, émission des acquittements, fermeture de connexions). Ce segment est
constitué d’un en-tête TCP et de données.
• Port Source (16 bits): Port relatif à l'application (processus émetteur) en cours sur
la machine source
• Port Destination (16 bits): Port relatif à l'application (processus destinataire) en
cours sur la machine de destination (ex. : HTTP = 80)
• Numéro d'ordre (32 bits): Lorsque le drapeau SYN (Synchronisation) est à 0, le
numéro d'ordre est celui du premier mot du segment en cours. Si le drapeau SYN
vaut 1, ce champ définit le numéro de séquence initial (ISN).
1-6
• Numéro d'accusé de réception (32 bits): Le numéro d'accusé de réception
(numéro d'acquittement) correspond au numéro (d'ordre) du prochain segment
attendu.
• Décalage des données (4 bits): cette valeur définit la position du début de
données dans le paquet. Le décalage est ici essentiel car le champ d'options est de
taille variable.
• Réservé (6 bits): Champ inutilisé actuellement mais prévu pour l'avenir
• Drapeaux (flags) (6x1 bit): Les drapeaux représentent des informations
supplémentaires :
• URG: si ce drapeau est à 1 le paquet doit être traité de façon urgente.
• ACK: si ce drapeau est à 1 le paquet est un accusé de réception.
• PSH (PUSH): si ce drapeau est à 1, le paquet fonctionne suivant la méthode
PUSH.
• RST: si ce drapeau est à 1, la connexion est réinitialisée.
• SYN: Le Flag TCP SYN indique une demande d'établissement de connexion.
• FIN: si ce drapeau est à 1 la connexion s'interrompt.
• Fenêtre (16 bits): Taille de la fenêtre, c'est à dire le nombre d'octets disponibles
(libres) dans le buffer du récepteur, à partir du numéro d'acquittement.
• Somme de contrôle (Checksum): La somme de contrôle est réalisée en faisant la
somme des champs de données de l'en-tête, afin de pouvoir vérifier l'intégrité de
l'en-tête.
• Pointeur d'urgence (16 bits): Indique le numéro d'ordre (position) à partir duquel
l'information devient urgente et passe devant la file d’attente du récepteur de ce
segment.
• Options (Taille variable): Des options diverses
• Remplissage (ou bourrage): On remplit l'espace restant après les options avec
des zéros pour avoir une longueur multiple de 32 bits.
Dans une communication TCP, le couple @IP:port_TCP est utilisé pour identifier avec
précision le type d’application (ou protocole) qui va traiter les données au niveau du
destinataire. Ce couple est nommé : Socket (ou prise en français). Pour une session
de communication donnée, la source et la destination possèdent chacun son propre
Socket. Un canal logique de transmission est établie entre la source et la destination.
1-7
Source Destination
Canal logique de transmission
Socket Socket
Dans une communication TCP, les deux interlocuteurs ne sont pas toujours
techniquement identiques. Le récepteur par exemple peut ne pas avoir les mêmes
capacités de traitement des données en terme de rapidité. Dans ce cas, l’émetteur ne
pourra pas continuer à lui envoyer les segments que s’il (le récepteur) arrive à les
traiter à temps. Le protocole doit assurer le maintient de cette communication
(connexion).
Pour y arriver, il procède à un contrôle de flux de données, selon le schéma
suivant :
• le récepteur utilise un Buffer (Mémoire temporaire ou Tampon) dans lequel il
stocke les segments reçus.
• Ce Buffer_Récepteur possède une capacité de stockage (taille) limite.
• Il ne peut recevoir d’autres données que s’il a encore de la place libre. C'est la
taille de cette place qui détermine la quantité de données que le récepteur
peut encore recevoir. Il doit informer alors l’émetteur de la taille de la place
1-8
libre. Cette information est transmise à chaque segment d’acquittement.
C’est le champ « fenêtre » dans l’en-tête TCP . Dans ce cas, un émetteur
n’enverra jamais un segment dépassant cet espace libre du Buffer. Cette
« place libre » est appelée : « fenêtre glissante ». C’est une fenêtre dont la
taille est fixée par le récepteur à chaque émission d'acquittement.
• Dès qu’il n’y a plus de place libre, il arrêtera de recevoir des données
(segments) jusqu’à ce qu’il libère de nouveau des places (octets).
Le protocole TCP est implémenté sous forme logicielle. Il représente ainsi une
interface avec les processus utilisateur ou applicatifs et un protocole de niveau
inférieur du type Internet Protocol. L'interface avec les applicatifs est composée
d’un ensemble de commandes. On trouvera des commandes pour établir et
rompre une communication et pour envoyer ou recevoir des données sur une
connexion ouverte.
1-9
offert par le mode TCP, où la gestion de la fiabilité réduit (relativement) le débit
de transmission du message utile. C’est un protocole non-connecté et non-fiable.
0 16 31
Longueur Checksum
Données
Exemple :
Soit l’en-tête ayant la valeur hexadécimale CB84000D001C001C. En se basant sur
le format, on peut déduire les valeurs des différents champs, à savoir :
Port Source = CB84 => 52100 en décimal
Destination Source = 000D => 13 en décimal (protocole : DayTime)
Longueur = 001C => 28 Octets en décimal
CheckSum = 001C => 28 en décimal
1 - 10
Les unités logiques d'informations véhiculées par cette couche sont appelées des
datagrammes. Elles respectent le format suivant :
1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3
0 1 2 3 4 5 6 7 8 9
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
Adresse IP Source
Adresse IP Destination
Options IP Bourrage
Données
0 1 2 3 4 5 6 7
Priorité D T R Inutilisé
1 - 11
◦ 2 derniers bits : réservés pour une utilisation future.
Notons que la structure du champ « Type de Service » a vu d’autres modifications.
• Taille Totale. Ce champ donne la longueur complète du datagramme : en-tête et
données. Au maximum, un datagramme fera 216, soit 65535 octets.
• TTL [Time To Live]. C’est un paramètre qui est décrémenté à chaque passage par
un routeur. Initialement, il contient une valeur, codée sur 8 bits, exprimant la
durée de vie du datagramme. S'il parvient à la valeur 0, le datagramme est détruit,
ce qui évite les boucles infinies dans l'Internet. Un datagramme ICMP de
type « Temps dépassé » est réémis vers la source pour l'informer de cette
destruction.
1 - 12
La couche IP est responsable du routage des données. Elle doit trouver le meilleur
chemin possible pour acheminer les données vers leur destination finale. Le routage
peut être statique, dans le cas par exemple d’une seule route entre deux réseaux,
comme il peut être dynamique (le cas le plus générale) où les routeurs
communiquent entre eux des informations utiles sur l’état des différentes routes.
Pour faire, elle se base sur une table nommée : Table de Routage. Le fonctionnement
est le suivant :
1 - 13
La couche Internet (IP) de la suite TCP/IP définit un certain nombre de protocoles.
Parmi les plus utilisés :
• ARP : Le protocole ARP (Address Resolution Protocol) permet de connaître
l'adresse physique (MAC) d'un adaptateur réseau à partir d’une adresse IP
reçue.
• RARP : Le protocole RARP (Reverse Address Resolution Protocol) permet
de connaître l'adresse IP d'un adaptateur réseau à partir d’une adresse
MAC reçue.
• ICMP : Nous avons déjà vu que le protocole IP ne gère pas les erreurs de
communication. Ces dernières sont gérées au niveau transport (TCP).
Cependant, un problème peut surgir lorsqu’un datagramme passe à travers
les routeurs. Pour que l’émetteur puisse réagir à cet événement (erreurs), il
doit être informé. C’est ici que vient le rôle du protocole ICMP (Internet
Control Message Protocol ) qui permet d’échanger les informations sur
l’état de la communication. Il possède une structure (en-tête) propre à lui
répartie sur 8 octets :
Bits 0 – 7 Bits 8-15 Bits 16-23 Bits 24-31
0 Type Code Somme de Contrôle
32 Informations de l’en-tête ICMP
1 - 14
Adresse IP Source
Adresse IP Destination
Options IP Bourrage
Dans la première catégorie, les messages informent sur des erreurs survenues
soit au niveau des routeurs soit au niveau des postes hôtes lors du traitement des
datagramme IP. Le champ « Données » du message ICMP (longueur variable), qui
vient juste après le reste de l’en-tête, doit contenir des informations (En-tête IP +
8 premiers Octets du datagramme concerné) permettant de repérer le
datagramme objet de ces erreurs. Dans ces 8 octets de données, on trouvera l’en-
1 - 15
tête issue de la couche Transport qui contient le numéro de port utilisé (TCP ou
UDP) ainsi que le numéro de séquence (pour TCP). Ces deux informations vont
permettre à l’émetteur (source) d’informer la couche supérieure (TCP ou UDP) de
cette erreur.
8 Premiers
En-tête Octets des
En-tête
Message ICMP Datagramme IP Données
ICMP
Reçu Datagramme IP
reçu
8 Premiers
Nouveau Datagramme IP En-tête Octets des
En-tête
A Envoyer (Contenant Un En-tête IP Datagramme IP Données
ICMP
Message ICMP) Reçu Datagramme IP
reçu
Dans la deuxième catégorie, les messages sont utilisés pour récupérer des
informations soit des routeurs soit des postes hôtes. Ils circulent en couple
(message Demande, message Réponse). Le champ « Données » du message, qui
vient juste après le reste de l’en-tête, doit contenir des informations
complémentaires liées au type de requête. Le couple le plus utilisé est : (la
Demande Echo, la Réponse Echo), pour tester la présence d’autres nœuds du
réseau (postes hôtes ou routeurs). La commande PING est un exemple concret de
l’utilisation de ce couple :
1 - 16
me@me-pc:~$ ping www.google.dz
PING www.google.dz (216.58.198.67) 56(84) bytes of data.
64 bytes from dub08s02-in-f3.1e100.net (216.58.198.67): icmp_seq=1 ttl=55 time=61.6 ms
64 bytes from dub08s02-in-f3.1e100.net (216.58.198.67): icmp_seq=2 ttl=55 time=89.6 ms
64 bytes from dub08s02-in-f3.1e100.net (216.58.198.67): icmp_seq=3 ttl=55 time=88.1 ms
64 bytes from dub08s02-in-f3.1e100.net (216.58.198.67): icmp_seq=4 ttl=55 time=86.4 ms
64 bytes from dub08s02-in-f3.1e100.net (216.58.198.67): icmp_seq=5 ttl=55 time=73.5 ms
^C
--- www.google.dz ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4006ms
rtt min/avg/max/mdev = 61.566/79.837/89.643/10.771 ms
On y voit la présence des numéros de séquences des messages ICMP envoyés par
la commande PING (Couche Applicative).
1 - 17
Voici un exemple d’une trame Ethernet où on peut clairement voir les valeurs des
en-tête TC, IP et Ethernet.
Le scénario proposé est le suivant : Un utilisateur veut ouvrir dans son navigateur
une page Web qui se trouve sur un site web (fictif dans notre exemple) ayant
comme URL: http://www.site.dz et @IPv4 : 192.168.1.102, hébergé sur un serveur
(dans cet exemple, le serveur n’est qu’une carte de développement, reliée au
LAN).
1 - 18
Sur le plan technique, ceci va se dérouler de la manière suivante :
• Au niveau de la couche Application : Le navigateur WEB va «transmettre» à
la couche « Application » un message ressemblant à ceci : « Serveur HTTP
www.site.dz, envoies-moi ta page /index.html ». C’est une sorte de
« commande » Cette dite « Requête » sera traitée par le protocole HTTP
de la couche Application de la machine hôte (utilisateur). Dans d’autres
exemples, d’autres types de requêtes (ou de messages) peuvent être
traitées par d’autres protocoles de la même couche.
1 - 19
• Au niveau de la couche Transport : La commande formulée à la couche
« Application » sera « encapsulée » par un protocole de la couche
« Transport », tel que : TCP. C’est ce protocole qui donne l’impression à la
machine hôte qu’elle est connectée directement au serveur WEB distant.
La connexion est établie entre deux ports, un de chaque coté. TCP initie
alors cette connexion, la maintient, contrôle le flux de données et réagit en
cas d’erreur de transmission (par une reprise de la transmission), et pour
terminer met fin à cette connexion.
1 - 20
+ N°Ports
• Les données requises par la machine hôte se trouve sur un serveur WEB. En
pratique, ce serveur n’est qu’une machine (calculateur) sur lequel, en plus
d’un système d’exploitation, est installé un logiciel de type : Serveur WEB.
Apache, développé par « The Apache Software Foundation » est l’un des
plus utilisés dans ce domaine. Ce logiciel écoute en permanence l’arrivée de
requêtes à travers les cartes réseaux de du serveur, sur des @IP et des
Ports bien précis (selon la configuration). Par défaut, le port 80 est celui
utilisé par le service WEB (HTTP). Le « Destination Socket » sera donc :
@IP_Destination:80.
• Le contenu du fichier sera interprété puis affiché par le navigateur WEB sur
la machine hôte de l’utilisateur.
1 - 21
3 Système d’Adressage :
Dans un réseau informatique, chaque objet connecté doit avoir son adaptateur
réseau par lequel la connexion est assurée. Cet adaptateur (carte réseau) doit être
facilement identifiable au sein du réseau par les autres objets connectés au même
réseau. Cette identification est réalisée de deux manières :
• Matériellement par l’adresse MAC que nous avons déjà abordé. Elle est
unique pour chaque adaptateur. Elle n’est reconnaissable que par la
couche 2 du modèle OSI (Liaison de données). Un Switch identifie les
objets connectés sur ses ports à travers leurs @MAC.
• Logiquement par l’adresse IP.
3.1 Adressage IPv4
Une adresse IP version 4 est un code numérique composé de 4 octets, séparés par
un point. Dans un réseau local, chaque adaptateur réseau connecté doit avoir sa
propre adresse.
O1.O2.O3.O4
Exemple :
192.168.0.20 : ceci est une adresse IPv4 d’un adaptateur réseau dans un LAN.
1 - 22
et par un masque de sous-réseau distinct attribué par défaut, qui limité ainsi le
nombre d’objets adressables à l’intérieur de cet intervalle. Les premiers bits
d’adresses IP informe sur le type de classe. Le tableau suivant résume ces deux
aspects des 5 Classes :
Nombre
Premier Adresse IP Adresse IP Masque de Sous- d’objets
Classe
Octet Début Fin réseau adressab
les
16
A 0xxx xxxx 0.0.0.0 127.255.255.255 255.0.0.0
Millions
Classe A : Classe d@IP réservées pour les premiers et grands établissement
américains (Défense, MIT et autres). Elle ne contient que 256 Réseaux. Chacun
peut adressé plus de 16 millions d’objets (nombre pratiquement non atteignable
pour un seul réseau).
Classe B : Cette Classe définit plus de 65000 réseaux où chacun peut adressé plus
de 65000 objets.
1 - 23
Classe C : C’est l’une des classes les plus utilisée. Elle définit plus de 16 Millions
de Réseaux où chacun peut adresser jusqu’à 256 objets.
Classe D : Les adresses IP appartenant à cette classe désignent des adresses de
Multi-Cast. Elles ne sont pas routables (utilisées uniquement dans un réseau local
ou privé).
Classe E : Les adresses IP appartenant à cette classe sont restées réservés.
1 - 24
Tous les PCs doivent appartenir logiquement (par adressage) au même réseau
(sous-réseau). Ils doivent avoir la même adresse réseau. Cette dernière est dans
notre exemple : 192.168.0.0. C’est en se basant sur cette adresse et le masque de
sous-réseau (255.255.255.0 dans notre cas) qu’on peut affecter des adresses IP
aux différents postes. Les adresses possibles sont définies entre 192.168.0.1 et
192.168.0.254. L’adresse 192.168.0.255 est l’adresse de diffusion générale
(BraodCasting). Elle sert à envoyer le même message à l’ensemble des postes du
réseau. Dans notre cas, le réseau appartient à la classe C, définit par son @IP :
192.168.0.0 et par son masque de sous-réseau 255.255.255.255.
Les trois premières classes, en plus des adresses publiques proposent. Cependant,
elles contiennent aussi des plages d’adresses à usage privé.
• Les adresses privées de la classe A : 10.0.0.0 à 10.255.255.255
• Les adresses privées de la classe B : 172.16.0.0 à 172.31.255.255
• Les adresses privées de la classe C : 192.168.1.0 à 192.168.255.255
Ces adresses ne sont pas routables, elles ne peuvent exister que dans des réseaux
locaux.
Dans cette nouvelle norme, le système d’adressage par classes a été remplacé par
un nouveau, dans lequel il n’ y a plus de Classes de Réseaux. Un Réseau est
1 - 25
désigné par une adresse IP à laquelle on associe un nombre entier désignant le
nombre de bits définissant le masque.
Exemple de sur-réseau :
Soit une architecture réseau d’une entreprise composé des 4 sous-réseaux
suivant :
Sous-Réseau 1 :
@IP_réseau = 192.168.0.0 Masque de sous-réseau = 255.255.255.0
Sous-Réseau 2 :
@IP_réseau = 192.168.1.0 Masque de sous-réseau = 255.255.255.0
Sous-Réseau 3 :
@IP_réseau = 192.168.2.0 Masque de sous-réseau = 255.255.255.0
Sous-Réseau 4 :
@IP_réseau = 192.168.3.0 Masque de sous-réseau = 255.255.255.0
Dans chaque sous-réseau, on peut adresser jusqu’à 254 machines (pour le premier
sous réseau : de 192.168.0.1 jusqu’à 192.168.0.254, l’adresse 192.168.0.0 est
réservée au sous-réseau, et l’adresse 192.168.0.255 est réservée à la diffusion
générale). Au total, on aura au maximum 254x4=1016 machines.
1 - 26
La fusion des ces 4 domaines aboutira à un sur-réseau dont l’adresse est la plus
petite entres celles des sous-réseaux fusionnés , dans notre exemple ça sera donc :
192.168.0.0, le nouveau masque peut être déduit à partir de la représentation
binaire des adresses IP de chaque sous réseau :
Les bits communs, qui sont dans notre exemple au nombre de 22, forme le
nouveau masque de sur-réseau : 255.255.252.0. Il peut adresser jusqu’à 1022
machines, de 192.168.0.1 jusqu’à 192.168.3.254.
1 - 27