TCP vs UDP : Démystifier le débat fiabilité/efficacité

Aujourd'hui, nous allons commencer par nous concentrer sur TCP. Plus tôt dans le chapitre sur la superposition, nous avons évoqué un point important. Au niveau de la couche réseau et en dessous, il s'agit davantage de connexions d'hôte à hôte, ce qui signifie que votre ordinateur doit savoir où se trouve un autre ordinateur pour s'y connecter. Cependant, la communication sur un réseau est souvent interprocessus plutôt qu'intermachine. C'est pourquoi le protocole TCP introduit le concept de port. Un port ne peut être occupé que par un seul processus, ce qui permet une communication directe entre les processus applicatifs exécutés sur différents hôtes.

La couche transport a pour mission de fournir des services de communication directe entre les processus applicatifs exécutés sur différents hôtes ; c'est pourquoi on parle de protocole de bout en bout. La couche transport masque les détails essentiels du réseau, permettant ainsi au processus applicatif de percevoir l'existence d'un canal de communication logique de bout en bout entre les deux entités de la couche transport.

TCP (Transmission Control Protocol) est un protocole orienté connexion. Cela signifie qu'avant qu'une application puisse envoyer des données à l'autre, les deux processus doivent établir une liaison. Cette liaison est un processus logiquement connecté qui garantit une transmission fiable et une réception ordonnée des données. Lors de cette liaison, une connexion est établie entre les hôtes source et destination par l'échange d'une série de paquets de contrôle et la définition de paramètres et de règles garantissant la réussite de la transmission des données.

Qu'est-ce que TCP ? (MylinkingPrise réseauetCourtier de paquets réseaupourrait traiter à la fois les paquets TCP ou UDP)
TCP (Transmission Control Protocol) est un protocole de communication de couche transport basé sur le flux d'octets, fiable et orienté connexion.

Orienté connexion:Orienté connexion signifie que la communication TCP est de type un à un, c'est-à-dire une communication point à point de bout en bout, contrairement à UDP, qui peut envoyer des messages à plusieurs hôtes en même temps, de sorte qu'une communication un à plusieurs ne peut pas être réalisée.
Fiable:La fiabilité du protocole TCP garantit que les paquets sont livrés de manière fiable au récepteur, quelles que soient les modifications de la liaison réseau, ce qui rend le format de paquet du protocole TCP plus complexe que celui de l'UDP.
Basé sur le flux d'octets:La nature basée sur le flux d'octets de TCP permet la transmission de messages de toute taille et garantit l'ordre des messages : même si le message précédent n'a pas été entièrement reçu, et même si les octets suivants ont été reçus, TCP ne les livrera pas à la couche application pour traitement et supprimera automatiquement les paquets en double.
Une fois la connexion établie entre les hôtes A et B, l'application n'a plus qu'à utiliser la ligne de communication virtuelle pour envoyer et recevoir des données, assurant ainsi leur transmission. Le protocole TCP est responsable du contrôle des tâches telles que l'établissement, la déconnexion et le maintien de la connexion. Il est à noter que la ligne virtuelle sert uniquement à établir une connexion, tandis que la connexion TCP indique uniquement que les deux parties peuvent commencer la transmission de données et garantit la fiabilité de ces dernières. Les nœuds de routage et de transport sont gérés par les périphériques réseau ; le protocole TCP lui-même n'intervient pas dans ces détails.

Une connexion TCP est un service full duplex, ce qui signifie que les hôtes A et B peuvent transmettre des données dans les deux sens. Autrement dit, les données peuvent être transférées entre les hôtes A et B dans un flux bidirectionnel.

TCP stocke temporairement les données dans le tampon d'envoi de la connexion. Ce tampon d'envoi est l'un des caches configurés lors de la négociation à trois. TCP transmet ensuite les données du cache d'envoi au cache de réception de l'hôte de destination au moment opportun. En pratique, chaque homologue dispose d'un cache d'envoi et d'un cache de réception, comme illustré ici :

TCP-UDP

Le tampon d'envoi est une zone mémoire gérée par l'implémentation TCP côté émetteur, utilisée pour stocker temporairement les données à envoyer. Lors de l'établissement d'une connexion par protocole à trois, le cache d'envoi est configuré et utilisé pour stocker les données. Le tampon d'envoi est ajusté dynamiquement en fonction de la congestion du réseau et des retours du récepteur.

Un tampon de réception est une zone mémoire gérée par l'implémentation TCP côté réception, utilisée pour stocker temporairement les données reçues. TCP stocke les données reçues dans le cache de réception et attend leur lecture par l'application supérieure.

Notez que la taille du cache d'envoi et du cache de réception est limitée. Lorsque le cache est plein, TCP peut adopter certaines stratégies, telles que le contrôle de congestion, le contrôle de flux, etc., pour garantir une transmission de données fiable et la stabilité du réseau.

Dans les réseaux informatiques, la transmission de données entre hôtes s'effectue au moyen de segments. Qu'est-ce qu'un segment de paquet ?

TCP crée un segment TCP, ou segment de paquet, en divisant le flux entrant en blocs et en ajoutant des en-têtes TCP à chaque bloc. Chaque segment ne peut être transmis que pendant une durée limitée et ne peut dépasser la taille maximale de segment (MSS). En aval, un segment de paquet traverse la couche liaison. Cette couche possède une unité de transmission maximale (MTU), qui correspond à la taille maximale du paquet pouvant traverser la couche liaison de données. L'unité de transmission maximale est généralement liée à l'interface de communication.

Alors, quelle est la différence entre MSS et MTU ?

Dans les réseaux informatiques, l'architecture hiérarchique est essentielle car elle prend en compte les différences entre les différents niveaux. Chaque couche porte un nom différent ; dans la couche transport, les données sont appelées « segment » et dans la couche réseau, « paquet IP ». Par conséquent, l'unité de transmission maximale (MTU) peut être considérée comme la taille maximale d'un paquet IP pouvant être transmis par la couche réseau, tandis que la taille maximale de segment (MSS) est un concept de la couche transport qui désigne la quantité maximale de données pouvant être transmise simultanément par un paquet TCP.

Notez que lorsque la taille maximale de segment (MSS) est supérieure à l'unité de transmission maximale (MTU), la fragmentation IP est effectuée au niveau de la couche réseau, et TCP ne divise pas les données volumineuses en segments adaptés à la taille MTU. Une section de la couche réseau est dédiée à la couche IP.

Structure du segment de paquet TCP
Explorons le format et le contenu des en-têtes TCP.

Segment TCP

Numéro de séquenceNombre aléatoire généré par l'ordinateur lors de l'établissement de la connexion TCP. Ce numéro de séquence est envoyé au récepteur via le paquet SYN. ​​Lors de la transmission, l'émetteur incrémente le numéro de séquence en fonction de la quantité de données envoyées. Le récepteur détermine l'ordre des données en fonction du numéro de séquence reçu. Si les données sont hors ordre, le récepteur les réorganise pour garantir leur ordre.

Numéro d'accusé de réceptionIl s'agit d'un numéro de séquence utilisé par TCP pour accuser réception des données. Il indique le numéro de séquence des données suivantes que l'expéditeur s'attend à recevoir. Dans une connexion TCP, le récepteur détermine les données reçues en fonction du numéro de séquence du segment de paquet de données reçu. Lorsque le récepteur reçoit les données, il envoie un paquet ACK à l'expéditeur, contenant le numéro d'accusé de réception. Après réception du paquet ACK, l'expéditeur peut confirmer la réception des données avant d'accuser réception du numéro de réponse.

Les bits de contrôle d'un segment TCP incluent les éléments suivants :

bit ACKLorsque ce bit est à 1, cela signifie que le champ de réponse d'accusé de réception est valide. TCP spécifie que ce bit doit être défini à 1, sauf pour les paquets SYN, lors de l'établissement initial de la connexion.
Morceau RST: Lorsque ce bit est à 1, cela indique qu'il y a une exception dans la connexion TCP et que la connexion doit être forcée à être déconnectée.
bit SYN: Lorsque ce bit est défini sur 1, cela signifie que la connexion doit être établie et que la valeur initiale du numéro de séquence est définie dans le champ du numéro de séquence.
Morceau FIN:Lorsque ce bit est à 1, cela signifie qu'aucune autre donnée ne sera envoyée à l'avenir et que la connexion est souhaitée.
Les différentes fonctions et caractéristiques du TCP sont incarnées par la structure des segments de paquets TCP.

Qu'est-ce que l'UDP ? (Mylinking's)Prise réseauetCourtier de paquets réseaupourrait traiter les paquets TCP ou UDP)
Le protocole UDP (User Datagram Protocol) est un protocole de communication sans connexion. Comparé à TCP, il ne propose pas de mécanismes de contrôle complexes. Il permet aux applications d'envoyer directement des paquets IP encapsulés sans établir de connexion. Lorsque le développeur choisit d'utiliser UDP plutôt que TCP, l'application communique directement avec l'IP.

Le nom complet du protocole UDP est « User Datagram Protocol », et son en-tête ne comporte que huit octets (64 bits), ce qui est très concis. Le format de l'en-tête UDP est le suivant :

Segment UDP

Ports de destination et source:Leur objectif principal est d’indiquer à quel processus UDP doit envoyer des paquets.
Taille du paquet: Le champ de taille du paquet contient la taille de l'en-tête UDP ainsi que la taille des données
Somme de contrôle:Conçu pour assurer une livraison fiable des en-têtes et des données UDP. Le rôle de la somme de contrôle est de détecter si une erreur ou une corruption s'est produite lors de la transmission d'un paquet UDP afin de garantir l'intégrité des données.

Différences entre TCP et UDP dans MylinkingPrise réseauetCourtier de paquets réseaupourrait traiter à la fois les paquets TCP ou UDP
TCP et UDP diffèrent sur les aspects suivants :

TCP contre UDP

ConnexionTCP est un protocole de transport orienté connexion qui nécessite l'établissement d'une connexion avant le transfert de données. UDP, en revanche, ne nécessite pas de connexion et peut transférer les données immédiatement.

Objet de serviceTCP est un service bidirectionnel, c'est-à-dire qu'une connexion ne dispose que de deux points de terminaison pour communiquer entre eux. Cependant, UDP prend en charge les communications interactives bidirectionnelles, bidirectionnelles et multidirectionnelles, permettant ainsi de communiquer avec plusieurs hôtes simultanément.

FiabilitéTCP assure la livraison fiable des données, garantissant qu'elles sont exemptes d'erreurs, de pertes, non dupliquées et arrivent à la demande. UDP, en revanche, fait de son mieux et ne garantit pas une livraison fiable. UDP peut subir des pertes de données et d'autres problèmes lors de la transmission.

Contrôle de la congestion, contrôle du fluxTCP dispose de mécanismes de contrôle de congestion et de flux, permettant d'ajuster le débit de transmission des données en fonction des conditions du réseau afin de garantir la sécurité et la stabilité de la transmission. UDP ne dispose pas de mécanismes de contrôle de congestion ni de flux ; même en cas de forte congestion du réseau, le débit d'envoi UDP ne sera pas ajusté.

Frais généraux d'en-têteTCP possède un en-tête long, généralement de 20 octets, qui augmente avec l'utilisation de champs d'options. UDP, en revanche, possède un en-tête fixe de seulement 8 octets, ce qui réduit la surcharge d'en-tête.

TCP contre UDP

Scénarios d'application TCP et UDP :
TCP et UDP sont deux protocoles de couche de transport différents et présentent certaines différences dans les scénarios d'application.

TCP étant un protocole orienté connexion, il est principalement utilisé dans les situations où une transmission fiable des données est requise. Voici quelques cas d'utilisation courants :

Transfert de fichiers FTP: TCP peut garantir que les fichiers ne sont pas perdus et corrompus pendant le transfert.
HTTP/HTTPS: TCP garantit l’intégrité et l’exactitude du contenu Web.
Étant un protocole sans connexion, UDP n'offre aucune garantie de fiabilité, mais offre des caractéristiques d'efficacité et de temps réel. UDP est adapté aux scénarios suivants :

Trafic à faible paquet, tel que DNS (Domain Name System):Les requêtes DNS sont généralement des paquets courts et UDP peut les terminer plus rapidement.
Communication multimédia telle que la vidéo et l'audio:Pour la transmission multimédia avec des exigences élevées en temps réel, UDP peut fournir une latence plus faible pour garantir que les données peuvent être transmises en temps opportun.
Communication par diffusion: UDP prend en charge la communication un-à-plusieurs et plusieurs-à-plusieurs et peut être utilisé pour la transmission de messages de diffusion.

Résumé
Aujourd'hui, nous avons étudié TCP. TCP est un protocole de communication de couche transport, orienté connexion, fiable et basé sur les flux d'octets. Il assure la transmission fiable et la réception ordonnée des données en établissant une connexion, un protocole de transfert et un accusé de réception. Le protocole TCP utilise des ports pour assurer la communication entre les processus et fournit des services de communication directe pour les processus applicatifs exécutés sur différents hôtes. Les connexions TCP sont en duplex intégral, permettant des transferts de données bidirectionnels simultanés. En revanche, UDP est un protocole de communication sans connexion, qui n'offre aucune garantie de fiabilité et convient à certains scénarios exigeant un temps réel élevé. TCP et UDP diffèrent notamment en termes de mode de connexion, d'objet de service, de fiabilité, de contrôle de congestion, de contrôle de flux, et leurs scénarios d'application sont également différents.


Date de publication : 03/12/2024