Domanda

È possibile che i dati UDP per venire danneggiato?So che è possibile per essere perso.

È stato utile?

Soluzione

Pacchetti UDP utilizzare un 16 bit di checksum.Non è impossibile per i pacchetti UDP di avere la corruzione, ma è abbastanza improbabile.In ogni caso non è più suscettibile di corruzione rispetto al TCP.

Altri suggerimenti

Prima di tutto, il "checksum IP" di cui sopra è solo un IP header checksum.Non protegge il carico utile.Vedere la RFC 791

In secondo luogo, UDP consente il trasporto SENZA checksum, il che significa che il 16-bit di checksum è impostato a 0 (cioè nessuno).Vedere la RFC 768.(Un'tutti zero trasmesso valore di checksum significa che il trasmettitore non ha generato alcun checksum)

In terzo luogo, come altri hanno detto, UDP è un 16-bit di checkSUM, che non è il modo migliore per individuare un multi-bit di errore, ma non è male.È certamente possibile per un non rilevato errore di entrare di nascosto, ma molto improbabile.

Possibile?Assolutamente.Inosservato? Improbabile, poiché UDP impiega un checksum che richiedono più errori di bit per sembrano validi.Se viene rilevato un errore, il sistema sarà probabilmente cadere il pacchetto - quali sono i rischi dell'uso di UDP.

Pacchetti UDP possono essere consegnati fuori ordine, quindi se si sta elaborando un protocollo UDP è necessario prendere in considerazione.

Una comune forma di "corruzione" che colpisce ignari programmatori è datagramma troncamento.Vedere "Unix Network Programming" da Stevens per ulteriori informazioni (pagina 539 2 ° ed.)

Si potrebbe verificare il MSG_TRUNC bandiera...

Risposta breve:SÌ.

Risposta dettagliata:

Circa 7 anni fa(forse il 2011?) Abbiamo trovato che datagrammi UDP sono involontariamente cambiato quando un datagramma UDP viene scambiato tra un computer in Cina e uno in Corea.Naturalmente, il Checksum in un pacchetto UDP header è anche reculculated per quanto riguarda il payload cambiare.Non c'erano software malware in due computer.

Abbiamo trovato che la modifica involontaria si verifica solo quando queste condizioni corrispondono a:

  • Primi byte di datagrammi sono simili alle precedenti datagramma
  • Solo occurse quando datagrammi UDP passare da una nazione all'altra

Io non la causa esattamente, ma ho circa guess è Cina Scudo Dorato.

Così abbiamo aggiunto datagramma garbling algoritmo in software ProudNet e il problema è andato via.Non è difficile da implementare.Basta codificare o offuscare i primi byte del datagramma.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top