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).

bannière rappel

Rappel

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é

bannière à retenir

À retenir

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

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.
bannière definition

Définition

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)

Pour ne pas envoyer sans fin des paquets sur le réseau notamment, le protocole TCP fonctionne en mode connecté.

bannière à retenir

À retenir

Le protocole TCP établit une connexion entre deux ordinateurs.

bannière definition

Définition

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.

Poignée de main à trois temps SYN SYN-ACK ACK

Ports et multiplexage

bannière definition

Définition

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.

bannière à retenir

À retenir

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.
bannière à retenir

À retenir

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.

bannière definition

Définition

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.

bannière exemple

Exemple

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.

bannière exemple

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$.

étape 1 poignée de main à trois temps SYN

  • Si le serveur est prêt à établir la connexion, il renvoie un SYN-ACK.

étape 2 poignée de main à trois temps SYN-ACK

  • Le client signale avoir bien reçu le SYN-ACK. La communication est établie.

étape 3 poignée de main à trois temps ACK

Fonctionnalités et limite de TCP

TCP a d’autres fonctionnalités qui fonctionnent aussi sur le principe de bout en bout.

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.
bannière à retenir

À retenir

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

bannière definition

Définition

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.

bannière à retenir

À retenir

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

bannière à retenir

À retenir

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.

bannière definition

Définition

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

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

bannière definition

Définition

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.

bannière attention

Attention

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.

bannière definition

Définition

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

bannière definition

Définition

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.

bannière definition

Définition

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.

attaque de machines zombies d’un seul serveur

Certaines attaques DDOS ont ainsi vu un serveur être saturé de requêtes par plusieurs dizaines de milliers de machines zombies.

bannière attention

Attention

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…).