TCP vs UDP

Il existe deux types de trafic de protocole Internet (IP). Elles sont TCP ou Protocole de contrôle de transmission et UDP ou Protocole de datagramme utilisateur. TCP est orienté connexion - une fois la connexion établie, les données peuvent être envoyées de manière bidirectionnelle. UDP est un protocole Internet plus simple et sans connexion. Plusieurs messages sont envoyés sous forme de paquets en morceaux utilisant UDP.

Tableau de comparaison

Tableau comparatif TCP / UDP
TCPUDP
Acronyme de Protocole de contrôle de transmission User Datagram Protocol ou Universal Datagram Protocol
Lien TCP est un protocole orienté connexion. UDP est un protocole sans connexion.
Une fonction Lorsqu'un message se propage 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 un chargement de paquets à un autre et c’est la fin de la relation..
Usage Le protocole TCP convient aux applications exigeant une grande fiabilité et le temps de transmission est relativement moins critique.. UDP convient aux applications nécessitant une transmission rapide et efficace, telles que les jeux. La nature sans état d'UDP est également utile pour les serveurs qui répondent à de petites requêtes provenant d'un grand nombre de clients..
Utilisation par d'autres protocoles HTTP, HTTPs, FTP, SMTP, Telnet DNS, DHCP, TFTP, SNMP, RIP, VOIP.
Commande de paquets de données TCP 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 transfert La vitesse pour TCP est plus lente que UDP. UDP est plus rapide car aucune récupération d'erreur n'est tentée. C'est un protocole "au mieux".
Fiabilité Il existe une garantie absolue que les données transférées restent intactes et arrivent dans le même ordre que celui dans lequel elles ont été envoyées.. Il n'y a aucune garantie que les messages ou les paquets envoyés atteignent du tout.
Taille de l'en-tête La taille de l'en-tête TCP est de 20 octets La taille de l'en-tête UDP est de 8 octets.
Champs d'en-tête communs Port source, port de destination, somme de contrôle Port source, port de destination, somme de contrôle
Streaming de données Les données sont lues sous forme de flux d'octets, aucune indication distinctive n'est transmise aux frontières des messages de signalisation (segment). 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 honorées lors de la réception, ce qui signifie qu'une opération de lecture sur le socket du récepteur produira un message entier tel qu'il a été envoyé à l'origine..
Poids TCP est lourd. Le protocole TCP nécessite trois paquets pour configurer une connexion de socket, avant que toute donnée utilisateur puisse être envoyée. TCP gère la fiabilité et le contrôle de congestion. UDP est léger. Il n'y a pas d'ordonnancement des messages, pas de connexions de suivi, etc. C'est une petite couche de transport conçue sur IP.
Contrôle du flux de données TCP fait le contrôle de flux. Le protocole TCP nécessite trois paquets pour configurer une connexion de socket, avant que toute donnée utilisateur puisse être envoyée. TCP gère la fiabilité et le contrôle de congestion. UDP n'a pas d'option pour le contrôle de flux
Vérification d'erreur TCP vérifie et récupère les erreurs. Les paquets erronés sont retransmis de la source à la destination. UDP vérifie les erreurs mais élimine simplement les paquets erronés. La récupération d'erreur n'est pas tentée.
Des champs 1. 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 destination 1. Longueur, 2. Port source, 3. Port de destination, 4. Check Sum
Reconnaissance Segments de reconnaissance Pas de reconnaissance
Poignée de main SYN, SYN-ACK, ACK Pas de poignée de main (protocole sans connexion)

Contenu: TCP vs UDP

  • 1 Différences dans les fonctionnalités de transfert de données
    • 1.1 Fiabilité
    • 1.2 Commande
    • 1.3 Connexion
    • 1.4 Méthode de transfert
    • 1.5 Détection d'erreur
  • 2 Comment fonctionnent TCP et UDP
  • 3 applications différentes de TCP et UDP
    • 3.1 TCP vs UDP pour les serveurs de jeux
  • 4 références

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

TCP assure une livraison fiable et ordonnée d'un flux d'octets d'un utilisateur à un serveur ou inversement. UDP n'est pas dédié aux connexions bout à bout et la communication ne vérifie pas l'état de préparation 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. Donc, il n'y a absolument aucune donnée manquante. UDP n'assure pas que la communication est parvenue au destinataire car les notions d'accusé de réception, de temporisation et de retransmission ne sont pas présentes.

Commande

TCP les transmissions sont envoyées dans une séquence et elles sont reçues dans la même séquence. Dans le cas où les segments de données arrivent dans le mauvais ordre, TCP réorganise et distribue l'application. Dans le cas de UDP, la séquence de 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 de socket et gère le contrôle de la congestion et la fiabilité. UDP est une couche de transport légère conçue sur une adresse IP. Il n'y a pas de connexions de suivi ou de classement des messages.

Mode de transfert

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

Détection d'erreur

UDP fonctionne sur la base du "meilleur effort". Le protocole prend en charge la détection d'erreur 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 utilisé pour des applications urgentes telles que les jeux ou la transmission vocale. La récupération de 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 d'erreur et la récupération d'erreur. Les erreurs sont détectées via la somme de contrôle et si un paquet est erroné, il n'est pas accusé réception par le destinataire, ce qui déclenche une retransmission par l'expéditeur. Ce mécanisme est appelé accusé de réception positif avec retransmission (PAR)..

Comment fonctionnent TCP et UDP

Une connexion TCP est établie via une liaison à trois voies, qui consiste à initier et à accuser réception 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 de manipulation manuelle pour garantir la fiabilité, la commande ou l'intégrité des données. Ainsi, UDP fournit un service peu fiable et les datagrammes peuvent arriver en panne, paraître dupliqués ou disparaître sans préavis. UDP suppose que la vérification et la correction des erreurs n’est pas nécessaire ou est effectuée dans l’application, ce qui évite la surcharge d’un tel traitement au niveau de l’interface réseau. Contrairement à TCP, le protocole UDP est compatible avec la diffusion de paquets (envoi vers 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, la messagerie électronique et le transfert de fichiers sont des applications courantes utilisant le protocole 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. Le protocole TCP est préférable lorsque des fonctions de correction d'erreur sont requises au niveau de l'interface réseau. Le protocole UDP est largement utilisé par les applications sensibles au facteur temps ainsi que par les serveurs qui répondent à de petites requêtes émanant d'un grand nombre de clients. UDP est compatible avec la diffusion par paquets - envoi à tous sur un réseau et multidiffusion - envoi à tous les abonnés. UDP est couramment utilisé dans les systèmes 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 en utilisant des 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 de TCP dans ce scénario est son algorithme de contrôle de congestion, qui traite la perte de paquets comme un signe de limitation 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 faire des requêtes sans état occasionnelles, initiées par le client, quand il est acceptable d'avoir un délai occasionnel..
  • Utilisez des sockets TCP ordinaires persistants si le client et le serveur envoient indépendamment des paquets mais qu'un délai occasionnel est correct (par exemple, poker en ligne, plusieurs MMO).
  • Utilisez UDP si le client et le serveur peuvent envoyer des paquets indépendamment l'un de l'autre et qu'un décalage occasionnel n'est pas correct (par exemple, la plupart des jeux d'action multijoueurs, certains MMO)..

Références

  • Wikipedia: protocole de contrôle de transmission
  • Wikipedia: protocole de datagramme utilisateur
  • UDP vs TCP pour les serveurs de jeux
  • Le protocole de contrôle de transmission