2008-09-06 5 views

Respuesta

18

Los paquetes UDP usan una suma de comprobación de 16 bits. No es imposible que los paquetes UDP tengan corrupción, pero es bastante improbable. En cualquier caso, no es más susceptible a la corrupción que TCP.

+2

Técnicamente, la suma de comprobación es opcional. Desde RFC 768: "Un valor de suma de comprobación transmitida a cero significa que el transmisor no generó suma de verificación (para la depuración o para protocolos de nivel superior que no se preocupan)". –

+0

Sí, PERO: a) la suma de verificación, supongo, siempre se calcula para una transmisión UDP normal no configurada, b) si el paquete parece tener una longitud y suma de comprobación correctas, entonces es correcto, o de lo contrario el sistema no lo haría entregar tal paquete a la persona que llama. ¿Derecha? – Ethouris

5

¿Posible? Absolutamente. ¿No detectado? Unlikely, dado que UDP emplea una suma de comprobación que requeriría que los errores de múltiples bits parezcan válidos. Si se detecta un error, es probable que el sistema elimine el paquete; tales son los riesgos de usar UDP.

4

Los paquetes UDP también se pueden entregar fuera de servicio, por lo que si está diseñando un protocolo sobre UDP también debe tener esto en cuenta.

3

Una forma común de "corrupción" que afecta a los programadores desprevenidos es datagram truncation. Ver "Programación Unix Red" por Stevens para obtener más información (página 539 en 2ª ed.)

se podría verificar la bandera MSG_TRUNC ...

11

En primer lugar, la "suma de comprobación IP" hace referencia arriba es solo un Suma de comprobación de encabezado IP No protege la carga útil. Ver RFC 791

En segundo lugar, UDP permite el transporte sin suma de comprobación, lo que significa que la suma de comprobación de 16 bits se establece en 0 (es decir, ninguno). Consulte RFC 768. (Un valor de suma de comprobación transmitida de cero significa que el transmisor no generó suma de comprobación)

En tercer lugar, como han mencionado otros, UDP tiene un checksum de 16 bits, que no es la mejor manera de detectar un bit múltiple error, pero no está mal. Sin duda es posible que un error no detectado se filtre, pero muy poco probable.

+0

Si el datagrama llega sin suma de comprobación, ¿puede la aplicación solicitar esa información? – benc

+0

Gracias por aclarar que la suma de verificación IP es solo para el encabezado. – RandomInsano

+0

@RandomInsano Tenga en cuenta que el póster tenía tres puntos. El punto 1 habla de "suma de verificación IP", que está un nivel por debajo de UDP, el punto 3 dice que UDP tiene una suma de comprobación. De modo que hay 2 sumas de comprobación, IP que protege el encabezado IP y suma de comprobación UDP que protege el encabezado y los datos del UDP. Entonces los datos están protegidos. – mikijov