Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 5.3

Skrevet av Vegard Flovikholm Farstad og Joar Krohn Mauseth

 

Widget Connector
urlhttps://www.youtube.com/watch?v=UTNkCZZTbV8&feature=youtu.be&hd=1

TDAT2004 - Datakommunikasjon med nettverksprogrammering

Tema 28 - Transportlaget:

...

UDP header sjekksum

...

 

Litt om UDP

Oppbyggingen av en UDP-pakke (egentlig datagram):

...

UDP (User Datagram Protocol) er en protokoll som plasseres på transportlaget iht. OSI-modellen for lagdelt kommunikasjon. UDP er forbindelsesløst og upålitelig, men gir rask respons bl.a. p.g.a. lite pakkeoverhead, ingen tilstandsorientering og ingen retransmisjon av pakker. RFC 768 inneholder bestemmelser for UDP protokollen og beregning av sjekksummen.

 

Sjekksum er en headerlinje av pakkehodet som er frivillig (den kan settes til 0).
Sjekksum åpner opp for deteksjon av feil, og feilruting av pakker.

 De hovedsaklige prinsippene om UDPs virkemåte er nærmere forklart i forrige kapittel.

Ønsket funksjonalitet

 

Man ønsker å oppdage pakker som inneholder feil/har blitt utsatt for støy. Om man tar alle pakker for “god fisk”, kan man f.eks. ende opp med å sende svar til feil adresse, vise feil farger, spille høy lyd når det skulle vært stille, skyte en motspiller når man skulle skifte våpen, og lignende.

Virkemåte

 

RFC 768 - User Datagram Protocol sier at feltet checksum i UDP-datagrammet er beregnet på bakgrunn av:

...

Hvis sjekksummen angitt i UDP-headeren er 0, har ikke sender beregnet en sjekksum. Hvis sjekksummen beregnes til 0, skal den sendes som 0xFFFF, som er 1-er komplement til 0 (0x0000).

 

Eksempel på kalkulering og kontroll av sjekksum

Skal beregne sjekksummen til dette UDP datagrammet:

Image RemovedImage Added

UDP-headere: Avsenderport: 60330, mottakerport: 80, lengde: 14. Nyttelast er 0x484549 som e ASCII for “HEI”"HEI".
Vi skal sende fra IP adresse 192.168.1.45 til 192.168.1.22. UDP har protokollnummer 17 (0x21).
Da ser pseudo-headeren vår slik ut:

 

...

Avsenders IP-adresse: 192.168.1.45 (0xC0A8012D)

...

Mottakers IP-adresse:

192.168.1.22 (0xC0A80116)

...

Null-padding

0x00

...

Protokollnummer

17(0x21)

...

UDP-lengde

14(0x000E)

Image Added


 

Vi grupperer hvert felt av pseudo-headeren i segmenter på 16-bits hver.

(COA8+012D+C0A8+0116+0021+000E)16=183C216Image Added

Dere ser kanskje at summen på 20 bits, som gjør at vi får overflow på en 16-bits enhet. Vi gjør all mellomregning først, så tar vi hånd om dette til slutt, for husk; det er kun satt av 16-bits til checksum i UDP-headeren.

Nå som vi har summert feltene i pseudo-headeren, er det på tide å summere dette med feltene i UDP-headeren:

(183C2+EBAA+001E+000E+4845+0049)16=2B82616Image Added

Merk at vi har to tilfeller her. Når sender beregner sjekksum, er sjekksumfeltet i UDP headeren 0. Når mottaker beregner den, er den forskjellig fra 0.

...

Splitter summen i to deler: 0x47D9 og 0x0002, og summerer disse og får:

(1011 1000 0010 1000)2=B82816Image Added

Nå gjør vi en bitvis NOT operasjon og får 0x47D7

...

(Dersom summen av 16. bit blir større enn 1, vil tillegget adderes inn bakfra)

=   0101 1011 1010 10011001 

= 0x5BA9

Adderer med sjekksummen oppgitt av sender:

...

1-er komplement av foreløpig sjekksum:

(0101 1100 0111 1111)2=5C7F16FFFF16Image Added

Sjekksummen inneholder ikke utelukkende 1-ere → mottaker vet at pakken inneholder feil.

Referanseliste

 

...

-----------------------------------(frist: Mandag 27.02, kl 15:00)----------------------------------------

Nyttige lenker:

    https://tools.ietf.org/html/rfc1071    (Computing the Internet Checksum)

   

 

Temasiden starter med å angi:

  • Emnekode og emnenavn

  • Oppgavenummer og tema

  • Navn på deltakerne

  • Video (embeddes på siden)

(Dropper innholdsfortegnelsen)

1. Innledning

Hvor hører det valgte tema hjemme i lagmodellen. Hvilke standarder eller bestemmelser gjelder for dette temaet.

2. Ønsket funksjonalitet  

Hva er det man ønsker å oppnå, hvilke funksjonelle mangler vil man bøte på, hvorfor har man denne tjenesten eller dette systemet.

3. Virkemåte

Beskriv hvordan ting fungerer og gjøres. Oppbygning og struktur. Forklare med illustrasjoner eller skjermklipp, bilder eller analyse av pakkefangst.

4. Referanser

Når man i den løpende teksten omtaler standarder, organisasjoner eller annet skal dette refereres. Referanselisten føres her (ikke URL i den løpende teksten)

-----

Konvertering av IP-adresse fra desimal til hexadesimal vha Windows Powershell (kjør script).

Eksempel: 192.168.42.72 til hex:

 

$Octet1 = "{0:X2}" -f 192
$Octet2 = "{0:X2}" -f 168
$Octet3 = "{0:X2}" -f 42
$Octet4 = "{0:X2}" -f 72
$IPAddress = "0x"+$Octet1 + $Octet2 + $Octet3 + $Octet4
$IPAddress

 

UDP Checksum and Pseudo header

UDP Checksum HowTo