Cours issu de : https://info.blaisepascal.fr/nsi-communication-tcp-ip
La suite TCP/IP (appelée simplement TCP/IP) est l’ensemble des protocoles utilisés pour le transfert des données sur Internet.
Les principaux protocoles de l’ensemble TCP/IP sont :
Protocole Couche OSI Fonction
IP
Internet Protocol 3 routage des paquets
ARP
Address Resolution Protocol 3 résolution d’adresse IP en adresse MAC
RARP
Reverse Address Resolution Protocol 3 résolution d’adresse MAC en adresse IP
ICMP
Internet Control Message Protocol 3 gestion des messages du protocole IP
IGMP
Internet Group Management Protocol 3 protocole de gestion de groupe
TCP
Transmission Control Protocol 4 transport en mode connecté
UDP
User Datagram Protocol 4 transport en mode non connecté
Les deux protocoles qui donnent leur nom à la suite TCP/IP sont :
La transmission des données sur un réseau TCP/IP peut être décrite selon un modèle en 4 couches (voir le modèle OSI) dans lequel les protocoles TCP et IP jouent un rôle prédominant.
7 Application échanges de données d’application (selon l’application) HTTP, FTP, DNS
(Application) mise en forme de données échangées
4 Transport synchronisation de processus distants TCP, UDP
(Transport) transfert de blocs d’octets entre processus
3 Internet transfert de blocs d’octets entre systèmes distants IP
(pas forcément raccordés au même médium)
1 Accès Réseau transfert fiable de blocs d’octets entre systèmes raccordés Ethernet, Token Ring
au même médium
2 transfert de bits entre systèmes raccordés au même médium
Chaque couche a pour fonction de traiter des données en provenance d’une couche adjacente et à destination de l’autre couche adjacente.
Selon leur rôle dans la transmission, les composants possèdent des capacités matérielles et/ou logicielles qu’il doivent partager avec les composants auquel ils sont reliés.
Par exemple : communication entre deux hôtes connectés sur Internet par deux routeurs :
Les applications de chaque hôte exécutent des opérations de communications (lecture, envoi, …) sans connaitre les protocoles utilisés par les couches inférieures.
Sur les média (câbles, fibres optiques, ondes électromagnétiques, …) reliant physiquement les composants, les données sont sous la forme de trames.
Un protocole est un ensemble de règles à respecter pour qu’une couche d’un système puisse communiquer avec la même couche de son interlocuteur.
Les protocoles ont été définis pour standardiser la communication entre équipements.
Exemple : transmission d’une lettre par la poste
Pour envoyer une lettre par la poste :
Ce sont des règles utilisées par tout le monde.
L’enveloppe avec les adresses constituent la « capsule » contenant le message.
Exemple : conversation courante entre deux personnes
Un certain nombre de règles implicitement établies régule la conversation, comme par exemple :
La trame se forme au passage des 4 couches du modèle TCP/IP :
Au passage de chaque couche, les données sont encapsulées.
Le segment est constitué d’un entête TCP (appelé UDP) suivi des données encapsulées par l’application.
TCP permet le contrôle de la transmission et d’assurer l’arrivée à bon port de la donnée. Il fragmente le segment en paquets de taille compatible avec la longueur maximum d’un datagramme. Il réassemble les paquets à la réception.
L’entête TCP spécifie le port utilisé par l’application pour communiquer.
Le datagramme IP est constitué d’un entête IP suivi d’un paquet.
L’entête IP contient l’adresse IP du destinataire et de l’émetteur,
ainsi que les informations pour la gestion de la fragmentation du datagramme.
La trame est constitué d’un entête de trame suivi du datagramme IP, puis d’une queue de trame .
C’est cette trame qui va circuler sur les lignes physiques du réseau (câbles réseau, …).
Note : L’adresse MAC (dans l’entête de la trame) correspond à l’adresse physique de la carte réseau du destinataire ou du routeur, à ne pas confondre avec l’adresse IP qui est une adresse « logique » et permet la structuration en réseau des ordinateurs.
Pour qu’une application puisse se connecter à une autre sur un réseau TCP/IP, elle a besoin d’un socket (que l’on peut traduire par « porte » ou « prise ») :
Sur un réseau et ses sous réseaux, les périphériques doivent faire l’objet d’un adressage rigoureux.
Dans le modèle TCP/IP, la couche réseau du modèle OSI est appelée couche Internet ou couche IP (du nom du principal protocole utilisé par cette couche).
Unité d’information traitée : paquet
Principales fonctionnalités :
La couche Internet encapsule les segments générés par la couche transport avec un en-tête contenant les adresses de la station source et de la station destinataire du message.
Ces adresses sont appelées adresses IP, du nom du protocole Internet Protocol.
IP (Internet Protocol) assure le routage des paquets de manière totalement transparente pour l’utilisateur qui ne doit fournir que l’adresse Internet du destinataire.
L’entête IP comporte au minimum 20 octets dont, entre autres informations :
Exemple d’entête IP capturé avec le logiciel Wireshark :
Caractéristiques :
Remarque : une adresse IP pour chaque carte réseau de l’hôte (Ethernet, Wifi, …)
Sur un même réseau TCP/IP, chaque composant (ordinateur, box, serveur, smartphone …) possède une adresse IP unique.
Une adresse IP, dans la version 4, est une adresse sur 32 bits, généralement notée sous forme de 4 octets (représentés sous forme décimale) séparés par des « points ».
exemple d’adresse IPv4 : 192.168.0.147
Pour le réseau Internet, le nombre d’adresses à distribuer a été rapidement épuisé. Pour faire face à ce problème, une nouvelle version d’adresses IP (IPv6 car il s’agit de la 6ème version) a été mise en place.
Une adresse IPv6, est une adresse sur 128 bits, généralement notée sous forme de 8 paires d’octets (représentés sous forme hexadécimale) séparés par des « deux-points ».
exemple d’adresse IPv6 : 1fff:0000:0a88:85a3:0000:0000:ac1f:8001
Activité
On distingue en fait deux parties dans l’adresse IP :
Remarque : sur le réseau Internet, l’adresse du réseau est donnée par des instances internationales (RIR – Regional Internet Registry)
Un sous-réseau est une subdivision logique d’un réseau de taille plus importante.
Les stations d’un même sous-réseau possèdent des adresses IP d’une même plage d’adresses. Pour communiquer entre elles, elles doivent avoir la même adresse de réseau.
Exemple : les hôtes du réseau A ont tous la même adresse réseau ( 192.168.0.0 ) et ceux du réseau B également ( 172.21.0.0 ).
Communication :
Remarque : la subdivision d’un réseau en sous-réseaux permet de limiter la propagation des broadcast, c’est à dire la diffusion de messages à un ensemble d’hôtes. Ces messages restent limités au réseau local.
Les différents hôtes d’un réseau communiquent entre eux en utilisant leur adresse IP. Lorsqu’une machine source veut communiquer avec une machine destination, elle doit vérifier que l’adresse réseau de la machine destination est la même que la sienne (sinon, cela signifie que la machine destination n’est pas sur le même réseau qu’elle, et par conséquent qu’il faut demander à la passerelle).
L’adresse réseau est intégrée à l’adresse IP. Pour « séparer » les deux, on utilise un masque de sous réseau.
Le masque de sous-réseau permet de distinguer l’adresse réseau (partie de l’adresse utilisée pour le routage) et l’adresse de l’hôte (partie de l’adresse utilisée pour numéroter des interfaces) sur ce sous-réseau.
Exemple : dans l’adresse 192.168.0.13 avec masque de sous-réseau 255.255.0.0, on sait que l’adresse réseau (netID) est 192.168.0.0 et que le numéro d’hôte (hostID) est 0.0.0.13 , cela grâce au masque de sous réseau.
Le masque de sous réseau est codé lui aussi sur 4 octets. On peut donc le représenter comme une adresse IP, à la différence que sous une écriture binaire, il est constitué d’une suite de 1 consécutifs, puis d’une suite de 0.
Remarque : deux adresses IP appartiennent à un même sous-réseau si elles ont en commun les bits à 1 du masque de sous-réseau.
Activité
Une forme plus courte est connue sous le nom de notation CIDR (Classless Inter-Domain Routing). Elle donne le numéro du réseau suivi par une barre oblique (ou slash, « / ») et le nombre de bits à 1 dans la notation binaire du masque de sous-réseau.
Exemple : le masque 255.255.224.0 , équivalent en binaire à 11111111.11111111.11100000.00000000 , sera donc représenté par /19 (19 bits à la valeur 1, suivis de 13 bits 0).
La notation 91.198.174.2/19 désigne donc l’adresse IP 91.198.174.2 avec le masque 255.255.224.0 , et signifie que les 19 premiers bits de l’adresse sont dédiés à l’adresse du sous-réseau, et le reste à l’adresse de l’ordinateur hôte à l’intérieur du sous-réseau.
Exemple de calcul :
Adresse 192 . 168 . 108 . 13
11000000 . 10101000 . 011 01100 . 00001101
Masque 255 . 255 . 224 . 0
11111111 . 11111111 . 111 00000 . 00000000
Adresse réseau 192 . 168 . 96 . 0
11000000 . 10101000 . 011 00000 . 00000000
Numéro d’hôte 0 . 0 . 12 . 13
00000000 . 00000000 . 000 01100 . 00001101
Adresse réseau
L’adresse de réseau se calcule en faisant un ET logique entre l’adresse IP et le masque :
exemple (langage Python) :
>>> 108 & 224
96
En notation CIDR, on connait seulement le nombre de bits à 1 du masque, qu’il faut donc calculer.
Numéro d’hôte
Le numéro d’hôte se calcule en faisant une soustraction entre l’adresse IP et l’adresse réseau
exemple (langage Python) :
>>> 108 - 96
12
Le nombre d’hôtes que l’on peut adresser sur un réseau dépend du nombre de bits réservés au numéro d’hôte.
Exemple : avec un masque de sous-réseau 255.255.255.0 , les 8 derniers bits (soit un octet) sont réservés au numéro d’hôte, soit 256 possibilités …
Il faut tout de même penser à enlever 2 valeurs :
Exemple : sur un réseau masqué 255.255.255.0 , il est possible de connecter 28−2=254 composants …
Un réseau privé est un réseau qui utilise les plages d’adressage IP spécifiques :
Un réseau privé peut être numéroté librement avec les plages d’adresses privées définies par les préfixes réseaux suivants :
Ces plages d’adresse sont définies par la RFC 1918 (Address Allocation for Private Internets).
Activité
Dans le modèle TCP/IP, la couche transport correspond à la couche 4 du modèle OSI.
Unité d’information traitée : segment (TCP) – datagramme (UDP)
Principales fonctionnalités :
Objectif :
Transfert de blocs d’octets entre processus
Mais aussi :
DCCP (Datagram Congestion Control Protocol)
SPX (Sequenced packet exchange)
SCTP (Stream Control Transmission Protocol)
TCAP (Transaction Capabilities Application Part)
La première fonction de ces protocoles est de fournir un port aux applicatifs. Le port fait partie du socket, élément de communication nécessaire aux applicatifs pour se connecter entre elles sur un réseau :
Exemple d’utilisation des sockets dans une communication Client/Serveur HTTP.
Un port est un point d’accès au réseau, pour une application.
Ports privilégiés (<=1024) :
Ports connus (>1024) :
Liste complète des ports logiciels
Un port peut avoir plusieurs états :
UDP (User Datagram Protocol) fourni aux application jusqu’à 65534 points d’accès au réseau.
Le rôle de ce protocole est de permettre la transmission de données de manière très simple entre deux entités, chacune étant définie par une adresse IP et un numéro de port. Aucune communication préalable n’est requise pour établir la connexion : UDP utilise un mode de transmission sans connexion → service « non fiable ».
L’intégrité des données est assurée par une somme de contrôle sur l’en-tête. L’utilisation de cette somme est cependant facultative en IPv4 mais obligatoire avec IPv6. Si un hôte n’a pas calculé la somme de contrôle d’un datagramme émis, la valeur de celle-ci est fixée à zéro. La somme de contrôle inclut également les adresses IP de la source et de la destination.
À cause de l’absence de mécanisme de handshaking, ce protocole expose le programme qui l’utilise aux problèmes éventuels de fiabilité du réseau ; ainsi, il n’existe pas de garantie de protection quant à la livraison, l’ordre d’arrivée, ou la duplication éventuelle des datagrammes. UDP est donc adapté à un usage pour lequel la détection et la correction d’erreurs ne sont pas nécessaires, ou sont effectuées directement par l’application :
La nature du protocole UDP le rend utile pour transmettre rapidement de petites quantités de données, depuis un serveur vers de nombreux clients ou bien dans des cas où la perte éventuelle d’un datagramme est préférée à l’attente de sa retransmission.
UDP est un service non fiable.
En plus de celles d’UDP, TCP rempli les fonctions suivantes :
TCP est un service fiable.
L’entête TCP de chaque segment contient :
Une connexion entre deux hôtes s’établit en trois étapes : c’est le three-way handshake. Dès la connexion, on définit les numéros de séquence que l’on utilisera pour le transfert de données TCP.
Une fois le three-way handshake effectué, le client et le serveur ont reçu un acquittement de la connexion. Les étapes 1 et 2 définissent le numéro de séquence pour la communication du client au serveur et les étapes 2 et 3 définissent le numéro de séquence pour la communication dans l’autre sens. Une communication full-duplex est maintenant établie entre le client et le serveur.
Pendant la phase de transferts de données, la robustesse et la fiabilité sont assurés, entre autre, par :