Question

Est-il possible que des données UDP vous parviennent corrompues ?Je sais qu'il est possible qu'il se perde.

Était-ce utile?

La solution

Les paquets UDP utilisent une somme de contrôle de 16 bits.Il n'est pas impossible que les paquets UDP soient corrompus, mais c'est plutôt improbable.Dans tous les cas, il n'est pas plus susceptible d'être corrompu que TCP.

Autres conseils

Tout d’abord, la « somme de contrôle IP » référencée ci-dessus n’est qu’une somme de contrôle d’en-tête IP.Cela ne protège pas la charge utile.Voir RFC 791.

Deuxièmement, UDP permet le transport sans somme de contrôle, ce qui signifie que la somme de contrôle de 16 bits est définie sur 0 (c'est-à-dire aucune).Voir RFC768.(Une valeur de somme de contrôle transmise entièrement nulle signifie que l'émetteur n'a généré aucune somme de contrôle)

Troisièmement, comme d'autres l'ont mentionné, UDP dispose d'un checkSUM de 16 bits, ce qui n'est pas le meilleur moyen de détecter une erreur multi-bits, mais ce n'est pas mauvais.Il est certainement possible qu’une erreur non détectée se produise, mais c’est très peu probable.

Possible?Absolument.Non détecté ? Peu probable, puisque UDP utilise une somme de contrôle qui nécessiterait des erreurs sur plusieurs bits pour apparaître valides.Si une erreur est détectée, le système abandonnera probablement le paquet – tels sont les risques liés à l'utilisation d'UDP.

Les paquets UDP peuvent également être livrés dans le désordre, donc si vous concevez un protocole au-dessus d'UDP, vous devez également en tenir compte.

Une forme courante de « corruption » qui affecte les programmeurs sans méfiance est troncature du datagramme.Voir « Programmation réseau Unix » de Stevens pour plus d'informations (page 539 de la 2e éd.)

Vous pouvez vérifier l'indicateur MSG_TRUNC...

Réponse courte:OUI.

Réponse détaillée :

Il y a environ 7 ans (peut-être 2011 ?), nous avons constaté que les datagrammes UDP étaient involontairement modifiés lorsqu'un datagramme UDP était échangé entre un ordinateur en Chine et un autre en Corée.Bien entendu, la somme de contrôle dans l'en-tête du paquet UDP est également remise en cause en fonction du changement de charge utile.Il n’y avait aucun logiciel malveillant sur deux ordinateurs.

Nous avons constaté que le changement involontaire ne se produit que lorsque ces conditions correspondent :

  • Les premiers octets du datagramme sont similaires au datagramme précédent
  • Se produit uniquement lorsque les datagrammes UDP passent d'un pays à un autre

Je ne connais pas exactement la cause, mais je suppose que c'est le cas Bouclier d'or de Chine.

Nous avons donc ajouté un algorithme de brouillage des datagrammes dans notre logiciel ProudNet et le problème a disparu.Ce n’est pas difficile à mettre en œuvre.Encodez ou masquez simplement les premiers octets de votre datagramme.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top