Maison  >  Article  >  Java  >  Une brève introduction au protocole udp en Java

Une brève introduction au protocole udp en Java

黄舟
黄舟original
2017-07-24 15:30:551369parcourir

Cet article présente principalement en détail des informations pertinentes sur l'introduction du protocole UDP, qui ont une certaine valeur de référence. Les amis intéressés peuvent s'y référer

1 Brève introduction à UDP

UDP est un protocole de couche transport et se trouve dans la même couche que le protocole TCP. Cependant, contrairement au protocole TCP, le protocole UDP ne fournit pas de retransmission de délai d'attente, de retransmission d'erreurs, etc., ce qui signifie qu'il est activé. est un protocole peu fiable.


2.En-tête du protocole UDP

Numéro de port UDP

Étant donné que de nombreux logiciels doivent utiliser le protocole UDP, le protocole UDP doit utiliser un certain indicateur pour distinguer les paquets de données requis par les différents programmes. C'est la fonction du numéro de port. Par exemple, si un certain programme UDP A enregistre le port 3000 dans le système, alors tous les paquets UDP avec le numéro de port de destination 3000 entrant de l'extérieur seront transmis à ce programme. Théoriquement, le numéro de port peut aller jusqu'à 2 ^ 16. Parce que sa longueur est de 16 bits


Somme de contrôle UDP

Il s'agit d'une option facultative et tous les systèmes n'effectuent pas de sommes de contrôle sur Paquets UDP (par rapport aux exigences du protocole TCP), mais la norme de la RFC exige que l'expéditeur calcule la somme de contrôle.


La somme de contrôle UDP couvre l'en-tête et les données du protocole UDP, qui est différente de la somme de contrôle IP. La somme de contrôle du protocole IP ne couvre que l'en-tête des données IP, pas toutes les données. UDP et TCP contiennent tous deux un pseudo-en-tête, qui est filmé dans le but de calculer la somme de contrôle. Le pseudo-en-tête contient même des informations incluses dans le protocole IP, telles que l'adresse IP. Le but est de permettre à UDP de vérifier deux fois si les données ont atteint correctement la destination. Si l'expéditeur n'active pas l'option de somme de contrôle et que le destinataire fait une erreur dans le calcul de la somme de contrôle, les données UDP seront discrètement supprimées (la livraison n'est pas garantie) sans générer de message d'erreur.


Longueur UDP

UDP peut être très long, jusqu'à 65535 octets. Cependant, lorsque le réseau général transmet, il ne peut généralement pas transmettre un protocole aussi long en même temps (impliquant des problèmes de MTU), il doit donc fragmenter les données. Bien entendu, celles-ci sont transparentes pour les protocoles de niveau supérieur tels que UDP et. UDP n'a pas besoin de se soucier de la couche de protocole IP En ce qui concerne la manière de fragmenter les données, le chapitre suivant abordera brièvement certaines stratégies de partitionnement.


Fragmentation IP

Une fois que l'IP a reçu des données de la couche supérieure, il doit déterminer de quelles données proviennent sur l'adresse IP. L'interface envoie des données (via le routage) et interroge le MTU. Si la taille des données dépasse le MTU, les données sont fragmentées. La fragmentation des données est transparente pour les couches supérieure et inférieure, et les données ne seront réassemblées que lorsqu'elles arriveront à destination. Mais ne vous inquiétez pas, la couche IP fournit suffisamment d'informations pour le réassemblage des données.


Dans l'en-tête IP, le numéro d'identification de 16 bits enregistre de manière unique l'ID d'un paquet IP, et les tranches IP avec le même ID seront réassemblées tandis que le décalage de tranche de 13 bits enregistre un certain ; IP La position du fragment par rapport à l'ensemble du paquet ; et les deux indicateurs de 3 bits au milieu indiquent s'il y a de nouveaux fragments après le fragment. Ces trois indicateurs constituent toutes les informations de fragmentation IP, et le destinataire peut utiliser ces informations pour réorganiser les données IP (même si les fragments ultérieurs arrivent avant les fragments précédents, ces informations sont suffisantes).

La technologie de fragmentation étant fréquemment utilisée sur Internet, il existe une infinité de logiciels et de personnes qui forgent des paquets de fragmentation IP pour mener des attaques malveillantes.

Vous pouvez utiliser le programme Trancdroute pour une détection simple de MTU. Veuillez vous référer au manuel.


Interaction entre UDP et ARP

Ceci n'est pas couramment utilisé Un détail que les gens J'ai remarqué, c'est pour certaines implémentations de système. Lorsque le cache ARP est toujours vide. Avant l'envoi d'UDP, une requête ARP doit être envoyée pour obtenir l'adresse MAC de l'hôte de destination. Si le paquet de données UDP est suffisamment volumineux et que la couche IP doit le fragmenter, imaginez que le paquet de données UDP Le premier fragment émettra un ARP. requête de requête, et tous les fragments attendront que la requête soit terminée avant de l'envoyer. Est-ce réellement le cas ?

Le résultat est que certains systèmes feront en sorte que chaque fragment envoie une requête ARP. Tous les fragments sont en attente, mais lors de la réception de la première réponse, l'hôte n'envoie que le dernier fragment de données et le rejette. De cette façon, comme les données fragmentées ne peuvent pas être assemblées à temps, l'hôte récepteur éliminera les paquets de données IP qui ne pourront jamais être assemblés dans un délai donné et enverra un message ICMP avec un délai d'attente d'assemblage (en fait, de nombreux systèmes le font). ne génère pas cette erreur) pour garantir que le tampon récepteur de l'hôte récepteur n'est pas rempli de fragments qui ne sont jamais assemblés.

Erreur de suppression de source ICMP

Lorsque la vitesse de traitement de l'hôte cible ne peut pas suivre la vitesse des données réception, car l'hôte récepteur Le cache de la couche IP sera plein, donc l'hôte enverra un message ICMP "Je ne peux pas le supporter".


Conception du serveur UDP

Certaines fonctionnalités du protocole UDP affecteront la conception de notre programme serveur, un résumé approximatif Comme suit :


1. Concernant l'adresse IP et l'adresse du client : le serveur doit avoir la capacité de déterminer si le paquet de données est légal en fonction de l'adresse IP et du numéro de port du client (cela semble être requis par chaque serveur)
2. adresse de destination : Le serveur doit La possibilité de filtrer les adresses de diffusion est requise.
3. Concernant la saisie des données : généralement, chaque numéro de port du système serveur correspond à un tampon d'entrée. Les entrées entrantes attendent d'être traitées par le serveur selon le principe du premier arrivé, premier servi, donc des problèmes de débordement de tampon se produiront inévitablement. Dans ce cas, les paquets UDP peuvent être abandonnés sans que le programme du serveur d'applications soit lui-même conscient du problème.
4. Le serveur doit restreindre l'adresse IP locale, ce qui signifie qu'il doit pouvoir se lier à un certain port d'une certaine interface réseau.

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