Apport de connaissances : Protocole TCP
Le protocole UDP de la couche transport est simple à mettre en oeuvre, mais il a en contre-partie des inconvénients :
- un paquet, émis selon le protocole UDP, peut être perdu, et cela sans notification particulière pour le logiciel à l'origine de l'envoi ;
- si un logiciel envoie deux paquets selon le protocole UDP, il n'y aucune garantie que le logiciel distant reçoive ces paquets dans le même ordre.
Le protocole TCP
Le protocole TCP permet :
- la réception de paquets dans l'ordre ;
- de détecter les erreurs de transmission ;
- de retransmettre automatiquement les paquets perdus ou corrompus.
Une connexion TCP entre un serveur et un client est mise en place en 3 temps :

- le serveur choisit un numéro de séquence et envoie au client un paquet nommé SYN indiquant le numéro de séquence choisie ;
- le client réceptionne ce paquet et choisit à son tour un numéro puis renvoie un paquet SYN-ACK contenant le numéro de séquence du serveur incrémenté de 1 et le numéro choisi ;
- à la réception de ce paquet le serveur est connecté et renvoie un dernier paquet ACK au client contenant les numéros de séquences incrémentés.
- à la réception de ce paquet le client est connecté.
A l'issue de ce processus, le serveur et le client partage une information commune : une paire de nombres.
Le serveur peut alors envoyer les paquets de données en poursuivant la numérotation (incrémentation correspondant à la taille en octets des paquets échangés).

Les avantages sont que :
- si le client reçoit les trois paquets dans le désordre, il peut les réorganiser selon leur numéro ;
- si le client ne reçoit pas un paquet, le serveur peut choisir de le réémettre.