Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

TCP bruker et sekvensnummer for å identifisere hver byte av data. På denne måten kan data som blir borte bli gjenoppbygget dersom packet loss skulle oppstå under overføringen. Pålitelighet oppnås ved at senderen oppdager data som har blitt tapt gjennom RTO og DupAcks, og sender den på nytt. Selvom tapt data blir gjensendt, er det likevel andre ting som kan 



Virkemåter

En TCP-forbindelse kan beskrives som en endelig tilstandsmaskin med 3 hovedfaser; opprettelse av forbindelse, dataoverføring og avslutning av forbindelse. I hver av disse fasene har vi også mindre faser. Overgang mellom faser skjer ved at de aktuelle enhetene sender meldinger mellom hverandre. Kortfattet så har vi 3 forskjellige meldinger som brukes:

  • SYN: (synchronized) melding som brukes når forbindelsen skal opprettes.
  • FIN: (finish) Brukes når forbindelsen skal avsluttes.
  • ACK: (acknowledment) Brukes som til å bekrefte en SYN- eller FIN-melding.

Opprette forbindelse

Enhver TCP-forbindelse begynner in en lukket (null) tilstand.
For å opprette en forbindelse brukes et treveis håndtrykk.

CLOSED

Standard tilstand som alle forbindelser starter i. Representerer at det ikke er noen forbindelse mellom den aktuelle enhetene, og er derfor en ”fiktiv” tilstand.

LISTEN

Enheten venter på en SYN-meding fra en klient. Det er vanligvis servere som er i denne tilstanden. Når enheten får svar (SYN), sendes en SYN+ACK-melding og den går videre til SYN-RECIEVED.

SYN-SENT

Enhetene har sendt en SYN-melding og venter på svar fra en annen enhet (vanligvis en server). Når den får et svar (SYN), sender den en SYN+ACK-melding og går videre til SYN-RECIEVED.

SYN-RECIEVED

Enheten har både sendt og fått en SYN-melding fra den andre enheten. Venter på en ACK-melding for å gå viderer til ESTABLISHED.

 

Dataoverføring

Her er begge enhetene (vanligvis server og klient) i en ESTABLISHED tilstand. Her kan data sendes fritt fram og tilbake mellom enhetene. Denne tilstanden vil holdes helt til forbindelsen avsluttes. Hvis en enhet vil avslutte forbindelsen sendes en FIN-melding og enhetene går over til FIN-WAIT-1. Hvis en enhet mottar en FIN-melding, vil den sende en ACK-melding og gå til CLOSE-WAIT.

 

Avslutte forbindelse

Startes når minst en av enhetene vil avslutte forbindelsen. Her brukes et fireveis håndtrykk, der hver enhet stenger forbindelsen uavhengig av den andre. Dette gjør at en TCP-forbindelse kan være ”halveis” åpen, der en enhet har stengt forbindelsen mens den andre ikke har det.

CLOSE-WAIT

Enheten har mottat en FIN-melding og venter nå på at den lokale brukeren vil bekrefte denne meldingen. Når den blir bekreftet vil det sendes en ACK-melding og enheten går til LAST-ACK.

LAST-ACK

Enheten har nå fått en FIN-melding og bekreftet denne med en ACK-melding. Nå venter den bekreftelse (ACK) fra den andre enheten. Når det får det vil den gå til CLOSED.

FIN-WAIT-1

Enheten venter på en ACK-melding som den selv har sendt, eller på en FIN-melding fra den andre enheten.

I første tilfellet vil den gå til FIN-WAIT-2.

I andre tilfellet vil den sende en ACK-meding og gå til CLOSING.

FIN-WAIT-2

Enhetene har fått en bekreftelse (ACK) på at den vil avslutte forbindelsen og venter på en FIN-melding fra den andre enheten. Når den får det vil den gå videre til TIME-WAIT.

CLOSING

Enheten har fått en FIN-melding og sendt en ACK-melding, men den har ennå ikke fått en bekreftelse (ACK) for sin egen FIN-melding som er sendt. Når den får det vil den gå til TIME-WAIT.

TIME-WAIT

Enhetene har nå fått en FIN-melding fra den andre enheten og bekreftet den, og den har sendt sin egen FIN-melding og fått den bekreftet av den andre enheten.

Etter en bestemt venteperiode vil enheten gå til CLOSED.

CLOSED

Se ”Opprette forbindelse” lenger oppe på siden.

Legg merke til at det ligger en timeout på slutten av denne fasen (TIME-WAIT). Dette er for å sikre at vi får bekreftet den siste FIN-meldingen og unngår overlapp med en ny forbindelse på samme port.


Referanser