TCP-pakke

Fra IT2
Hopp til: navigasjon, søk

En TCP-pakke er delt inn i et hode(header) og eventuell nyttelast. Hodet på selve pakken inneholder ikke noe informasjon om hvem som skal motta den, men den har informasjon om hvilken port den skal inn og ut på. Hodet har også en variabel lengde, dette er pga tilleggsinformasjonen. Denne informasjonen er ikke nødvendig på alle pakkene helle. Prisen for denne fleksibiliteten er at man da trenger et ekstra felt i pakkehode, lengdefeltet, som sier hvor stor pakkehodet er, altså viser om tilleggsinformasjon er med eller ikke.


Første bitblokka i pakkehodet er øverst til venstre, og så følges den som en vanlig tekst. Merk at det er bitblokka eller posisjonen som avgjør hvilken informasjon man leser. Dette er forskjellig fra http-protokollen, hvor det er ledetekst foran et datafelt med variabel lengde.

Tcp-pakke.jpg

Avsenders port: Portnummeret til avsenders applikasjon.

Mottakers port: Portnummeret til mottakers applikasjon.

TCP bruker porter for at applikasjoner skal kunne benytte protokollen samtidlig (multipleksing). Avsender og mottakers portnummer, som består av 16bit (65 536 mulige portnummere). Portene fra 0 til 1023 er reserverte og brukes av de store og velkjente applikasjonene, for eksempel web med port:80, SSH port:22. Resten av portene er kortlevende porter, og blir opprettet etter behov.


Sekvensnummer: Her er sekvensnummeret til første databyte i nyttelasten. Når en ny TCP-forbindelse blir etablert, velger den en helt tilfeldig startverdi, som kalles ISN (Initial Sequence Number). Her fra øker sekvensnummeret med 1 for hver overført byte opp til verdien 4 294 967 295((2^32)-1). Da starter den på 0 igjen.


Kvitteringsnummer: Her finner vi kvitteringsnummer, eng: Acknowledgement-number. Nummeret som blir brukt her, er nummeret sekvensnummeret hos mottaker vil få i neste pakke. Altså er bekreftelse på at alle oktetter i overføringen frem til nå er korrekt mottatt.


Lengde: Feltet som det sier, forteller oss lengden på pakkehodet, altså sier hvor mange 32bits ord hodet består av. Som nevnt ovenfor kan denne variere, derfor må vi ha en som kan fortelle oss lengden ved å se i pakkehodet.


Ubrukt: Feltet er ikke i bruk. Ment for fremtidig snax.


Flagg: Feltet har like mange bit som flagg, altså 6. Dersom en bit har verdien 1, er flagget satt. Betydningen er slik:

  • 1 URG (Urgent): Inneholder viktig informasjon i viktig-peker-feltet(forklart nedenfor).
  • 2 ACK (Acknowledgement): Pakken inneholder informasjon i kvitteringsfeltet. Sammen med SYN brukes den i 3-way-handshake i TCP.
  • 3 PSH (Push): Må videreformidle data med en gang.
  • 4 RST (Reset): Varsler at port ikke er i bruk.
  • 5 SYN (Synchronize): Brukes for å initiere kommunikasjon, ved TCP-trafikk.
  • 6 FIN (Finish): Settes når to kommuniserende datamaskiner skal avslutte forbindelsen. Besvares med ACK, og hver maskin på gi FIN.

Vindu: Brukes til flytkontroll og implementerer glidende vindu. Forteller hvor mye data avsender av pakken er i stand til å ta imot akkurat i det øyeblikket.


Sjekksum: Brukes for å finne bitfeil. Denne beregnes ved å summere pakkehodet, nyttelasten og noe informasjon fra nettverkslaget(avsender og mottakers IP-adresse, protokolltype og pakkelengde). Grunnen for at det er tatt med fra nettverkslaget er for å sikre seg mot pakker som har fått feil rute.


Viktig peker: Flagget URG blir brukt om det ligger informasjon her. Summen av denne pekeren og sekvensnummeret peker på siste byte av viktig data. Brukes for å sende høyt prioriterte pakker raskere gjennom mottakerens buffer.


Tilleggsinformasjon: Brukes ved oppkoblingen av en forbindelse, og inneholder en rekke valgfrie opsjoner. Parametere som er vanlige er MSS (Maximum Segment Size). MSS spesifiserer den største pakkelengden som avsender av pakken kan godta. Dette er kjekt da en forbindelse via TCP vil optimalisere pakkelengden i forhold til de underliggende lagene den arbeider på.


Nyttelast: Dette er data som har blitt gitt fra applikasjonslaget. Denne inneholder bare informasjon da det er en oppkobling, nedkobling eller blir sendt kvitteringer.