TCP contre UDP

Il existe deux types de trafic IP (Internet Protocol). Ce sont TCP ou Transmission Control Protocol et UDP ou User Datagram Protocol . TCP est orienté connexion - une fois la connexion établie, les données peuvent être envoyées bidirectionnelles. UDP est un protocole Internet plus simple et sans connexion. Plusieurs messages sont envoyés sous forme de paquets par blocs à l'aide d'UDP.

Tableau de comparaison

Tableau de comparaison TCP versus UDP
TCP UDP
Acronyme deProtocole de contrôle de transmissionProtocole de datagramme utilisateur ou protocole de datagramme universel
LienTransmission Control Protocol est un protocole orienté connexion.Le protocole de datagramme utilisateur est un protocole sans connexion.
Une fonctionComme un message fait son chemin sur Internet d'un ordinateur à un autre. Ceci est basé sur la connexion.UDP est également un protocole utilisé dans le transport ou le transfert de messages. Ce n'est pas basé sur la connexion, ce qui signifie qu'un programme peut envoyer une charge de paquets à un autre et que ce serait la fin de la relation.
UsageTCP convient aux applications qui nécessitent une grande fiabilité et le temps de transmission est relativement moins critique.UDP convient aux applications qui nécessitent une transmission rapide et efficace, comme les jeux. La nature sans état d'UDP est également utile pour les serveurs qui répondent aux petites requêtes d'un grand nombre de clients.
Utilisation par d'autres protocolesHTTP, HTTPs, FTP, SMTP, TelnetDNS, DHCP, TFTP, SNMP, RIP, VOIP.
Commande de paquets de donnéesTCP réorganise les paquets de données dans l'ordre spécifié.UDP n'a pas d'ordre inhérent car tous les paquets sont indépendants les uns des autres. Si la commande est requise, elle doit être gérée par la couche application.
Vitesse de transfertLa vitesse de TCP est plus lente que UDP.UDP est plus rapide car la récupération d'erreur n'est pas tentée. Il s'agit d'un protocole «au mieux».
FiabilitéIl y a une garantie absolue que les données transférées restent intactes et arrivent dans le même ordre dans lequel elles ont été envoyées.Il n'y a aucune garantie que les messages ou paquets envoyés atteindraient du tout.
Taille de l'en-têteLa taille de l'en-tête TCP est de 20 octetsLa taille de l'en-tête UDP est de 8 octets.
Champs d'en-tête communsPort source, port de destination, somme de contrôlePort source, port de destination, somme de contrôle
Streaming de donnéesLes données sont lues comme un flux d'octets, aucune indication distinctive n'est transmise aux limites du message (segment) du signal.Les paquets sont envoyés individuellement et leur intégrité n'est vérifiée que s'ils arrivent. Les paquets ont des limites définies qui sont respectées à la réception, ce qui signifie qu'une opération de lecture sur la prise du récepteur produira un message entier tel qu'il a été envoyé à l'origine.
PoidsTCP est lourd. TCP nécessite trois paquets pour configurer une connexion socket, avant que des données utilisateur puissent être envoyées. TCP gère la fiabilité et le contrôle de la congestion.UDP est léger. Il n'y a pas de classement des messages, pas de connexions de suivi, etc. Il s'agit d'une petite couche de transport conçue sur IP.
Contrôle du flux de donnéesTCP fait le contrôle de flux. TCP nécessite trois paquets pour configurer une connexion socket, avant que des données utilisateur puissent être envoyées. TCP gère la fiabilité et le contrôle de la congestion.UDP n'a pas d'option pour le contrôle de flux
Vérification des erreursTCP effectue la vérification des erreurs et la récupération des erreurs. Des paquets erronés sont retransmis de la source à la destination.UDP effectue une vérification des erreurs mais supprime simplement les paquets erronés. La récupération d'erreur n'est pas tentée.
Des champs1. Numéro de séquence, 2. Numéro AcK, 3. Décalage de données, 4. Réservé, 5. Bit de contrôle, 6. Fenêtre, 7. Pointeur urgent 8. Options, 9. Rembourrage, 10. Somme de contrôle, 11. Port source, 12. Port de destination1. Longueur, 2. Port source, 3. Port de destination, 4. Somme de contrôle
ReconnaissanceSegments de reconnaissancePas de reconnaissance
Poignée de mainSYN, SYN-ACK, ACKPas de poignée de main (protocole sans connexion)

Différences dans les fonctionnalités de transfert de données

TCP garantit une livraison fiable et ordonnée d'un flux d'octets de l'utilisateur au serveur ou vice versa. UDP n'est pas dédié aux connexions de bout en bout et la communication ne vérifie pas la disponibilité du récepteur.

Fiabilité

TCP est plus fiable car il gère l'accusé de réception des messages et les retransmissions en cas de perte de pièces. Il n'y a donc absolument aucune donnée manquante. UDP ne garantit pas que la communication a atteint le récepteur car les concepts d'accusé de réception, de temporisation et de retransmission ne sont pas présents.

Commande

Les transmissions TCP sont envoyées dans une séquence et elles sont reçues dans la même séquence. En cas d'arrivée de segments de données dans le mauvais ordre, TCP réorganise et livre l'application. Dans le cas d' UDP, la séquence des messages envoyés peut ne pas être conservée lorsqu'elle atteint l'application réceptrice. Il n'y a absolument aucun moyen de prédire l'ordre dans lequel le message sera reçu.

Lien

TCP est une connexion lourde nécessitant trois paquets pour une connexion socket et gère le contrôle de la congestion et la fiabilité. UDP est une couche de transport légère conçue au sommet d'une IP. Il n'y a pas de connexions de suivi ni de commande de messages.

Méthode de transfert

TCP lit les données sous forme de flux d'octets et le message est transmis aux limites des segments. Les messages UDP sont des paquets qui sont envoyés individuellement et à leur arrivée, leur intégrité est vérifiée. Les paquets ont des limites définies tandis que le flux de données n'en a pas.

Détection d'erreur

UDP fonctionne au mieux. Le protocole prend en charge la détection des erreurs via la somme de contrôle, mais lorsqu'une erreur est détectée, le paquet est rejeté. La retransmission du paquet pour la récupération de cette erreur n'est pas tentée. En effet, UDP est généralement destiné aux applications sensibles au temps comme les jeux ou la transmission vocale. La récupération après l'erreur serait inutile car au moment où le paquet retransmis est reçu, il ne sera d'aucune utilité.

TCP utilise à la fois la détection et la récupération des erreurs. Les erreurs sont détectées via la somme de contrôle et si un paquet est erroné, il n'est pas reconnu par le récepteur, ce qui déclenche une retransmission par l'expéditeur. Ce mécanisme de fonctionnement est appelé accusé de réception positif avec retransmission (PAR).

Fonctionnement de TCP et UDP

Une connexion TCP est établie via une prise de contact à trois voies, qui est un processus d'initiation et d'acquittement d'une connexion. Une fois la connexion établie, le transfert de données peut commencer. Après la transmission, la connexion est interrompue par la fermeture de tous les circuits virtuels établis.

UDP utilise un modèle de transmission simple sans dialogues implicites pour garantir la fiabilité, l'ordre ou l'intégrité des données. Ainsi, UDP fournit un service peu fiable et les datagrammes peuvent arriver hors service, apparaître en double ou disparaître sans préavis. UDP suppose que la vérification et la correction des erreurs ne sont pas nécessaires ou effectuées dans l'application, évitant la surcharge d'un tel traitement au niveau de l'interface réseau. Contrairement à TCP, UDP est compatible avec les diffusions de paquets (envoi à tous sur le réseau local) et la multidiffusion (envoi à tous les abonnés).

Différentes applications de TCP et UDP

La navigation sur le Web, le courrier électronique et le transfert de fichiers sont des applications courantes qui utilisent TCP. TCP est utilisé pour contrôler la taille des segments, le taux d'échange de données, le contrôle de flux et la congestion du réseau. TCP est préférable lorsque des fonctions de correction d'erreurs sont requises au niveau de l'interface réseau. UDP est largement utilisé par les applications sensibles au facteur temps ainsi que par les serveurs qui répondent aux petites requêtes d'un grand nombre de clients. UDP est compatible avec la diffusion de paquets - envoi à tous sur un réseau et multidiffusion - envoi à tous les abonnés. UDP est couramment utilisé dans le système de noms de domaine, la voix sur IP, le protocole de transfert de fichiers trivial et les jeux en ligne.

TCP vs UDP pour les serveurs de jeux

Pour les jeux en ligne massivement multijoueurs (MMO), les développeurs doivent souvent faire un choix architectural entre l'utilisation de connexions persistantes UDP ou TCP. Les avantages de TCP sont les connexions persistantes, la fiabilité et la possibilité d'utiliser des paquets de tailles arbitraires. Le plus gros problème avec TCP dans ce scénario est son algorithme de contrôle de congestion, qui traite la perte de paquets comme un signe de limitations de bande passante et limite automatiquement l'envoi de paquets. Sur les réseaux 3G ou Wi-Fi, cela peut entraîner une latence importante.

Le développeur expérimenté Christoffer Lernö a pesé le pour et le contre et recommande les critères suivants pour choisir d'utiliser TCP ou UDP pour votre jeu:

  • Utilisez HTTP sur TCP pour effectuer des requêtes sans état occasionnelles lancées par le client lorsqu'il est acceptable d'avoir un retard occasionnel.
  • Utilisez des sockets TCP simples persistants si le client et le serveur envoient indépendamment des paquets mais qu'un retard occasionnel est OK (par exemple Poker en ligne, de nombreux MMO).
  • Utilisez UDP si le client et le serveur peuvent envoyer indépendamment des paquets et qu'un décalage occasionnel n'est pas correct (par exemple, la plupart des jeux d'action multijoueurs, certains MMO).

Articles Connexes