Versions Compared

Key

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

Pakkeheaderen er omfattet av TCP, som igjen er en del av transportlaget innen nettverkskommunikasjon. Transportlaget er det fjerde av de sju lagene i OSI-modellen1, mellom nettverkslaget og sesjonslaget. En pakkeheader er med på å kontrollere at kommunikasjon mellom nettverksenheter foregår på en riktig måte. TCP mottar data fra en kilde og bryter ned store pakker i mindre pakker for sending på nettverket. Hver enkelt av disse pakkene må ha en pakkeheader for at mottakeren skal kunne gjenoppbygge større pakker ut ifra de mindre. Pakkeheaderen inneholder ti obligatoriske felter, samt et alternativer-felt som brukes ved behov.

Struktur

Til høyre ser man hvordan en pakkeheader er bygd opp. Pakkeheaderen har en variabel størrelse mellom 20 og 60 bytes, der de siste 40 består av valgfrie alternativer. De ulike delene er som følger:

Senderport (16 bit)

Her angis hvilken port det sendes fra.

Mottakerport (16 bit)

Her angis hvilken port det sendes til.

Sekvensnummer (32 bit)

Sekvensnummeret brukes til å kontrollere at pakkene mottas i riktig rekkefølge. Hver pakke sendes med et spesifikt sekvensnummer som er avhengig av det forrige sekvensnummeret pluss størrelsen på den forrige pakken. TCP kontrollerer dermed dette sekvensnummeret på mottakersiden og forsikrer seg om at de bygges sammen på korrekt måte.

Kvitteringsnummer (32 bit)

Kvitteringsnummeret er det neste sekvensnummeret som forventes fra den andre senderen. Hver pakke kvitteres for å opprettholde pålitelighet, da en kvittering indikerer at alle tegn fram til et gitt tegn i datastrømmen er mottatt. 

Data Offset (4 bit)

Data offset angir lengden på pakkeheaderen. Minimum er 20 bytes og maksimum er 60 bytes. Denne biten heter offset fordi den angir hvor pakkens datadel starter.

Reservert (3 bit)

Disse tre bitene er reservert for framtidig bruk.

Flagg (9 bit)

En pakkeheader kan sette ni flagg, som forteller hvilken status pakken har. De tre første er beregnet for framtidig bruk og vises ikke i figuren til høyre.

Framtidige og eksperimentelle ECN2-flagg:

  • NS: Nonce Sum, brukes av ECN for å sikre korrekt pakkeoverføring.
  • CWR: Congestion Window Reduced, et kvitteringsflagg brukt av ECN.
  • ECE: Explicit Congestion Echo, indikerer enten at mottakeren er ECN-kompatibel eller at en overføring som skal skje er en ECN-overføring.

Vanlige flagg:

  • URG: Urgent, forteller at «urgent pointer»-feltet er betydningsfullt.
  • ACK: Acknowledgement, forteller at kvitteringsfeltet er betydningsfullt. Alle pakker etter den første skal ha dette flagget satt.
  • PSH: Push, spør om å overføre bufret data til mottakerens applikasjon.
  • RST: Reset, spør om å resette forbindelsen.
  • SYN: Synchronize, spør om å synkronisere sekvensnummer. Synkronisering er en del av den første handshake-sekvensen som skjer før overføring av data. Dette flagget skal derfor bare settes i den første pakken sendt fra hver nettverksenhet. 
  • FIN: Finish, dette forteller at pakken er den siste som sendes. 
Vindustørrelse (16 bit)

Vindustørrelsen forteller mottakeren av denne pakken at den andre part kan motta datapakker opp til den gitte størrelsen. 

Sjekksum (16 bit)

Sjekksummen brukes for å sjekke etter feil i pakkeheader og/eller pakkedata.

«Urgent pointer» (16 bit)

Denne pekeren er en offset som viser til den siste viktige byten i datadelen av pakken. Det betyr at en mottaker av pakken kan stoppe der og prosessere den viktige informasjonen gitt tidlig i pakken før de andre dataene prosesseres. 

Alternativer (0-320 bit)

Alternativer-feltet inneholder ekstra altenativer for pakkeoverførselen. Eksempler på dette er blant annet algoritmer for variabel vindusstørrelse under overføring eller oppdelte kvitteringer.

Virkemåte

Opprette forbindelse

Ved oppretting av forbindelse sendes det ingen data, bare pakker med pakkeheadere. I den første pakken som en enhet sender til en mottaker vil pakkeheaderens SYN-flagg være satt, og et tilfeldig sekvensnummer følger med. Dette ber mottakeren om å starte synkronisering og gjøre seg klar til dataoverføring. Den andre enheten vil så sende en pakke tilbake med SYN og ACK satt, der sekvensnummer er det samme og kvitteringsnummeret er sekvensnummer økt med 1. I det siste trinnet sender den første enheten en pakke tilbake igjen med ACK satt, sekvensnummer likt forrige kvitteringsnummer og kvitteringsnummer likt det forrige kvitteringsnummer økt med 1. Dermed er forbindelsen opprettet, og enhetene kan begynne dataoverføring.

Dataoverførsel

Under overføring av data brukes pakkeheaderen for det meste som et kontrollorgan for å forsikre at det riktige antall pakker settes sammen i riktig sekvens. Dette skjer ved hjelp av sekvensnummer, kvitteringsnummer og sjekksum.

Avslutte forbindelse

Når en av enhetene ønsker å avslutte forbindelsen, settes FIN-flagget i den siste pakken fra enheten. Tilbake får den en ACK fra enhet to, som i etterkant sender sin FIN-pakke. Denne besvares igjen med ACK fra den første enheten, før forbindelsen til slutt lukkes.

Forklarende video

Widget Connector
urlhttps://www.youtube.com/watch?v=h-9Fo40vSOQ

Image Modified

Figur 1: En strukturell framstilling av pakkeheader og pakkedata.

Image Removed

Image Added

Figur 2: Hvordan pakkeheaderen vises i en Wireshark-fangst.

Forklarende video

Image Added


Figur 3: En forbindelse opprettes mellom to enheter.

Image Added

Figur 3: En avsluttet forbindelse mellom to enheter.