Maison >interface Web >js tutoriel >Protocole TCP ou UDP

Protocole TCP ou UDP

DDD
DDDoriginal
2024-11-05 11:06:02584parcourir

TCP et UDP fonctionnent au niveau de la couche de transport de la suite de protocoles Internet et sont chargés de faciliter le transfert de données entre les appareils sur un réseau.

TCP (Transmission Control Protocol) est un protocole orienté connexion qui établit un canal fiable entre l'expéditeur et le destinataire.

Il garantit que tous les paquets de données sont livrés avec précision et dans le bon ordre, ce qui le rend idéal pour les applications où l'intégrité des données est cruciale.

UDP (User Datagram Protocol) est un protocole sans connexion qui envoie des données sans établir de connexion dédiée de bout en bout.

Il ne garantit pas la livraison ou la commande des paquets de données, ce qui réduit les frais généraux et permet des vitesses de transmission plus rapides.

Cela rend UDP adapté aux applications où la vitesse est plus critique que la fiabilité.


Comprendre TCP et UDP


TCP vs UDP protocol

A. Protocole de contrôle de transmission (TCP)

Protocole orienté connexion

TCP est un protocole orienté connexion, ce qui signifie qu'il nécessite l'établissement d'une connexion formelle entre l'expéditeur et le destinataire avant le début de tout transfert de données.

Ce processus de configuration est connu sous le nom de « poignée de main à trois ».

Dans cette poignée de main, l'expéditeur et le destinataire échangent des paquets de synchronisation (SYN) et d'accusé de réception (ACK) pour se mettre d'accord sur les numéros de séquence initiaux et les tailles de fenêtre.

L'établissement de cette connexion garantit que les deux parties sont prêtes à communiquer, fournissant ainsi un canal fiable pour l'échange de données.

TCP vs UDP protocol

Transfert de données fiable

L'une des principales forces de TCP est sa capacité à garantir la livraison fiable des paquets de données dans l'ordre exact dans lequel ils ont été envoyés.

Il y parvient grâce à des mécanismes de séquençage et de reconnaissance :

  • Séquençage : Chaque octet de données se voit attribuer un numéro de séquence.

Cela permet au récepteur de réassembler les paquets dans le bon ordre, même s'ils arrivent dans le désordre en raison du routage réseau.

  • Accusés de réception : Le destinataire renvoie un accusé de réception pour les paquets reçus.

Si l'expéditeur ne reçoit pas d'accusé de réception dans un certain délai, il suppose que le paquet a été perdu et le retransmet.

Contrôle des flux et contrôle des congestions

TCP intègre des algorithmes de contrôle de flux et de contrôle de congestion pour gérer efficacement la transmission de données :

  • Contrôle de flux : Ce mécanisme empêche l'expéditeur de submerger le destinataire avec trop de données trop rapidement.

TCP utilise un protocole de fenêtre glissante dans lequel le récepteur annonce la quantité de données qu'il peut accepter en même temps (la taille de la fenêtre).

L'expéditeur doit respecter cette limite, garantissant un flux de données fluide et empêchant un débordement de tampon du côté du destinataire.

  • Contrôle de la congestion : TCP surveille les conditions du réseau pour détecter la congestion du réseau.

Il utilise des algorithmes tels que le démarrage lent, l'évitement de la congestion, la retransmission rapide et la récupération rapide pour ajuster le taux de transmission des données.

Lorsque des pertes de paquets ou des retards sont détectés (signes d'une congestion potentielle), l'expéditeur réduit son débit de transmission pour alléger la tension du réseau.

À l'inverse, si le réseau est clair, TCP augmente progressivement le débit de transmission pour optimiser le débit.


TCP vs UDP protocol

B. Protocole de datagramme utilisateur (UDP)

Protocole sans connexion

UDP est un protocole sans connexion, ce qui signifie qu'il ne nécessite pas de connexion dédiée de bout en bout avant la transmission des données.

Contrairement à TCP, qui établit une connexion via un processus d'établissement de liaison, UDP envoie des paquets de données, appelés datagrammes, directement au destinataire sans aucune configuration de communication préalable.

Ce manque d'établissement de connexion réduit le délai initial et permet à la transmission des données de commencer immédiatement.

L'expéditeur n'attend aucun accusé de réception du destinataire, ce qui rend le processus de communication simple et efficace.

Envoie des données sans établir de connexion préalable

  • Transmission immédiate : Puisqu'il n'y a pas de configuration de connexion, les données peuvent être envoyées dès qu'elles sont prêtes, ce qui est crucial pour les applications urgentes.

  • Aucun processus de prise de contact : Élimine les frais généraux associés à l'établissement et à la terminaison des connexions, réduisant ainsi la latence.

  • Communication sans état : Chaque datagramme est indépendant, contenant toutes les informations nécessaires au routage, ce qui simplifie le protocole et réduit l'utilisation des ressources sur les appareils réseau.

Transfert de données peu fiable mais plus rapide

UDP fournit un service « peu fiable », ce qui, en termes de réseau, signifie :

  • Aucune garantie de livraison des paquets : Les datagrammes peuvent être perdus pendant le transport sans que l'expéditeur en soit informé.

  • Aucune assurance de commande : Les paquets peuvent arriver dans le désordre, car UDP ne les réorganise pas.

  • Aucune correction d'erreur : Contrairement à TCP, UDP ne vérifie pas les erreurs et ne retransmet pas les paquets perdus ou corrompus.

Avantages du manque de fiabilité dans certains contextes

  • Surcharge réduite : En ne suivant pas la livraison des paquets ni en ne gérant pas les accusés de réception, UDP réduit la quantité de données supplémentaires envoyées sur le réseau.

  • Transmission plus rapide : Moins de traitement est requis par l'expéditeur et le destinataire, ce qui permet un débit plus élevé et une latence plus faible.

  • Contrôle au niveau de l'application : Certaines applications préfèrent gérer elles-mêmes la fiabilité et la correction des erreurs plutôt que de s'appuyer sur le protocole de transport.

Faible surcharge

La conception minimaliste d'UDP contribue à sa faible surcharge :

  • Petite taille d'en-tête : L'en-tête d'UDP ne fait que 8 octets de long, contre 20 octets pour TCP. Cette taille plus petite signifie que moins de données sont envoyées avec chaque paquet, économisant ainsi la bande passante.

  • Traitement simplifié : Moins de fonctionnalités signifie moins de travail de calcul pour les équipements réseau et les points de terminaison, ce qui peut améliorer les performances, en particulier sous une charge élevée.

  • Efficacité dans les applications hautes performances : La surcharge réduite rend UDP adapté aux applications qui doivent envoyer rapidement de gros volumes de données et peuvent tolérer une certaine perte de données.


Exemples de cas d'utilisation et applications pratiques


TCP vs UDP protocol

A. Cas d'utilisation de TCP

1. Navigation Web (HTTP/HTTPS)

Nécessite un transfert de données fiable pour le rendu des pages

La navigation Web repose en grande partie sur le transfert précis et complet de données pour afficher correctement les pages Web.

Les protocoles HTTP et HTTPS utilisent TCP pour garantir que tous les éléments d'une page Web, tels que le texte, les images et les scripts, sont livrés de manière fiable et dans le bon ordre.

Les fonctionnalités de vérification et d'accusé de réception des erreurs de TCP garantissent que les paquets manquants ou corrompus sont retransmis, évitant ainsi les images cassées ou le contenu incomplet, ce qui est essentiel pour l'expérience utilisateur et la fonctionnalité.

2. Services de messagerie (SMTP, IMAP)

Assure une livraison complète et ordonnée des messages

Les protocoles de messagerie tels que SMTP (Simple Mail Transfer Protocol) et IMAP (Internet Message Access Protocol) utilisent TCP pour assurer une transmission fiable des messages.

Les e-mails contiennent souvent des informations importantes et des pièces jointes qui doivent arriver intactes.

TCP garantit que toutes les parties d'un e-mail sont reçues dans le bon ordre sans erreurs, préservant ainsi l'intégrité de la communication et évitant la perte de données, ce qui est crucial pour la correspondance personnelle et professionnelle.


B. Cas d'utilisation d'UDP

1. Communications en temps réel (VoIP, vidéoconférence)

Donne la priorité à la vitesse plutôt qu'à la fiabilité pour réduire la latence

Les applications telles que la voix sur IP (VoIP) et la vidéoconférence nécessitent un délai minimal pour faciliter une communication fluide et en temps réel.

UDP est utilisé car il permet de transmettre rapidement des données sans avoir à établir une connexion ou à assurer la livraison des paquets.

Bien qu'UDP ne garantisse pas que tous les paquets arrivent ou sont en ordre, la perte occasionnelle d'un paquet de données peut entraîner un bref problème mais n'affecte pas de manière significative la conversation globale.

La priorité est de réduire la latence pour maintenir un flux naturel de communication.

3. Services de diffusion en continu

Tolère une perte de données mineure pour une lecture continue

Les services de streaming, tels que le streaming vidéo ou audio en direct, utilisent UDP pour envoyer des données en continu aux utilisateurs.

La faible surcharge du protocole permet un flux constant sans les retards associés à la vérification des erreurs et à la retransmission.

Des pertes mineures de paquets peuvent entraîner de légères baisses de qualité mais sont généralement imperceptibles pour l'utilisateur.

L'objectif clé est d'éviter la mise en mémoire tampon et les interruptions, offrant ainsi une expérience de visionnage ou d'écoute ininterrompue.

UDP permet au service de donner la priorité à la lecture continue plutôt qu'à une précision parfaite des données.

2. Jeux en ligne

Nécessite une transmission rapide des données pour une interaction en temps réel

Les jeux en ligne nécessitent un échange de données rapide et continu pour refléter instantanément les actions des joueurs.

UDP est préféré car il offre une communication à faible latence, essentielle pour un gameplay réactif.

Les joueurs peuvent expérimenter des interactions en temps réel sans retards notables.

Bien que certains paquets de données puissent être perdus, le jeu compense généralement en mettant fréquemment à jour l'état du jeu, garantissant ainsi une expérience fluide.

L'accent est mis sur la vitesse plutôt que sur la fiabilité absolue pour garder le gameplay fluide.


Considérations relatives aux performances

Lors du choix entre TCP et UDP, il est essentiel de considérer comment les caractéristiques de chaque protocole affectent les performances du réseau.

Les facteurs clés incluent la latence, le débit, la fiabilité et leur impact sur les fonctionnalités de l'application et l'expérience utilisateur.


Latence et débit

1. Frais généraux TCP

Les paquets d'accusé de réception et les poignées de main peuvent entraîner des retards

TCP est conçu pour la fiabilité et la livraison ordonnée des données, ce qui introduit une surcharge supplémentaire :

  • Poignée de main à trois : Avant le début de la transmission des données, TCP nécessite qu'une connexion soit établie via une poignée de main à trois voies.

Ce processus implique l'échange de paquets SYN (synchronisation) et ACK (accusé de réception), ajoutant ainsi une latence initiale.

  • Accusés et retransmissions : Après avoir établi une connexion, TCP garantit la fiabilité en exigeant des accusés de réception pour les paquets reçus.

Si les accusés de réception ne sont pas reçus, TCP retransmet les données. Même si cela garantit la livraison, cela peut entraîner des retards, notamment dans les réseaux à latence élevée ou sur de longues distances.

  • Contrôle de flux et contrôle de la congestion : TCP ajuste le taux de transmission des données en fonction des conditions du réseau pour éviter la congestion.

Bien que bénéfiques pour la stabilité du réseau, ces mécanismes peuvent réduire le débit pendant les périodes de congestion, affectant ainsi les performances des applications.

2. Efficacité UDP

Une surcharge réduite entraîne une latence plus faible
La conception d'UDP donne la priorité à la vitesse et à l'efficacité :

Aucun établissement de connexion : UDP est sans connexion, il ne nécessite donc pas de poignée de main avant d'envoyer des données.

Cette absence de configuration initiale réduit la latence, permettant une transmission immédiate des données.

Aucun accusé de réception : UDP n'attend pas les accusés de réception et ne retransmet pas les paquets perdus, éliminant ainsi les retards associés à ces processus dans TCP.

Surcharge de protocole minimale : Avec une taille d'en-tête plus petite et moins de mécanismes de protocole, UDP réduit la quantité de données supplémentaires envoyées sur le réseau, augmentant ainsi le débit et diminuant la latence.

B. Compromis entre fiabilité et vitesse

1. Exigences de candidature

Déterminer si la vitesse ou la fiabilité est importante

Le choix entre TCP et UDP dépend des besoins spécifiques de l'application :

  • Quand la fiabilité est cruciale : Les applications telles que les transferts de fichiers, la navigation Web et les services de messagerie nécessitent une fourniture de données complètes et précises.

Dans ces cas, les fonctionnalités de fiabilité de TCP sont essentielles pour garantir l'intégrité et l'ordre des données.

  • Quand la vitesse et la faible latence sont critiques : Les applications telles que le streaming vidéo en direct, les jeux en ligne et la VoIP donnent la priorité à la livraison de données en temps réel plutôt qu'à une fiabilité parfaite.

Ici, la faible surcharge et la transmission plus rapide d'UDP en font le choix préféré, même si certains paquets de données sont perdus en cours de route.

2. Approches hybrides

Utiliser les deux protocoles lorsque cela est approprié

Dans certains scénarios, une combinaison de TCP et d'UDP peut optimiser les performances :

  • Utilisation sélective du protocole : Une application peut utiliser TCP pour certaines fonctions et UDP pour d'autres.

Par exemple, une application de visioconférence pourrait utiliser UDP pour les flux audio et vidéo en temps réel afin de minimiser la latence, tout en utilisant TCP pour l'envoi de messages texte ou de transferts de fichiers au sein de l'application afin de garantir une livraison fiable.

  • Mécanismes de fiabilité personnalisés sur UDP : Les développeurs peuvent mettre en œuvre leurs propres stratégies de vérification des erreurs et de retransmission en plus d'UDP.

Cette approche permet une communication à faible latence avec une fiabilité accrue si nécessaire, adaptée spécifiquement aux exigences de l'application.

  • Connexions parallèles : Certaines applications établissent simultanément des connexions TCP et UDP, en tirant parti des atouts de chaque protocole, le cas échéant.

Implications en matière de sécurité

Lors du choix entre TCP et UDP, il est important de prendre en compte non seulement les performances et la fiabilité, mais également les implications en matière de sécurité.

Chaque protocole possède des vulnérabilités inhérentes qui peuvent être exploitées par des acteurs malveillants.

Comprendre ces vulnérabilités et mettre en œuvre des techniques d'atténuation appropriées est crucial pour maintenir la sécurité du réseau.

Pensé pendant 5 secondes

V. Implications en matière de sécurité

Lors du choix entre TCP et UDP, il est important de prendre en compte non seulement les performances et la fiabilité, mais également les implications en matière de sécurité. Chaque protocole possède des vulnérabilités inhérentes qui peuvent être exploitées par des acteurs malveillants. Comprendre ces vulnérabilités et mettre en œuvre des techniques d'atténuation appropriées est crucial pour maintenir la sécurité du réseau.

A. Problèmes de sécurité TCP

1. Vulnérabilités

Susceptibilité aux attaques par inondation SYN

La nature orientée connexion de TCP nécessite une prise de contact à trois (SYN, SYN-ACK, ACK) pour établir une connexion entre un client et un serveur.

Dans une attaque par inondation SYN, un attaquant exploite ce mécanisme en envoyant un grand nombre de requêtes SYN au serveur mais sans jamais terminer la poignée de main.

Plus précisément, l'attaquant :

  • Envoie de nombreux paquets SYN avec des adresses IP usurpées.

  • Le serveur répond avec des paquets SYN-ACK et alloue des ressources pour chaque connexion semi-ouverte.

  • Étant donné que l'ACK final du client n'arrive jamais, ces connexions restent à moitié ouvertes, consommant la mémoire et la puissance de traitement du serveur.

Le résultat est que les clients légitimes ne peuvent pas établir de connexions car les ressources du serveur sont saturées, ce qui entraîne une condition de déni de service (DoS).

2. Techniques d'atténuation

Mise en place des Cookies SYN

Les cookies SYN sont une technique côté serveur permettant d'atténuer les attaques par inondation SYN sans nécessiter de ressources supplémentaires pour les connexions semi-ouvertes. Voici comment ils fonctionnent :

Lorsqu'un paquet SYN est reçu, au lieu d'allouer des ressources, le serveur encode l'état (tel que le numéro de séquence et d'autres paramètres de connexion) dans le champ du numéro de séquence initial (ISN) du paquet SYN-ACK.

Si le client répond avec un paquet ACK (terminant la prise de contact), le serveur peut reconstruire l'état de connexion d'origine à partir de l'ISN et procéder à l'établissement de la connexion.

Cette approche permet au serveur de gérer un grand nombre de requêtes SYN sans surcharger ses ressources, car il n'a pas besoin de suivre les connexions semi-ouvertes.

Utilisation de pare-feu et de systèmes de prévention des intrusions

Les pare-feu et les systèmes de prévention des intrusions (IPS) peuvent être configurés pour détecter et atténuer les attaques par inondation SYN :

Limitation du débit : Limiter le nombre de paquets SYN provenant d'une seule adresse IP ou d'un sous-réseau peut réduire l'impact d'une attaque.

Seuils et alertes : définir des seuils pour le trafic SYN normal et générer des alertes en cas de dépassement facilite la détection précoce.

Filtrage des adresses IP usurpées : Implémentation d'un filtrage d'entrée et de sortie pour bloquer les paquets avec des adresses IP sources falsifiées.

Ajustements du délai d'expiration

Ajuster le délai d'attente pour les connexions semi-ouvertes peut libérer des ressources plus rapidement :

Réduction du délai d'attente SYN-RECEIVED : Diminution du temps pendant lequel le serveur attend l'ACK final avant d'abandonner la connexion semi-ouverte.

B. Problèmes de sécurité UDP

1. Vulnérabilités

Sujet aux attaques d'amplification comme l'amplification DNS

La nature sans connexion et le manque de validation d'UDP le rendent vulnérable aux attaques par amplification, où un attaquant peut amplifier le volume de trafic dirigé vers une cible, provoquant un déni de service distribué (DDoS). Dans une attaque par amplification DNS :

  • L'attaquant envoie de petites requêtes DNS avec une adresse IP source usurpée (l'adresse IP de la victime) pour ouvrir les résolveurs DNS.
  • Les serveurs DNS répondent avec des réponses DNS plus grandes à l'adresse IP de la victime.
  • Le facteur d'amplification peut être important, car la réponse est bien plus importante que la demande.

Des attaques d'amplification similaires peuvent exploiter d'autres services basés sur UDP tels que NTP (Network Time Protocol) et SSDP (Simple Service Discovery Protocol).

2. Techniques d'atténuation

Limitation du taux

La mise en œuvre d'une limitation de débit contrôle le flux de trafic vers et depuis le réseau :

  • Limitation des requêtes entrantes : Définition de seuils sur le nombre de requêtes par seconde auxquelles un serveur répondra à partir d'une seule IP ou d'un sous-réseau.
  • Limitation des réponses sortantes : Restreindre la vitesse à laquelle le serveur envoie des réponses pour éviter qu'il ne soit utilisé comme amplificateur.

Mécanismes de filtrage robustes

Utilisation de techniques de filtrage avancées pour bloquer le trafic malveillant :

  • Filtrage d'entrée et de sortie : Bloquer les paquets avec des adresses IP usurpées à la périphérie du réseau pour les empêcher d'entrer ou de quitter le réseau.
  • Passerelles de couche application : Utilisation de proxys ou de passerelles capables d'inspecter et de valider les données de la couche application avant de les transmettre.
  • Vérifications de conformité du protocole : Garantir que les demandes entrantes sont conformes au comportement attendu du protocole et éliminer les paquets mal formés ou suspects. Désactivation des services UDP inutilisés

Réduire la surface d'attaque en désactivant les services UDP qui ne sont pas utilisés :

  • Fermeture des ports inutiles : Arrêt des services exécutés sur les ports UDP qui ne sont pas essentiels.

  • Sécurisation des services ouverts : Pour les services nécessaires, mise en œuvre d'authentification et de contrôles d'accès pour éviter les abus.

  • Utilisation de DNSSEC et de la limitation du taux de réponse (RRL)
    Pour les serveurs DNS :

DNSSEC (Domain Name System Security Extensions) : Ajoute une authentification aux réponses DNS, réduisant ainsi l'efficacité des attaques d'usurpation d'identité.

Limitation du taux de réponse : Configuration des serveurs DNS pour limiter le taux de réponses afin d'éviter de participer à des attaques par amplification.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn