TCP VS. UDP

TCP VS. UDP

Il existe deux types de trafic de protocole Internet (IP). Ils sont TCP ou Protocole de contrôle de la transmission et UDP ou Protocole de datagramme utilisateur. TCP est orienté vers la connexion - Une fois une 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 en morceaux en utilisant UDP.

Tableau de comparaison

Différences - similitudes - TCP contre UDP Tableau de comparaison UDP
TCPUDP
Acronyme pour Protocole de contrôle de la transmission Protocole de datagramme des utilisateurs ou protocole universel de datagramme
Connexion Le protocole de contrôle de transmission est un protocole orienté connexion. Le protocole de datagram utilisateur est un protocole sans connexion.
Fonction Comme un message traverse Internet d'un ordinateur à un autre. Ceci est basé sur la connexion. UDP est également un protocole utilisé dans le transport de messages ou le transfert. Ce n'est pas basé sur la connexion, ce qui signifie qu'un programme peut envoyer un chargement de paquets à un autre et ce serait la fin de la relation.
Usage TCP est adapté aux applications qui nécessitent une forte 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 apatride de l'UDP est également utile pour les serveurs qui répondent aux petites requêtes 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 la commande spécifiée. 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 d'application.
Vitesse de transfert La vitesse pour TCP est plus lente que UDP. UDP est plus rapide car la récupération des erreurs n'est pas tentée. C'est un protocole de "meilleur effort".
Fiabilité Il existe une garantie absolue que les données transférées restent intactes et arrivent dans le même ordre dans lequel il a été envoyé. Il n'y a aucune garantie que les messages ou les paquets envoyés atteindront du tout.
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 vérification Port source, port de destination, somme de vérification
Streaming de données Les données sont lues comme un flux d'octets, aucune indication distinctive n'est transmise aux limites du message du signal (segment). Les paquets sont envoyés individuellement et ne sont vérifiés que l'intégrité uniquement s'ils arrivent. Les paquets ont des limites définies qui sont honorées à la réception, ce qui signifie qu'une opération de lecture sur la prise de récepteur produira un message entier comme il a été envoyé à l'origine.
Lester TCP est lourd de poids. TCP nécessite trois paquets pour configurer une connexion à socket, avant que toute donnée utilisateur puisse être envoyée. TCP gère la fiabilité et le contrôle de la congestion. UDP est léger. Il n'y a pas de commande de messages, pas de connexions de suivi, etc. C'est une petite couche de transport conçue au-dessus de l'IP.
Contrôle du flux de données TCP fait le contrôle du débit. TCP nécessite trois paquets pour configurer une connexion à socket, avant que toute donnée utilisateur puisse être envoyée. TCP gère la fiabilité et le contrôle de la congestion. L'UDP n'a pas d'option pour le contrôle du débit
Vérification des erreurs TCP fait la vérification des erreurs et la récupération des erreurs. Les paquets erronés sont retransmis de la source à la destination. UDP fait des erreurs de vérification mais élimine simplement les paquets erronés. La récupération des erreurs n'est pas tentée.
Des champs 1. Numéro de séquence, 2. Numéro ACK, 3. Décalage des données, 4. Réservé, 5. Bit de contrôle, 6. Fenêtre, 7. Pointeur urgent 8. Options, 9. Rembourrage, 10. Vérifier la somme, 11. Port source, 12. Le port de destination 1. Longueur, 2. Port source, 3. Port de destination, 4. Vérifier la somme
Reconnaissance Segments de reconnaissance Aucune reconnaissance
Poignée de main Syn, syn-ar, ack Pas de poignée de main (protocole sans connexion)

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

TCP Assure une livraison fiable et commandé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 préparation du récepteur.

Fiabilité

TCP est plus fiable car il gère la reconnaissance du message et les retransmissions en cas de pièces perdues. Ainsi, il n'y a absolument pas de données manquantes. UDP ne garantit pas que la communication est atteinte au récepteur car les concepts de reconnaissance, de temps sortie et de retransmission ne sont pas présents.

Commande

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

Connexion

TCP est une connexion de poids lourde nécessitant trois paquets pour une connexion à douille et gère le contrôle et la fiabilité de la congestion. 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 ou de commande de messages.

Méthode de transfert

TCP Lit des données comme un flux d'octets et le message est transmis aux limites du segment. UDP Les messages sont des paquets envoyés individuellement et à l'arrivée sont vérifiés pour leur intégrité. Les paquets ont défini les limites tandis que le flux de données n'a pas.

Détection d'erreur

UDP travaille sur une base "le meilleur effort". 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 jeté. La retransmission du paquet pour la récupération de cette erreur n'est pas tentée. En effet. 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 des erreurs et la récupération des erreurs. Les erreurs sont détectées via une somme de contrôle et si un paquet est erroné, il n'est pas reconnu par le récepteur, qui déclenche une retransmission par l'expéditeur. Ce mécanisme de fonctionnement est appelé reconnaissance positive avec retransmission (PAR).

Comment fonctionnent TCP et UDP

Une connexion TCP est établie via une poignée de main à trois, qui est un processus d'initiation et de reconnaissance d'une connexion. Une fois la connexion établie, le transfert de données peut commencer. Après la transmission, la connexion est terminée en fermant tous les circuits virtuels établis.

UDP utilise un modèle de transmission simple sans dialogues de partage implicite 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 hors service, apparaître dupliqué ou disparaître sans préavis. UDP suppose que la vérification des erreurs et la correction ne sont pas nécessaires ou effectuées dans l'application, en évitant les frais généraux d'un tel traitement au niveau de l'interface réseau. Contrairement à TCP, UDP est compatible avec les émissions de paquets (envoi à tous sur réseau local) et multidiffusion (envoyer à tous les abonnés).

Différentes applications de TCP et UDP

La navigation Web, le transfert de messagerie et de fichiers sont des applications courantes qui utilisent TCP. TCP est utilisé pour contrôler la taille du segment, le taux d'échange de données, le contrôle du flux et la congestion du réseau. TCP est préféré lorsque les installations de correction d'erreur sont requises au niveau de l'interface réseau. L'UDP est largement utilisé par les applications sensibles au temps ainsi que par des 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 jeu

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 du TCP sont des 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 la congestion, qui traite la perte de paquets comme un signe de limitations de la bande passante et explame automatiquement l'envoi de paquets. Sur les réseaux 3G ou Wi-Fi, cela peut provoquer une latence importante.

Le développeur expérimenté Christoffer Lernö a pesé les avantages et les inconvénients 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 apatrides occasionnelles et initiées par le client quand il est normal d'avoir un retard occasionnel.
  • Utilisez des sockets TCP simples persistants si le client et le serveur envoient indépendamment des paquets mais un délai occasionnel est OK (E.g. Poker en ligne, plusieurs MMO).
  • Utilisez UDP si le client et le serveur peuvent envoyer indépendamment les paquets et le décalage occasionnel n'est pas OK (E.g. La plupart des jeux d'action multijoueur, quelques MMO).