2013-08-26 12 views
5

Se apro un socket raw e invii pacchetti udp con un checksum errato, i pacchetti verranno rilasciati dall'altra parte dello stack tcp/ip?I pacchetti UDP vengono interrotti quando il checksum dell'intestazione UDP non è corretto?

+0

tuttavia potresti essere in grado di annusarli sull'host remoto, questo ti consentirebbe di differenziare i pacchetti che non sono mai arrivati ​​rispetto a quelli che sono stati rilasciati a causa di dati non corretti –

+1

Ecco a cosa serve il checksum. * – EJP

risposta

5

Sì, sarebbero stati eliminati. Se hai bisogno di comunicazioni più affidabili, stai molto meglio usando TCP.

per ulteriori informazioni, dare un'occhiata a questo: http://www.diffen.com/difference/TCP_vs_UDP

UDP non c'è alcuna garanzia che i pacchetti saranno anche inviati, e tanto meno ha ricevuto. Se sono effettivamente ricevuti, però, vengono controllati. Se falliscono il checksum vengono lasciati cadere.

MODIFICA: anche per aggiungere a questo, udp non ordina di default i pacchetti così come vengono inviati, che deve essere fatto a livello di applicazione. Tienilo a mente se intendi ancora utilizzare UDP.

+0

Posso disabilitare Convalida del checksum delle intestazioni UDP durante l'apertura del socket ?? – innosam

+1

Sì, il checksum dell'intestazione UDP è facoltativo. Basta impostarlo su 0 (significa inutilizzato) –

+0

Fai attenzione, perché secondo l'articolo di wikipedia (http://en.wikipedia.org/wiki/User_Datagram_Protocol) afferma che in ipv6 non è più possibile inviare il pacchetto senza checksum. Ecco la specifica per ipv6 da cui proviene la fonte di wikipedia da ... http://tools.ietf.org/html/rfc2460 – user2366842

4

Se arriva un pacchetto con checksum errato, il SO lo lascerà cadere prima di passarlo alla presa.

L'applicazione di destinazione non può determinare se il pacchetto è stato perso o viene fornito con un checksum errato. Penso che non possa forzare il comportamento altrui.

+1

puoi forzarla a ignorare, almeno in ipv4. In ipv6 questo non è più il caso. – user2366842