En tant que protocole de communication de la couche transport, UDP est un protocole très courant pour le trafic voix et vidéo.
Cet article s'articule autour des points suivants :
Contenu associé
Abonnez-vous à theNET, le récapitulatif mensuel de Cloudflare des idées les plus populaires concernant Internet !
Copier le lien de l'article
Le protocole User Datagram Protocol, ou UDP, est un protocole de communication utilisé sur Internet pour les transmissions particulièrement sensibles au facteur temps, telles que la lecture de vidéos ou les recherches DNS. Il accélère les communications en n'établissant pas formellement de connexion avant le transfert des données. Cela permet de transférer des données très rapidement. Toutefois, avec ce protocole, il arrive que des paquets en transit soient perdus, ce qui génère des opportunités d'exploitation sous la forme d'attaques DDoS.
Comme tous les protocoles de mise en réseau, UDP est une méthode normalisée de transfert de données entre deux ordinateurs sur un réseau. Par rapport à d'autres protocoles, UDP accomplit ce processus de manière simple : il envoie des paquets (unités de transmission de données) directement à un ordinateur cible, sans établir de connexion préalable, sans indiquer l'ordre de ces paquets ni vérifier s'ils sont arrivés comme prévu. (Les paquets UDP sont appelés « datagrammes »).
UDP est plus rapide mais moins fiable que TCP, un autre protocole de transport courant. Dans une communication TCP, les deux ordinateurs commencent par établir une connexion via un processus automatisé appelé « poignée de main ». Ce n'est qu'une fois cette poignée de main terminée qu'un ordinateur transfère effectivement des paquets de données à l'autre.
Les communications UDP ne passent pas par ce processus. Au lieu de cela, un ordinateur peut simplement commencer à envoyer des données à l'autre :
En outre, les communications TCP indiquent l'ordre dans lequel les paquets de données doivent être reçus et confirment que les paquets arrivent comme prévu. Si un paquet n'arrive pas, par exemple en raison de l'encombrement des réseaux intermédiaires, le protocole TCP exige qu'il soit envoyé à nouveau. Les communications UDP ne comportent aucune de ces fonctionnalités.
Ces différences créent certains avantages. Comme l'UDP ne nécessite pas de « poignée de main » ni de vérification de l'arrivée des données, il est capable de transférer des données beaucoup plus rapidement que le TCP.
Toutefois, cette rapidité entraîne des inconvénients. Si un datagramme UDP est perdu en transit, il ne sera pas renvoyé. Par conséquent, les applications qui utilisent le protocole UDP doivent être capables de tolérer les erreurs, les pertes et les doublons.
(Techniquement, cette perte de paquets est moins un défaut d'UDP qu'une conséquence de la manière dont Internet est construit. La plupart des routeurs de réseau ne sont pas conçus pour opérer un classement et une confirmation de l'arrivée des paquets. En effet, cela nécessiterait une quantité de mémoire supplémentaire impensable. TCP constitue un moyen de combler cette lacune lorsqu'une application l'exige).
Le protocole UDP est couramment utilisé dans les communications sensibles au facteur temps, où il est préférable d'abandonner occasionnellement des paquets plutôt que d'attendre. Le trafic vocal et vidéo est souvent envoyé selon ce protocole parce qu'il est sensible au temps et conçu pour supporter un certain niveau de perte. Par exemple, VoIP (voice over IP), qui est utilisé par de nombreux services téléphoniques basés sur l'internet, fonctionne généralement sur UDP. En effet, une conversation téléphonique statique est préférable à une conversation claire comme de l'eau de roche mais fortement différée.
Cela fait également d'UDP le protocole idéal pour les jeux en ligne. De la même façon, les serveurs DNS devant être rapides et efficaces, ils fonctionnent également via UDP.
Les « risques » de l'UDP, comme la perte de paquets, ne constituent pas un problème grave dans la plupart des cas d'utilisation. Cependant, l'UDP peut être exploité à des fins malveillantes. Étant donné que le protocole UDP ne nécessite pas de poignée de main, les attaquants peuvent « inonder » un serveur cible de trafic UDP sans avoir obtenu au préalable l'autorisation de ce serveur de commencer la communication.
Une attaque UDP flood classique envoie un grand nombre de datagrammes UDP à des ports aléatoires sur l'ordinateur cible. La cible est ainsi obligée de répondre par un nombre tout aussi important de paquets ICMP, ce qui signifie que ces ports sont inaccessibles. Les ressources informatiques nécessaires pour répondre à chaque datagramme frauduleux peuvent épuiser la cible, ce qui entraîne un déni de service pour le trafic légitime. (Pour en savoir plus, lisez notre article sur les attaques UDP Flood).
Les organisations peuvent se défendre contre les attaques UDP Flood à l'aide de diverses méthodes. L'une d'elles consiste à limiter le taux de réponse des paquets ICMP, mais il existe un risque qu'elle élimine des paquets légitimes. Une autre méthode consiste à recevoir et à répondre au trafic UDP par le biais d'un réseau intermédiaire constitué de nombreux datacenters distribués, évitant ainsi de voir un serveur d'origine unique saturé par les demandes frauduleuses. Découvrir comment Cloudflare utilise cette stratégie pour accompagner les organisations dans l'atténuation des attaques DDoS.