2008-09-06 14 views

risposta

18

pacchetti UDP utilizzano un checksum a 16 bit. Non è impossibile che i pacchetti UDP abbiano corruzione, ma è piuttosto improbabile. In ogni caso non è più suscettibile alla corruzione di TCP.

+2

Tecnicamente il checksum è facoltativo. Da RFC 768: "Un valore di checksum interamente trasmesso a zero significa che il trasmettitore non ha generato alcun checksum (per il debug o per i protocolli di livello superiore a cui non interessa)." –

+0

sì, ma: a) il checksum, immagino, è sempre calcolato per una trasmissione UDP normale non specificamente configurato, b) se il pacchetto sembra avere una lunghezza corretta e checksum, allora è corretto, o altrimenti il ​​sistema non sarebbe consegnare un tale pacchetto al chiamante. Destra? – Ethouris

5

possibile? Assolutamente. Inosservato? Unlikely, poiché UDP utilizza un checksum che richiederebbe la visualizzazione di errori a più bit. Se viene rilevato un errore, è probabile che il sistema rilasci il pacchetto - tali sono i rischi legati all'uso di UDP.

4

pacchetti UDP possono anche essere consegnati fuori ordine, quindi se siete escogitare un protocollo su UDP bisogna tenerne conto pure.

3

Una forma comune di "corruzione" che colpisce i programmatori ignari è troncatura del datagramma. Vedere "Programmazione rete Unix" di Stevens per ulteriori informazioni (pagina 539 nel 2 ° ed.)

Si potrebbe verificare la bandiera MSG_TRUNC ...

11

Prima di tutto, il "checksum IP" di cui sopra è solo un Checksum dell'intestazione IP. Non protegge il carico utile. Vedi RFC 791

secondo luogo, permette UDP checksum trasporto con NO, il che significa che il checksum a 16 bit è impostato a 0 (cioè nessuno). Vedi RFC 768. (Un all valore di checksum trasmesso zero significa che il trasmettitore generato alcun checksum)

terzo luogo, come altri hanno già detto, UDP ha un checksum a 16 bit, che non è il modo migliore per rilevare un multi-bit errore, ma non è male. È certamente possibile che un errore non rilevato entri di nascosto, ma molto improbabile.

+0

Se il datagramma arriva senza checksum, l'applicazione può chiedere tali informazioni? – benc

+0

Grazie per aver chiarito che il checksum IP è solo per l'intestazione. – RandomInsano

+0

@RandomInsano Si prega di notare che il poster aveva tre punti. Il punto 1 parla di "checksum IP", che è un livello sotto UDP, il punto 3 dice che UDP ha un checksum. Quindi ci sono 2 checksum, IP che protegge l'intestazione IP e checksum UDP che protegge l'intestazione ei dati UDP. Quindi i dati sono protetti. – mikijov

Problemi correlati