Routage (TCP)
Introduction :
Utilisé avec le protocole IP, le protocole TCP (Transmission Control Protocol) est chargé de s’assurer de la fiabilité des communications sur le réseau.
Nous allons voir dans ce cours les bases du fonctionnement de ce protocole et ses différentes fonctionnalités.
Puis, dans la troisième partie, nous parlerons rapidement de cybersécurité en présentant les attaques en déni de service (DoS et DDoS).
Le protocole TCP est un protocole de la couche transport. Il se charge de prendre les données qu’une application veut transmettre à une autre, les segmente en paquets, leur ajoute un en-tête, puis confie au protocole IP le soin de les faire parvenir à leur destinataire.
Garantie de fiabilité
Garantie de fiabilité
Nous l’avons vu, le protocole IP n’est pas fiable : il ne garantit pas que les paquets envoyés arriveront réellement à leur destinataire.
- Le protocole TCP se charge de garantir cette fiabilité.
Acquittements de bout en bout
Acquittements de bout en bout
Le protocole TCP a été créé en s’inspirant du protocole de communication du réseau français Cyclades.
- L’innovation de Cyclades, qui a été reprise par TCP, était de proposer un modèle de réseau qui fonctionnait sur le principe de bout en bout pour assurer la fiabilité de la communication.
Principe de bout en bout :
Le principe de bout en bout (end-to-end principle) est un principe de communication qui repose sur l’émetteur et le récepteur, et non sur les intermédiaires, pour assurer les spécificités de la communication.
En pratique, cela signifie que c’est à l’émission et à la réception que sont gérées les questions de fiabilité, sans supposer que les intermédiaires seront fiables.
Le protocole TCP dispose d’un système d’accusés de réception – on parle d’acquittements (ou ACK, « acknowledgement »).
- À chaque paquet envoyé, l’émetteur attend l’accusé de réception, sans lequel il renvoie le paquet au bout d’un certain temps.
Le principe de bout en bout est indispensable pour assurer la fiabilité des communications sur Internet. En effet, Internet est un agrégat de réseaux physiques différents ne pouvant garantir fiabilité des communications.
Un protocole connecté (SYN)
Un protocole connecté (SYN)
Pour ne pas envoyer sans fin des paquets sur le réseau notamment, le protocole TCP fonctionne en mode connecté.
Le protocole TCP établit une connexion entre deux ordinateurs.
Client et serveur :
Dans un réseau, on appelle client l’ordinateur qui initie la connexion, l’autre est le serveur.
- Le premier message du client envoyé par le protocole est toujours une demande de synchronisation (SYN).
- Le serveur qui la reçoit renvoie en retour une demande de confirmation (SYN-ACK).
- Cette demande sera elle-même confirmée en retour (ACK).
- Ce procédé, appelé « poignée de main à trois temps » (« three-way handshake »), permet aux ordinateurs d’établir une connexion afin de s’échanger des informations pour le bon déroulé de la connexion.
Ports et multiplexage
Ports et multiplexage
Le multiplexage permet de transférer plusieurs informations sur un seul support de transmission.
- Dans le modèle TCP/IP, le multiplexage est géré par un système de ports, qui sont les « portes d’entrée réseau » d’un ordinateur.
En pratique, les paquets adressés à un ordinateur disposent d’un numéro de port, présent dans l’en-tête TCP du paquet.
Un port ouvert est en attente de recevoir des paquets.
Pour ouvrir une connexion TCP :
- le client ouvre un de ses ports pour être celui de la connexion et l’indique dans le SYN ;
- le serveur doit avoir un port déjà ouvert, en attente de connexion.
- Le port du client est libéré quand la connexion se termine par une autre poignée de main entre le client et le serveur.
Une connexion TCP est donc identifiée par quatre éléments : l’adresse IP et le port du serveur, l’adresse IP et le port du client.
Socket :
On appelle socket un des côtés d’une connexion TCP comprenant l’adresse IP et le port du client ou du serveur.
Certains ports, de 0 à 1023, ont été définis par l’ICANN comme des ports bien connus dédiés à certains protocoles de la couche application. Les serveurs ouvrant ces ports s’attendent à des données utilisant ces protocoles (encapsulées dans le protocole TCP puis IP), ainsi, les clients savent à quel port demander l’ouverture d’une connexion.
Le port $80$ est dédié au protocole HTTP, le port $21$ est dédié à FTP, etc.
- Les ports qui ne sont pas définis par l’ICANN sont appelés ports dynamiques ou privés.
Illustrons les étapes d’une connexion TCP par un exemple.
- Une utilisatrice d’Internet veut consulter ses mails.
Son appareil (le client) a l’adresse $10.92.2.\text{XXX}$, et son serveur mail a comme adresse $121.134.18.\text{Y}$. L’application de messagerie utilise le protocole IMAP, auquel est dédié le port $143$. L’appareil choisit un de ses ports dynamiques, disons le port $4390$.
- Le client va donc envoyer un message SYN avec le protocole TCP, indiquant son adresse et son port au serveur : $10.92.2.\text{XXX}$:$4390$ pour $121.134.18.\text{Y}$:$143$.
- Si le serveur est prêt à établir la connexion, il renvoie un SYN-ACK.
- Le client signale avoir bien reçu le SYN-ACK. La communication est établie.
Fonctionnalités et limite de TCP
Fonctionnalités et limite de TCP
TCP a d’autres fonctionnalités qui fonctionnent aussi sur le principe de bout en bout.
Ordonnancement
Ordonnancement
Le protocole IP fonctionnant sur un principe de sauts successifs de routeur en routeur, les paquets d’un même message peuvent emprunter des chemins différents pour arriver au destinataire.
- Il n’y a donc aucune garantie que les paquets arrivent dans l’ordre dans lequel ils sont ont été envoyés.
Le protocole TCP stocke les paquets reçus dans un tampon de réception pour les remettre dans l’ordre avant de les confier à la couche application.
Gestion du flux
Gestion du flux
Congestion :
Une congestion du réseau arrive quand les ordinateurs envoient plus de paquets que le réseau n’est capable d’en transmettre. Cela pose de nombreux problèmes de perte de paquets et de ralentissement.
TCP dispose d’un système de gestion du flux de données.
Des algorithmes sophistiqués évaluent grâce au ACK l’état de la connexion et la taille du tampon de réception et décident de la vitesse à laquelle envoyer ou renvoyer les paquets pour éviter :
- les congestions du réseau ;
- de surcharger le tampon de réception de l’autre ordinateur.
Une limite : l’absence de garantie temporelle
Une limite : l’absence de garantie temporelle
Le protocole TCP garantit qu’un paquet finira toujours par arriver, sauf en cas de panne matérielle rendant la communication impossible. En revanche, il ne garantit pas la vitesse à laquelle le paquet finira par arriver.
Avant la démocratisation du streaming, les fichiers audio et vidéo devaient être téléchargés entièrement avant d’être lus.
Streaming :
Le streaming, ou lecture en continu, est une pratique de communication qui consiste à lire un contenu audiovisuel en même temps que celui-ci est diffusé.
Avec l’arrivée des plateformes de streaming comme YouTube et Dailymotion, puis Netflix (vidéo), Deezer et Spotify (musique) dans les années 2000, le streaming s’est imposé comme le mode principal de consommation de contenus audiovisuels sur Internet.
- Or, si le protocole TCP est très pratique pour la plupart des usages d’Internet, il n’est pas adapté au streaming ni aux discussions en téléconférence.
En effet, dans ces deux cas, la vitesse de la transmission d’information est plus importante que l’assurance d’avoir bien reçu tous les paquets. L’utilisateur ne se rend pas compte qu’il n’a pas reçu quelques images de la vidéo, mais la latence impliquée par les protocoles assurant la fiabilité est gênante.
Attaques en déni de service
Attaques en déni de service
Pour conclure ce cours, nous allons parler de cybersécurité et donner un exemple d’attaque informatique qui utilise les propriétés du protocole TCP : l’attaque SYN-flood, qui fait partie de la catégorie des attaques en déni de service.
Attaques de type SYN-flood
Attaques de type SYN-flood
Attaque en déni de service :
Une attaque en déni de service (ou attaque DoS, pour Denial of Service) est une attaque informatique qui vise à saturer un service de requêtes pour le rendre inopérant.
Toutes les attaques DoS n’utilisent pas les propriétés de TCP. Certaines visent les serveurs dédiés au protocole DNS, par exemple.
Attaque SYN-flood :
Le SYN-flood est un type d’attaque informatique qui consiste à envoyer de manière répétée des SYN (des demandes d’ouverture de connexion TCP) à un serveur.
Le but est que le serveur ouvre tellement de semi-connections en attente du troisième message de la poignée de mains, qu’il consomme toutes ses ressources et ne puisse plus en allouer aux utilisateurs qui voudraient légitimement se connecter.
Ce type d’attaque était très populaire dans les années 1990, mais de nombreuses contre-mesures existent aujourd’hui et la plupart des serveurs sont sécurisés contre ce type d’attaques.
Une des précautions que l’on peut prendre, par exemple, est le limiter le nombre de SYN que le serveur peut accepter venant de la même adresse IP.
Machine zombie
Machine zombie
Attaque distribuée en déni de service :
Une attaque distribuée en déni de service (DDoS) est une attaque DoS provenant de plusieurs sources (donc aux adresses IP différentes) se coordonnant pour attaquer la cible en même temps.
La plupart des attaques DDoS sont le fruit d’un seul attaquant qui utilise plusieurs ordinateurs sous son contrôle, ou en partie sous son contrôle.
Machine zombie :
Une machine zombie est un appareil informatique contrôlé par un cybercriminel à l’insu du propriétaire de la machine grâce à un virus informatique.
Certaines attaques DDOS ont ainsi vu un serveur être saturé de requêtes par plusieurs dizaines de milliers de machines zombies.
Souvent, le possesseur d’une machine zombie ne se rend compte de rien, sinon d’une baisse des performances de sa machine, car le virus ne détourne qu’une partie des capacités de la machine au bénéfice du cybercriminel.
La campagne d’attaques DDoS menées par les activistes d’Anonymous entre 2008 et 2012 est une exception. Cette campagne a vu des milliers de sympathisants se coordonner pour participer volontairement à des attaques DDoS avec leurs ordinateurs.
Conclusion :
Nous avons vu précédemment comment le protocole IP permettait d’envoyer un message à une adresse donnée.
Dans ce cours, nous avons expliqué comment le protocole TCP permettait d’établir des connections fiables en s’appuyant sur IP.
Il nous reste à voir comment des applications peuvent se reposer sur TCP/IP pour proposer aux utilisateurs d’Internet les différents services que nous connaissons (mail, web, transfert de fichiers, streaming…).