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

...

Vegard Flovikholm Farstad
Joar Krohn Mauseth

...

 

 

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.

...

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:

 

 




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.

...

-----------------------------------(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

...