Le protocole de datagramme utilisateur est comme «Ugly Duckling» de Hans Christian Andersen. Après des décennies d’être ignoré et ridiculisé, ce protocole simple a soudainement attiré les admirateurs en tant que protocole de transport pour les nouvelles applications multimédias glamour rendues possibles par les vitesses à large bande. Aujourd’hui, toute application qui doit fournir des données choisit rapidement UDP plutôt que le TCP (Transmission Control Protocol) précédemment dominant.
Histoire UDP
UDP existe depuis presque aussi longtemps qu’Internet. L’Internet a vu le jour en mai 1974 lorsque l’Institut des ingénieurs électriciens et électroniciens a publié «Un programme pour l’intercommunication par réseau de paquets” par Vint Cerf et Bob Khan. Le concept devait être développé et Khan et Cerf ont continué à affiner leurs idées tout en travaillant pour le gouvernement américain. Agence des Projets de Défense Avancée, qui est également connu comme DARPA. John Postel s’est impliqué et a suggéré de diviser la structure unique proposée dans l’idée originale de Cerf et Khan. Cela a créé un concept en couches. Le programme de contrôle de transmission d’origine contenu dans le plan de 1974 a été divisé en protocole de contrôle de transmission à une couche supérieure et protocole Internet à une couche inférieure (d’où TCP / IP).
L’approche modulaire de Postel était logique lorsque l’équipe a commencé à réfléchir à la mise en œuvre de la théorie. Il y avait une division claire du travail entre ce qui est devenu connu sous le nom de Couche de transport, qui est l’emplacement du Transmission Control Protocol, et le Couche Internet, où réside le protocole Internet. Cependant, Cerf et Khan ont envisagé la nécessité d’une option accélérée. Ils ont établi un diagramme de la façon dont les données seraient préparées pour la transmission en étant transmises d’une couche à une autre. Les tâches de traitement étaient représentées par une ligne verticale droite, descendant à travers leur nouveau diagramme de pile montrant la progression de application sur TCP et sur IP.
Quand il s’agissait de dessiner dans la voie rapide, ils ne voulaient pas avoir à tracer une ligne de détour incurvée qui évitait de passer par TCP. Au lieu de cela, ils ont dessiné une forme oblongue qui représentait la couche Internet un peu plus large que le bloc qui représentait la couche transport. Avec cet ajustement visuel, l’itinéraire régulier et l’itinéraire accéléré pouvaient descendre à travers la pile sous forme de lignes parallèles. Cependant, cette astuce a laissé un vide qui, selon Postel, devait être comblé. C’est pourquoi le User Datagram Protocol a été inventé. Il était juste là pour rendre le diagramme de la pile de protocoles équilibré.
Les avantages de TCP
Le Transmission Control Protocol fournit des services essentiels aux données en transit. Il s’assure que tous les paquets d’un flux arrivent réellement et il vérifie qu’ils arrivent dans l’ordre. Ces procédures de contrôle qui assurent un transfert ordonné ne sont pas possibles sans une mesure de coordination entre les deux parties. Ainsi, TCP établit d’abord un accord entre les deux appareils qui ont l’intention d’échanger des données. Cet accord est appelé une session. C’est aussi la définition même d’un «lien.”UDP n’a pas de procédures d’établissement de session et il est donc appelé”sans connexion.”
La session donne aux deux côtés de la connexion un numéro de référence qu’ils peuvent étiqueter dans leurs échanges administratifs. La session permet également d’introduire le concept de ports. L’ID de session est en fait une combinaison d’identifiants contenus dans l’en-tête TCP. Avec cet identifiant, les concepteurs des procédures TCP ont pu trouver l’idée d’un «prise.»Les numéros de port sont également attribués à UDP, cependant, ce protocole ne peut utiliser que l’adresse IP et les numéros de port de destination comme identifiant unique. Un identifiant dérivé de cette combinaison bloquerait tous les autres processus essayant d’accéder au même port, même s’ils s’exécutaient sur des ordinateurs différents, donc UDP est devenu un système de livraison uniquement, sans procédure pour activer une boîte de dialogue bidirectionnelle.
Les concepts de connexion TCP sont tous devenus une méthode universelle très sophistiquée pour garantir que les données passant entre les ordinateurs ne soient pas mélangées ou brouillées. Le socket a permis d’ouvrir plusieurs connexions simultanément entre les deux mêmes ordinateurs. Cette idée a créé la possibilité d’avoir plus d’un canal fonctionnant pour transmettre des données. Il s’agit d’une procédure fréquemment utilisée dont de nombreuses premières applications réseau ont profité. le Protocole de transfer de fichier, par exemple, utilise deux canaux: un pour transmettre les données et un canal distinct pour les communications administratives. Les différents numéros de port pour les canaux de données et de contrôle créent deux sockets distincts.
L’identifiant unique de chaque session signifie que TCP a ajouté de la valeur à la communication entre deux ordinateurs. À la fin des années 70 et au début des années 80, seules les grandes organisations et les établissements universitaires disposaient d’ordinateurs et de réseaux. Il était donc très probable que deux organisations avaient besoin de leurs gros ordinateurs centraux pour se connecter simultanément à des fins différentes. Pendant qu’un professeur envoyait un fichier à un collègue d’une autre université, un chercheur pourrait également vouloir ouvrir une session Telnet sur l’ordinateur de la même université éloignée.. Grâce à TCP, deux ordinateurs pouvaient maintenir plusieurs connexions simultanément et chacune de ces sessions pouvait exploiter plusieurs canaux en même temps. Ces connexions simultanées ne seraient pas possibles si les communications n’étaient régies que par le protocole Internet avec l’attribution d’une adresse IP par ordinateur. UDP, sans aucun mécanisme de session, était incapable de gérer les applications nécessitant un ordinateur contacté pour envoyer une réponse.
Sécurité des données
Les constructions brillantes de TCP ont rendu possibles les connexions entre les réseaux et Internet a commencé à s’étendre au-delà du monde universitaire au monde des affaires. La création du Internet, qui est devenu public en 1991 n’a été possible qu’en raison de la facilité avec laquelle la page Web contenant le protocole de transfert hypertexte (HTTP) pouvait s’asseoir sur TCP.
Les universitaires et les techniciens qui ont assemblé Internet puis développé le World Wide Web étaient accessibles au public. penseurs de ciel bleu. Ils étaient enthousiasmés par la technologie et ses possibilités pour accélérer la recherche et améliorer l’interaction entre les gens du monde entier.. Ils n’ont pas tenu compte du fait que leur merveilleuse invention était un cadeau pour les voleurs, les escrocs et les terroristes urbains. Ni Internet ni le World Wide Web n’avaient de sécurité du tout.
Il a fallu le consommateur Netscape Corporation pour repérer ce problème. Netscape a produit le premier navigateur Web au monde et l’a offert gratuitement pour encourager le grand public à se connecter à Internet. Le plan a fonctionné et les échanges d’informations et les canaux de contact se sont répandus, encourageant davantage de membres du public à s’inscrire aux services Internet. Cependant, le le manque de sécurité a constitué un obstacle à la commercialisation du Web. Sans la possibilité d’inciter les gens à payer pour les services en ligne, les entreprises n’étaient pas incitées à investir dans le développement de nouvelles applications, sites Web ou services en ligne.
Le principal obstacle à la collecte de paiements sur le Web était son manque de sécurité. Quelques gros titres sur le vol de données sur les transmissions Internet empêchent de rendre Internet commercialement viable. pourtant, Netscape est venu avec HTTPS – une version sécurisée de HTTP qui protégeait la transmission. L’emplacement idéal dans la pile TCP / IP pour ces procédures de sécurité était pendant les processus d’établissement de session de TCP. Donc, TCP est devenu encore plus essentiel aux opérations d’Internet et il semblait encore plus probable que UDP ne serait jamais utilisé.
UDP prend son envol
Bien qu’il existe depuis 1980, UDP a été complètement ignoré jusqu’à ce que les services Internet à large bande deviennent disponibles au début de ce siècle. Le protocole de datagramme utilisateur a été largement ignoré tandis que les applications Web et autres applications Internet ont étendu les fonctionnalités de TCP.
pourtant, la possibilité d’avoir des conversations vocales et des vidéoconférences sur Internet a toujours séduit les entreprises. Ces applications existaient avant le haut débit, mais uniquement pour une utilisation sur des réseaux privés plus rapides. Avec la technologie de transmission du son et de la vidéo sur les réseaux établie, la vitesse plus rapide du haut débit a permis de mettre ces applications à la disposition du grand public est devenu une idée réalisable. Cependant, les vitesses disponibles sur Internet n’étaient pas assez bonnes.
La solution immédiate pour extraire juste assez de vitesse supplémentaire d’Internet était d’abandonner toutes les procédures administratives de TCP et se tourner vers l’UDP presque oublié.
Les problèmes avec TCP
Les applications interactives préfèrent traiter certains des problèmes rencontrés pendant la transmission eux-mêmes. L’une des principales caractéristiques de TCP que ces applications ne veulent vraiment pas est mise en mémoire tampon.
TCP s’assure que les paquets arrivent dans l’ordre. Si un paquet manque dans le flux, l’implémentation TCP de réception enverra une demande au programme TCP d’envoi pour renvoyer ce paquet spécifique. En attendant, ce paquet pourrait arriver en retard. TCP utilise un système de trames coulissantes pour traiter les paquets qui arrivent et si un segment est en retard ou perdu, cette diapositive est bloquée. Le stockage temporaire d’un certain nombre de trames en mémoire est ce que l’on appelle la mise en mémoire tampon. TCP attend jusqu’à ce qu’il puisse remplir l’emplacement vide avec le paquet qui porte le numéro de séquence manquant. Dans le cas de la téléphonie Internet, une telle action entraînerait le silence de la ligne. En streaming vidéo, l’attente d’un paquet manquant ferait geler le lecteur vidéo.
Les applications interactives n’ont pas de procédures pour contourner la mise en mémoire tampon TCP. Le principe derrière les couches de pile est que les couches supérieures demandent un service et le laissent à la couche inférieure pour le fournir. Il n’y a pas de signal «get on it» qu’une application peut envoyer à la couche Transport.
Si un paquet est perdu dans une conversation téléphonique numérique, les appelants connaîtront un court silence, mais l’application des deux côtés continuera et continuera d’envoyer et de recevoir les paquets suivants. Au moment où un paquet manquant pourrait être récupéré, la conversation interactive aurait déjà progressé, il est donc inutile d’essayer de le réinjecter dans le flux; il vaut mieux amortir la perte et continuer. De même, un paquet perdu signifierait simplement un court saut dans un flux vidéo en direct et les téléspectateurs préféreraient de beaucoup que la vidéo continue d’avancer plutôt que de retarder l’intrigue pendant une milliseconde des images.
Vous avez probablement vu un lecteur vidéo faire une pause et superposer le message “mise en mémoire tampon”Sur l’image. Il y a généralement un compteur qui indique le pourcentage de mise en mémoire tampon qui a été effectué. Cette mise en mémoire tampon se produit si la vitesse de transfert de la connexion est inférieure à la fréquence d’images de la lecture vidéo. Le point crucial de ce message, cependant, est qu’il montre que la mise en mémoire tampon est gérée par le lecteur et non par le protocole de transport.
Protocoles de partenariat
Bien que les applications interactives ne voulaient pas des retards causés par TCP, elles voulaient certaines des fonctionnalités de ce protocole. Ils voulaient plus que ce que UDP pouvait fournir. Donc, d’autres protocoles ont été inventés pour compléter certaines des capacités de TCP.
Le protocole d’initiation de session
Le protocole d’ouverture de session (SIP) a été inventé pour les applications de voix sur IP (VoIP). La téléphonie Internet ne voulait pas la mise en mémoire tampon de TCP, mais ils avaient besoin d’émuler les procédures traditionnelles d’établissement des appels des téléphones – composer, sonner, occupé, décrocher et terminer l’appel. Cependant, SIP ne gère pas l’intégralité de la session, il s’occupe uniquement des fonctions de création de connexion et de suppression de TCP. Chaque appel exécuté sur Internet utilise SIP. À tel point que «SIP» est presque devenu un terme interchangeable avec «VoIP.”
Le trafic de trafic vocal sur des connexions numériques à haut débit en masse est appelé «Jonction SIP.”Passer un appel d’Internet à un téléphone fixe ordinaire s’appelle”Terminaison SIP.«L’industrie de la téléphonie numérique utilise SIP pour identifier sa technologie, mais le fondement même de toutes ses activités est UDP.
Le protocole de transport en temps réel
Malgré la décision que TCP était trop lourd pour le trafic interactif et devrait être abandonné, les ingénieurs en communication continuaient de retourner dans les installations fournies par TCP et ils souhaitaient pouvoir les avoir avec UDP. Le protocole de transport en temps réel (RTP) compense une grande partie du manque de fonctionnalités rencontré lors de l’utilisation d’UDP.
Une caractéristique clé de ces protocoles complémentaires qui rendent UDP pertinent pour le streaming multimédia est qu’ils permettent à certains des processus traditionnellement gérés par TCP d’être poussés vers l’application. RTP gère certaines des fonctions de gestion du trafic de TCP, mais pas toutes.
RTP est capable de réorganiser les paquets hors séquence et de noter les paquets perdus. Cependant, la fonction de séquencement n’a pas besoin d’être implémentée et est impossible à implémenter sans mise en mémoire tampon au niveau de la couche de transport.
Le protocole de contrôle RTP
RTP s’associe toujours avec RTCP, qui est le protocole de contrôle RTP. RTPC émule certaines des fonctions de gestion de session de TCP, sauf que le principe directeur du protocole est de ne pas s’immiscer dans le flux et de ne pas ralentir la transmission multimédia; donc ses activités sont peu fréquentes. Le protocole collectera des données de performances, y compris la perte de paquets, et informations sur les taux de transfert. Le lecteur récepteur peut utiliser ces informations pour décider de passer à une résolution vidéo inférieure ou à une norme de codage vidéo différente..
Si vous utilisez une application vidéo et audio, il est presque certain que RTP et RTCP sont impliqués. Il y a un “entrelacement”Option dans la définition de RTSP (voir ci-dessous) qui déplacerait les transmissions RTP sur TCP. Cependant, il s’agit d’une proposition inhabituelle qui n’a jamais été mise en œuvre au-delà du laboratoire. Sans cette spécification, toutes les activités RTP et RTCP sont effectuées par UDP.
Le protocole de streaming en temps réel
Le protocole de streaming en temps réel (RTSP) est presque toujours impliqué dans les applications de lecture ou d’enregistrement vidéo et audio. Ce protocole fournit des boutons de contrôle sur votre lecteur et enregistreur. Il s’agit de pause, d’enregistrement / lecture, d’avance rapide et de rembobinage. Curieusement, bien que RTSP puisse s’exécuter sur UDP, il est généralement transporté sur TCP, même s’il est en partenariat avec un flux vidéo ou audio pris en charge par UDP.
Applications uniquement UDP
Un certain nombre d’applications de support réseau légères utilisent UDP sans aucun autre protocole qui constitue une simulation des fonctions TCP. Ces fonctions sont presque exclusivement destinées uniquement à une utilisation sur des réseaux privés car ils n’incluent aucune procédure d’authentification ni cryptage de transmission.
Si vous gérez un réseau, vous serez familiarisé avec le Protocole NTP (Network Time Protocol), le Système de noms de domaine (DNS), le DHCP (Dynamic Host Configuration Protocol), et le Protocole de transfert de fichiers trivial (TFTP). Tous ces services d’administration s’exécutent sur UDP. Au-delà de ces applications de réseau privé, il est très difficile de trouver une application qui s’exécute uniquement sur UDP.
UDP vs TCP
Une comparaison de la structure d’en-tête UDP et de la structure d’en-tête TCP vous montre les limites d’UDP.
L’en-tête UDP n’a que quatre champs. De ces quatre, le Port source Le champ est facultatif et peut être laissé vide. Dans IPv4, le Somme de contrôle Le champ est également facultatif, bien qu’il soit obligatoire pour les implémentations IPv6. Cela signifie que dans le cas des transmissions IPv4, l’en-tête UDP n’a besoin que de deux informations.
L’en-tête TCP est capable de transporter beaucoup plus d’informations.
Comme vous pouvez le voir sur l’illustration, l’en-tête du paquet TCP a une série de neuf indicateurs qui adaptent la signification de l’en-tête. Cet événement a un champ «urgent». Cela donne au système TCP beaucoup plus de flexibilité que UDP et cela montre que beaucoup plus de temps a été investi dans les procédures pour TCP et la structure de son en-tête de paquet que celui consacré au développement d’UDP.
Le fait que l’en-tête TCP doive inclure le port source permet de créer un socket plus unique, en créant un ID de session à partir des adresses IP source et destination et des numéros de port source et destination. Avec UDP, car il n’a pas de procédures pour créer une session, chaque message est traité comme une tâche terminée, et le protocole n’essaye pas de chaîner les paquets ensemble. Par conséquent, les applications qui utilisent USP doivent gérer elles-mêmes cette continuité.
Sécurité pour UDP
Les méthodes TCP de connexion rendent la sécurité beaucoup plus facile à implémenter dans ce protocole dans UDP. Cependant, il existe des normes de chiffrement disponibles pour UDP. La principale option qui vise directement la sécurité UDP est le protocole de sécurité de la couche de transport de datagrammes ou DTLS.
Heureusement, DTLS est disponible dans un certain nombre de bibliothèques libres et open source, vous n’avez donc pas besoin de passer au peigne fin la définition du protocole et d’écrire votre programme ouvert pour le mettre en œuvre. OpenSSL, qui est une bibliothèque de code open source, est la source la plus courante pour une implémentation de Transport Layer Security, qui est le système de sécurité le plus largement implémenté pour TCP. Cette bibliothèque a également inclut une implémentation DTLS, vous devriez donc être en mesure de rencontrer des options UDP sécurisées dans les mêmes applications qui offrent des connexions TCP sécurisées.
Une autre option pour les utilisateurs UDP consiste à s’appuyer sur un système de sécurité conçu pour fonctionner sur la couche Internet. C’est IPSec, ou Internet Protocol Security. Comme IPSec fonctionne en dessous de la couche de transport, il n’est pas en mesure de travailler avec les ports et donc le fait qu’UDP n’est pas en mesure de maintenir une session n’a pas d’importance quand IPSec est engagé – Les protocoles de couche IP ne peuvent pas non plus créer de sessions. En tant que système de couche inférieure, IPSec est capable de prendre en charge n’importe quel protocole de couche de transport, y compris UDP.
IPSec inclut des méthodes d’authentification et chiffre également les paquets pour les protéger des espions d’écoute électronique. L’informatique offre autant de sécurité que le TLS populaire, mais est moins largement implémentée. IPSec utilise le système Internet Key Exchange (IKEv2) pour configurer l’authentification, donc assez souvent, IPSec est facturé comme IKEv2. La méthodologie IKEv2 utilise Procédures d’échange de clés Diffie-Hellman, qui est exactement le même système que TLS utilise pour la méthodologie de session de page Web sécurisée HTTPS.
Kerberos et Kerberized Internet Negotiation of Keys (KINK) sont deux éléments d’un système de sécurité généralement appelé Kerberos. Les procédures d’établissement de session Kerberos utilisent un système de «tickets» qui est similaire à la méthode TLS d’utilisation de «certificats». Tout en bas de la pile, Kerberos est soutenu par IPSec. La couche éponyme Kerberos se trouve au-dessus d’UDP et utilise des sockets UDP pour faciliter la communication. Il s’agit donc d’un système de sécurité compatible UDP. Une fonctionnalité intéressante de Kerberos est qu’il vous permet d’utiliser le cryptage AES pour protéger vos transferts UDP. AES est probablement le chiffrement le plus sécurisé actuellement utilisé et c’est la méthode de sécurité recommandée pour les meilleurs systèmes de protection de la vie privée VPN au monde..
Malgré les difficultés apparentes de négociation des clés de chiffrement dans un environnement qui ne fournit aucune gestion de connexion, UDP offre des options de sécurité. Donc, lorsque vous implémentez une application basée sur UDP, n’abandonnez pas la tâche de sécuriser vos transmissions.
L’avenir de l’UDP
Les applications purement basées sur UDP qui n’impliquent pas de protocoles secondaires pour imiter TCP sont rares et risquent de le devenir encore plus. Les utilitaires réseau légers qui utilisent UDP prospèrent sur des réseaux locaux sécurisés. Cependant, alors que les menaces de sécurité provenant de nouvelles attaques zero-day se multiplient chaque semaine, le concept de protocoles non sécurisés gérant les services cruciaux de gestion de la configuration et d’adressage semble être complètement complaisant..
Alors que les réseaux migrent leur service vers le cloud, les services de TFTP et DHCP basés sur UDP commenceront à être remplacés par des alternatives plus sécurisées. La solution facile de surfer sur les applications HTTPS pour leur donner la sécurité sans effort de programmation supplémentaire incline l’avenir vers TCP, qui transporte HTTPS et supprime les opportunités de la liste des compétences UDP.
Le créneau UDP de soutien aux transmissions médiatiques devrait perdurer. De nombreux systèmes de transport concurrents ont déjà été proposés pour la prise en charge des applications interactives, mais aucun d’entre eux n’a écarté UDP de sa position de premier choix pour la VoIP et le streaming vidéo. Cette liste de rivaux comprend:
Le protocole RUDP (Reliable User Datagram Protocol), qui a des implémentations Cisco et Microsoft.
Le protocole de transmission de contrôle de flux (SCTP), qui a été sans succès proposé en remplacement du combo UDP / RTP / RTCP, mais n’a jamais vraiment décollé.
Ce vilain petit canard appelé UDP a été découvert comme un cygne, grâce aux pouvoirs de transformation magiques des applications haut débit et interactives. Cette star revitalisée continuera de glisser sans effort à travers les eaux d’Internet.
Quelles méthodes de transmission utilisez-vous? Voyez-vous le vilain petit canard UDP comme un cygne? Écrivez sur vos expériences dans la section Commentaires ci-dessous.
En relation:
Guide ultime pour TCP / IP
Qu’est-ce que TCPdump?
Revue du serveur TFTP SolarWinds
Revue du serveur TFTPD32 TFTP
Images:
En-tête de UDP par Devarshi sur Wikibooks anglais sous licence CC BY-SA 2.5
Disposition des paquets TCP avec échelle de bits par Quliyevferman via Wikimedia Commons. Sous licence CC BY-SA 4.0
LUDP est un protocole de datagramme utilisateur qui a longtemps été ignoré et ridiculisé, mais qui a finalement attiré lattention en tant que protocole de transport pour les nouvelles applications multimédias. Aujourdhui, de nombreuses applications choisissent lUDP plutôt que le TCP pour fournir des données en raison de ses avantages. Cependant, le TCP reste dominant en raison de ses procédures de contrôle qui assurent un transfert ordonné des données. LUDP, quant à lui, est appelé “sans connexion” car il na pas de procédures détablissement de session. Malgré cela, lUDP est de plus en plus utilisé dans les applications multimédias et son avenir semble prometteur.