Le protocole TCP/IP
Le protocole IP
Pour pouvoir transmettre un message il faut connaître l'émetteur et le récepteur du message.
Faisons un parallèle avec une lettre envoyée par la poste :
|
Sur Internet, c'est à peu près la même chose: chaque message (chaque petit paquet de données) est enveloppé par IP qui y ajoute différentes informations:
|
L'adresse IP est une adresse unique attribuée à chaque ordinateur sur Internet (c'est-à-dire qu'il n'existe pas sur Internet deux ordinateurs ayant la même adresse IP).
De même, l'adresse postale (nom, prénom, rue, numéro, code postal et ville) permet d'identifier de manière unique un destinataire.
L'adresse IP se présente sous la forme de 4 nombres entre 0 et 255 séparés par des points, par exemple : 192.168.1.12 (norme IPv4(internet protocol version 4))
la plus petite est : 0.0.0.0 et la plus grande est : 255.255.255.255
En tout cela fait :
, en fait un peu moins car certaines sont réservées, et comme on commence à arriver à saturation un nouveau protocole est prévu (IPv6)
Une fois ces adresses attribuées, il faut acheminer le message...
Routage IP Pour envoyer votre lettre, vous la postez dans la boîte aux lettres la plus proche. Ce courrier est relevé, envoyé au centre de tri de votre ville, puis transmis à d'autres centres de tri jusqu'à atteindre le destinataire. |
C'est la même chose sur Internet ! Vous déposez le paquet IP sur l'ordinateur le plus proche (celui de votre fournisseur d'accès en général). Le paquet IP va transiter d'ordinateur en ordinateur jusqu'à atteindre le destinataire. |
Complément : Les ports- Le protocole UDP
IP nous permet d'envoyer et de recevoir des paquets de données d'un ordinateur à un autre.
Mais si nous avons plusieurs applications qui fonctionnent sur l'ordinateur ( navigateur, un logiciel d'e-mail, une radio....)
Comment faire pour savoir à quel logiciel délivrer les paquets ? |
On pourrait attribuer un numéro unique à chaque logiciel dans l'ordinateur.
Comme pour les portes d'un immeuble à une adresse donnée : |
Il suffirait alors de mettre ce numéro dans chaque paquet IP pour pouvoir s'adresser à tel ou tel logiciel. On appelle ces numéros des ports |
C'est le protocole UDP(User Datagram Protocol) qui permet cela |
Le protocole TCP
On peut envoyer des paquets de données d'un ordinateur à un autre (IP) et s'adresser au bon logiciel (UDP), cependant il y a encore des problèmes :
Des paquets peuvent se perdre.
Rien ne permet de savoir s'ils sont bien arrivés.
La taille des paquets est limitée ( 1500 octets environ), et si je veux envoyer une photo de 100 000 octets ?
C'est le rôle de TCP(Transmission Control Protocol) de régler tous ces éventuels problèmes :
TCP sait faire :
Tout ce que UDP sait faire (ports).
Vérifier que le destinataire est prêt à recevoir les données.
Découper les gros paquets en paquets plus petit.
Numéroter les paquets et vérifier qu'ils arrivent à destination ( de les redemander sinon), de les réordonner.
Émettre des accusés de réception.
Par exemple, pour envoyer le message "Salut, comment ça va ?", voilà ce que fait TCP (Chaque flèche représente 1 paquet IP) À l'arrivée, sur l'ordinateur 204.66.224.82, la couche TCP reconstitue le message "Salut, comment ça va ?" à partir des 3 paquets IP reçus et le donne au logiciel qui est sur le port 80. |
Simulation : Ce qu'il faut retenir...
Un exemple :
Un internaute tape dans la barre d'adresse de son navigateur : https://fr.wikipedia.org/wiki/Wikipédia:Accueil_principal
Son navigateur envoie une requête DNS à un serveur DNS pour obtenir l'adresse IP correspondant au nom de domaine : fr.wikipedia.org
Une fois l'adresse IP obtenue, le protocole TCP établit une connexion entre les deux machines
Une fois la connexion établie, le navigateur envoie une requête http au serveur dont il vient d'obtenir l'adresse IP
« Le protocole http utilise les protocole TCP/IP pour acheminer ses requêtes sur internet »
Celui-ci recherche la page demandée et l'envoie à l'internaute.
Supposons que la page demandée contient un grand nombres de données ( images, sons etc.. )
Par exemple :
Sur la page reçue, le navigateur lit et interprète le code HTML : <img src="Images/photo1.jpg" >
Le navigateur envoie une requête au serveur pour obtenir et afficher cette image
Le serveur lui envoie découpée en paquets ( protocole TCP)
« Le protocole TCP utilise le protocole IP pour faire acheminer les paquets »
« Les paquets " voyagent" sous forme de bit sur le réseau, les protocoles Ethernet ou WiFi sont chargés de ce transport »
Lorsque le tout est bien "arrivé", le protocole TCP met fin à la communication
Attention : La perte de paquets
Il se peut, et cela est courant que des paquets se perdent...
Les causes possibles sont nombreuses :
Engorgement d'un serveur
Délai d'attente trop long
etc.
Le protocole TCP contrôle l'envoi et la bonne réception des paquets avec des accusés de réception (ACK : acknowledgement ou acquittement en Français )
Ce processus d'acquittement permet de détecter les pertes de paquets.
Le protocole de bit alterné
Considérons deux ordinateurs A et B.
Au moment d'émettre une trame, A va lui ajouter un bit ( 0 ou 1) appelé drapeau( flag)
Dès cette trame reçue, B envoie un accusé de réception en ajoutant un bit (1 ou 0)
La règle :
la première trame envoyée par A aura pour drapeau 0, dès cette trame reçue par B, ce dernier va envoyer un accusé de réception avec le drapeau 1 (ce 1 signifie "la prochaine trame que A va m'envoyer devra avoir son drapeau à 1").
Dès que A reçoit l'accusé de réception avec le drapeau à 1, il envoie la 2e trame avec un drapeau à 1, et ainsi de suite...
A------Trame1/0---->B
A<-----ACK/1--------B
A------Trame2/1---->B
A<-----ACK/0--------B
A------Trame3/0---->B
A<-----ACK/1--------B
etc...
Le système de drapeau est complété avec un système d'horloge côté émetteur.
Un "chronomètre" est déclenché à chaque envoi de trame, si au bout d'un certain temps, l'émetteur n'a pas reçu un acquittement correct (avec le bon drapeau), la trame précédemment envoyée par l'émetteur est considérée comme perdue et est de nouveau envoyée.
Exemple 1 :
A------Trame1/0 xx B ( la trame 1 s'est perdue )
-----------------------
Le temps est écoulé
A------Trame1/0---->B (la trame1 est renvoyée)
A<-----ACK/1--------B
Exemple 2 :
A------Trame1/0---->B
A< xx ACK/1--------B ( l'accusé réception s'est perdu)
-----------------------
Le temps est écoulé
A------Trame1/0---->B (la trame est renvoyée)
A<-----ACK/1--------B
Complément : Les limites
Fondamental : Pour conclure
Avec TCP/IP, on peut maintenant communiquer de façon fiable entre logiciels situés sur des ordinateurs différents.
TCP/IP est utilisé pour des tas de choses :
Dans votre navigateur, le protocole HTTP utilise le protocole TCP/IP pour envoyer et recevoir des pages HTML, des images GIF, JPG et toutes sortes d'autres données.
FTP est un protocole qui permet d'envoyer et recevoir des fichiers. Il utilise également TCP/IP.
Votre logiciel de courrier électronique utilise les protocoles SMTP et POP3 pour envoyer et recevoir des e mails. SMTP et POP3 utilisent eux aussi TCP/IP.
Votre navigateur (et d'autres logiciels) utilise le protocole DNS pour trouver l'adresse IP d'un ordinateur à partir de son nom (par exemple, de trouver 216.58.208.227 à partir de 'www.google.fr'). Le protocole DNS utilise UDP/IP et TCP/IP en fonction de ses besoins.
Il existe beaucoup de protocoles qui utilisent TCP/IP ou UDP/IP.
L'avantage de TCP sur UDP est que TCP permet des communications fiables. L'inconvénient est qu'il nécessite une négociation ("Bonjour, prêt à communiquer ?" etc.), ce qui prend du temps.
Complément : Qui attribue les adresses IP ?
Tout ordinateur se connecte sur un réseau via une carte réseau.
Cette carte réseau possède un numéro d'identification unique : l'adresse mac.
Notre ordinateur via sa carte se connecte sur un réseau ( via un routeur) qui se connecte sur un autre réseau etc....
Pour simplifier : c'est le serveur DHCP (Dynamic Host Configuration Protocol) qui est chargé de délivrer une adresse IP.
Complément : Comment savoir à quel réseau appartient une machine ?
Une adresse IP est accompagnée d'un masque sous réseau...
Un masque sous réseau est de la forme : 255.0.0.0 ou 255.255.0.0 ou encore 255.255.255.0 ou ...
Par exemple le couple (IP : 192.168.0.5 avec le masque : 255.255.0.0)
Signifie que c'est la machine 0.5 dans le réseau 192.168.0.0
La machine dont l'adresse IP est 192.168.1.6 avec le masque 255.255.0.0, fait partie du même réseau que la précédente.
C'est à dire la machine 1.6 du réseau 192.168.0.0
Alors que la machine 192.168.1.6 avec le masque 255.255.255.0 fait partie d'un autre réseau (192.168.1.0) (c'est la machine 6 du réseau 192.168.1.0)
Par exemple, si je cherche la configuration réseau de l'ordinateur sur lequel j'écris ces lignes je vois :
Suffixe DNS propre à la connexion. . . : home
Adresse IPv6 de liaison locale. . . . .: fe80::a1df:6a03:2f8b:d365%6
: (déjà en place hum...)
Adresse physique . . . . . . . . . . . : AA-22-EF-84-F4-1D :
(adresse mac de ma carte réseau)
Adresse IPv4. . . . . . . . . . . . . .: 192.168.1.21
: (mon adresse IP dans le réseau 192.168.1.0)
Masque de sous-réseau. . . . . . . . . : 255.255.255.0 :
(le masque )
Passerelle par défaut. . . . . . . . . : 192.168.1.1
: (le chef du réseau : ma box , mon plus proche routeur)llons un peu plus loin...
Allons un peu plus loin....
Considérons la machine dont la configuration réseau est :
IP : 172.128.10.5
Masque : 255.255.192.0
Comment déterminer l'adresse du réseau de cette machine ?
L'adresse réseau de cette machine est le résultat du ET logique appliqué entre l'adresse IP et le masque. Euh... c'est à dire ?
Écrivons en binaire l'adresse IP et le masque :
172.128.10.5
s'écrit en binaire :
10101100 . 10000000 . 00001010 . 00000101
255.255.192.0
s'écrit en binaire :
11111111 . 11111111 . 11000000 . 00000000
Posons l'opération du ET logique entre ces deux écritures :
10101100 . 10000000 . 00001010 . 00000101
ET 11111111 . 11111111 . 11000000 . 00000000
--------------------------------------------------
10101100 . 10000000 . 00000000 . 00000000
On met en décimal le résultat :
172.128.0.0
qui est l'adresse du réseau de cette machine
Pour ce réseau, combien d'adresse sont utilisables ?
Reprenons l'écriture en binaire du masque :
11111111 . 11111111 . 11000000 . 00000000
On observe que nous pouvons la découper en deux parties ( en partant de la droite )
Une partie avec que des 0 et le reste
11111111 . 11111111 . 11 <---> 000000 . 00000000
La seconde partie nous permet de savoir combien de machines peut contenir ce réseau.
On peut aller de 000000 . 00000000 à 111111 . 11111111
En décimal : de 0 à 16383
C'est à dire 16384 adresses possibles....
Enfin pas tout à fait :
Il faut retirer l'adresse du réseau lui même : 172.128.0.0
Il faut également retirer (la dernière ) l'adresse de broadcast (adresse réservée pour une diffusion sur toutes les machines du réseau)
Donc en tout : 16382 machines
Quelle est l'adresse de broadcast ?
Pour la déterminer on fait le complément à 255 de la partie sous-réseau..., c'est à dire :
réseau sous-réseau
-------------|----------
réseau : 172 . 128 . 0 . 0
masque : 255 . 255 . 192 . 0
broadcast : 172 . 128 . 63 . 255
Remarque :
Donc en tout 16384 machines
Soit 16382 en retirant la première et la dernière
Donc la plage d'adresse disponible est de 172 . 128 . 0 . 1 à 172 . 128 . 63 . 254
Complément : Le protocole DNS (Domain Name Server)
Dans la réalité, on ne tape pas l'adresse IP de tel ou tel site. On écrit une adresse du type : www.google.fr
C'est un nom de domaine qui est associé à une adresse IP.
Cette association est réalisée par un serveur DNS
Nous verrons un exemple plus loin...