6107 Operativsystemer og nettverk

Like dokumenter
6107 Operativsystemer og nettverk

6105 Windows Server og datanett

6105 Windows Server og datanett

Kapittel 4: Transportlaget

6105 Windows Server og datanett

6105 Windows Server og datanett

6107 Operativsystemer og nettverk

ITF20205 Datakommunikasjon - høsten 2011

6107 Operativsystem og nettverk

6107 Operativsystem og nettverk

Transport - laget (ende-til-ende protokoller) Internett Best-effort overføring. Best-effort nett kvaliteter

KTN1 - Design av forbindelsesorientert protokoll

Forelesning 1. Introduksjon til (eller repetisjon av) TCP/IP Datasikkerhet

6105 Operativsystem og nettverk

6105 Operativsystem og nettverk

Introduksjon til nettverksteknologi

Forelesning Oppsummering

Praktisk informasjon. Forelesning 1. Forelesningsform. Lærebok. Lærebok forts. Eksamen. Forelesninger. ØvingerØvinger

6107 Operativsystemer og nettverk

Oppsummering: Linjesvitsjing kapasiteten er reservert, og svitsjing skjer etter et fast mønster. Linjesvitsj

6105 Operativsystem og nettverk

Gjennomgang av kap Kommunikasjonsformer Typer av nettverk Adressering og routing Ytelse Protokoller

Høgskolen i Telemark EKSAMEN Operativsystem og nettverk inkludert denne forsiden og vedlegg. Merknader:

Litt mer detaljer om: Detaljerte funksjoner i datanett. Fysisk Lag. Multipleksing

Detaljerte funksjoner i datanett

Hva består Internett av?

6105 Windows Server og datanett

Flere detaljerte funksjoner i datanett

6105 Operativsystem og nettverk

Kommunikasjonsnett. Et kommunikasjonsnett er utstyr (maskinvare og programvare) for utveksling av informasjon

TDT4110 IT Grunnkurs: Kommunikasjon og Nettverk. Læringsmål og pensum. Hva er et nettverk? Mål. Pensum

Linklaget. Olav Lysne. (med bidrag fra Stein Gjessing og Frank Eliassen) Oppsummering 1

Kap 3: Anvendelser av Internett

Lagene spiller sammen

Løsningsforslag Gruppeoppgaver mars 2003

Tjenester i Internett. E-post, HTTP, FTP, Telnet

Notater: INF Datakommunikasjon

Datateknikk TELE1005-A 15H HiST-FT-IEFE

Sentrale deler av pensum i INF

2EOLJDWRULVNRSSJDYHQU L GDWDNRPPXQLNDVMRQ + VWHQ.,QQOHYHULQJVIULVWRNWREHU *MHQQRPJnVWRUVGDJRNWREHU

Linklaget. Feildeteksjon/feilretting - pålitelig overføring. Foreleser: Kjell Åge Bringsrud kjellb 2/9/2005 1

Ennå litt mer detaljer: Flere detaljerte funksjoner i datanett

EKSAMENSFORSIDE Skriftlig eksamen med tilsyn

1. Informasjonskapsler og pakkefangst. 2. Grunnleggende datakommunikasjon

Linklaget - avslutning

6105 Windows Server og datanett

Detaljerte Funksjoner i Datanett

6107 Operativsystemer og nettverk

6105 Windows Server og datanett

6105 Windows Server og datanett

HUB = multiport repeater

Kapittel 5 Nettverkslaget

IT Grunnkurs Nettverk 3 av 4

EKSAMENSFORSIDE Skriftlig eksamen med tilsyn

Løsningsforslag Gruppeoppgaver, 28. april 2. mai. 1. Metningskontroll ( Congestion control ) og ressursallokering.

Høgskolen i Telemark EKSAMEN Operativsystem og nettverk inkludert denne forsiden og vedlegg. Merknader:

6105 Windows Server og datanett

Sentrale deler av pensum i INF240. Hensikt. Pål Spilling og Kjell Åge Bringsrud

Obligatorisk oppgave nr 2 i datakommunikasjon. Høsten Innleveringsfrist: 04. november 2002 Gjennomgås: 7. november 2002

Høgskolen i Telemark EKSAMEN Operativsystem og nettverk inkludert denne forsiden og vedlegg. Merknader:

Brannmurer. fire wall (noun): A fireproof wall used as a barrier to prevent spread of fire.

MTU i nettverk Ei lita innføring i generelt nettverk. Av Yngve Solås Nesse Bildeseksjonen/MTA/Haukeland universitetssjukehus

6105 Windows Server og datanett

Løsningsforslag Gruppeoppgaver, januar INF240 Våren 2003

Kapittel 10 Tema for videre studier

Ennå litt mer detaljer: Flere detaljerte funksjoner i datanett

Dette er en demonstrasjonsside som vi skal bruke for å se litt nærmere på HTTP protokollen. Eksemplet vil også illustrere et par ting i PHP.

Computer Networks A. Tanenbaum

Flere detaljerte funksjoner i datanett

Det matematisk-naturvitenskapelige fakultet

6105 Windows Server og datanett

EKSAMENSFORSIDE Skriftlig eksamen med tilsyn

Linklaget. Feildeteksjon/feilretting - pålitelig overføring. Foreleser: Kjell Åge Bringsrud kjellb 2/17/2004 1

Beskrivelse av TCP/IP Introduksjon Vi har allerede skrevet litt om TCP/IP i kapitel 1, men her ønsker vi å utdype emnet.

Løsningsforslag. Datakommunikasjon

Huldt & Lillevik Ansattportal. - en tilleggsmodul til Huldt & Lillevik Lønn. Teknisk beskrivelse

Løsningsforslag til EKSAMEN

6105 Windows Server og datanett

in270 Datakommunikasjon, vår 03 forelesningsnotater, kap. 4

Utvikling av TCP og RED-moduler i en Javabasert Nettverkssimulator

Linklaget. Stop-and-Wait. Hvis vi ikke fyller opp røret. Fyll opp røret. Feildeteksjon/feilretting - pålitelig overføring

Gruppe KTN2 innlevering. Endringer gjort siden KTN1:

TTM4175: Etisk hacking. Lab E5: Nettverkssniffing

6105 Windows Server og datanett

Hva er en protokoll? INF1060 Introduksjon 2

Litt mer detaljer om: Detaljerte funksjoner i datanett. Fysisk Lag. Multipleksing

Opprinnelig IP-pakke inneholder 4480 Byte data. Dette er inklusiv IPheader. Max nyttelast på EthernetRammen er 1500 oktetter.

PRADS PASSIVE REAL-TIME ASSET DETECTION SYSTEM. Edward Fjellskål & Kacper Wysocki

6105 Windows Server og datanett

6105 Windows Server og datanett Jon Kvisli, HSN Skriveradministrasjon - 1. Utskrift i nettverk

Nettverkslaget. Fragmentering/framsending Internetworking IP

Prosjektet SAMKOM2016

Interprosess kommunikasjon. Berkeley Sockets. Hvordan identifiserer jeg hvem jeg vil snakke til? Hva må programmene gjøre?

6105 Windows Server og datanett

Flere Detaljerte Funksjoner i Datanett

UNIVERSITETET I OSLO

Innhold. Innledning... 13

Medium Access Control (MAC) Linklaget avslutning. Kjell Åge Bringsrud kjellb. Foreleser: 14/02/2006 1

6107 Operativsystem og nettverk

JSP - 2. Fra sist. Hvordan fungerer web? Tjenerside script HTML. Installasjon av Web-tjener Et enkelt JSP-script. Ønsker dynamiske nettsider:

Transkript:

6107 Operativsystemer og nettverk Leksjon 5 Transportlaget i TCP/IP TCP Transmission Control Protocol UDP User Datagram Protocol Pensum [Hallsteinsen] Kap. 4 Transportlaget Linker IANA Internet Assigned Numbers Authority» http://www.iana.org/ Oversikt over faste TCP og UDP portnummer:» http://www.iana.org/assignments/port-numbers Wikipedia:» http://en.wikipedia.org/wiki/transmission_control_protocol» http://en.wikipedia.org/wiki/user_datagram_protocol 6107 Operativsystem og nettverk Jon Kvisli, HSN Transportlaget i TCP/IP - 1

Transportlaget i TCP/IP OSI modell TCP/IP modellen Lag 5-7 Applikasjoner / app.protokoller FTP filoverføring POP e-post HTTP web DNS Streaming Lag 4 Transport lag TCP - Transmission Control Protocol forbindelsesorientert, pålitelig UDP forb.løs Lag 3 Nettverkslag (Internetlag) IP - Internet Protocol Lag 1 og 2 Link/linjelag Nettverk 1 f.eks. Ethernet Nettverk 2 f.eks. WLAN Nettverk 3 f.eks. UMTS 6107 Operativsystem og nettverk Jon Kvisli, HSN Transportlaget i TCP/IP - 2

Applikasjonenes transportbehov Applikasjonenes transportbehov Sende hele datafiler ( = bytestrømmer)» Feks. filoverføring, e-post, nedlasting av html sider Pålitelig og feilfri overføring av data Forbindelse (connection) mellom klient og tjener, f.eks:» forbindelse mellom SQL klient og databasetjener» forbindelse mellom e-post klient og e-post tjener Hva tilbyr IP? Sending av enkelt-pakker, ikke hele filer Ikke feilfri, ikke garanti for at pakkene leverer i korrekt rekkefølge Forbindelsesløs hver pakke behandles for seg Derfor: Transportlaget må løse de oppgave IP ikke dekker! 6107 Operativsystem og nettverk Jon Kvisli, HSN Transportlaget i TCP/IP - 3

6107 Operativsystem og nettverk Jon Kvisli, HSN Transportlaget i TCP/IP - 4

Transportlagets oppgaver (repetisjon fra 6105 Windows Server og datanett) Applikasjonslag Klientapplikasjon Applikasjonsprotokoll meldinger (bytestrømmer) Tjener applikasjon Transportlag TCP Transportprotokoll TCP-segmenter TCP logisk forbindelse Ende-til-ende forbindelse mellom applikasjoner, dvs: Overfører data mellom applikasjoner som om de var direkte sammenkoblet Er avhengig av et underliggende nettverk (nettverkslag) Nettverkslaget (IP) må kunne bringe pakkene fram til TCP på riktig maskin i nettet TCP er bindeledd mellom applikasjonene og nettverket. 6107 Operativsystem og nettverk Jon Kvisli, HSN Transportlaget i TCP/IP - 5

Transportlagets oppgaver (repetisjon fra 6105 Windows Server og datanett) Applikasjonslaget Kommuniserer ved hjelp av meldinger (ofte som lesbar tekst) Meldinger er sammenhengende bytestrømmer Meldingene / bytestrømmene kan være svært lange» f.eks. ved overføring av en stor e-postmelding, fil eller html-side Transportlaget (TCP) Etablerer en logisk forbindelse mellom applikasjonene Deler applikasjonenes meldinger opp i pakker (segmenter), som kan sendes i nettet Adresserer pakkene til riktig mottakerprogram (med portnummer) Garanterer pålitelig og feilfri overføring av data mellom applikasjonene Takler køsituasjoner og varierende overføringskapasitet i nettet 6107 Operativsystem og nettverk Jon Kvisli, HSN Transportlaget i TCP/IP - 6

TCP er "bytestrømorientert" Webtjener Bytestrøm (fil) Webleser Bytestrøm (fil) TCP IP Segmenter TCP IP Sendebuffer hos avsender Mottaksbuffer hos mottaker Bytestrøm TCP-segment Nyttelast TCP-hode Nyttelast TCP-hode IP-pakke Nyttelast IP-hode Nyttelast IP-hode Internettverk 6107 Operativsystem og nettverk Jon Kvisli, HSN Transportlaget i TCP/IP - 7

TCP er "bytestrømorientert" TCP hos avsender TCP mottar data som en sammenhengende bytestrøm fra avsenderapplikasjonen Mellomlagrer datastrømmen i et sendebuffer. Deler bytestrømmen opp i flere TCP-segmenter (pakker)» Legger på et TCP-hode på hvert segment Bruker IP for å sende hvert segment som en IP-pakke» IP legger på et IP-hode foran i hver pakke TCP hos mottaker Mottar segmenter (pakker) fra nettverkslaget (IP)» IP har fjernet IP-hodet før pakken leveres til TCP Fjerner TCP-hodet og setter sammen segmentene i riktig rekkefølge Mellomlagrer mottatte data i et mottaksbuffer Leverer data som en sammenhengende bytestrøm til mottakerapplikasjonen Applikasjonene "ser" aldri segmentene, bare bytestrømmen 6107 Operativsystem og nettverk Jon Kvisli, HSN Transportlaget i TCP/IP - 8

Adressering i transportlaget (repetisjon fra 6105 Windows Server og datanett) Klientside epost-leser webleser IMAP tjener Tjenerside http tjener dns tjener socket portnr=49151 socket portnr=49152 socket portnr=993 socket portnr=80 socket portnr=53 Applikasjonene er koblet til transportlaget via adressèrbare porter TCP TCP IP (10.42.42.102) IP (10.42.42.90) Klientprogrammer får tildelt portnummer fortløpende av TCP vanligvis mellom 49151og 65535» Obs! Feil i læreboka s. 71. Kalles også kortlivede portnummer tildeles når forbindelsen etableres "frigjøres" når forbindelsen kobles ned Tjenerprogrammer lytter på "faste" portnummer» Velkjente portnummer: 0-1023» Registrerte portnummer: 1024 49150» Obs! Feil i læreboka s. 71. Portnummer beholdes så lenge tjenerprogrammet kjører (porten er åpen) 6107 Operativsystem og nettverk Jon Kvisli, HSN Transportlaget i TCP/IP - 9

Adressering i transportlaget (repetisjon fra 6105 Windows Server og datanett) Flere applikasjoner bruker TCP/IP på samme maskin! IP-adresser identifiserer hver maskin i nettet. TCP må kunne adressere hver enkelt applikasjon på én maskin. TCP må kunne sende data mottatt fra nettet til riktig applikasjon. Socket / port Applikasjonene kobler seg til TCP gjennom hver sin port (socket)» Kan betraktes som et kontaktpunkt for applikasjoner mot nettet Hver port/socket har et 16 bits portnummer (0-65535) En port/socket adresseres med en socketadresse» Eks: 10.42.42.90:80 socketadresse =» socketadresse til webtjeneren på server90 IP-adresse : portnr Portnr kan angis i URL'er i en nettleser» http://server90:80 eller http://10.42.42.90:80» (nettleseren vet at http-protokollen bruker port 80 som standard) Må angi portnr i URL hvis webtjener er installert på et annet portnr:» http://server90:81 eller http://10.42.42.90:81 6107 Operativsystem og nettverk Jon Kvisli, HSN Transportlaget i TCP/IP - 10

Adressering i transportlaget (repetisjon fra 6105 Windows Server og datanett) Applikasjonsprotokoll Tjenerapplikasjon Applikasjonsprotokoll Klientapplikasjon Kortlivet port 49151 TCP-hode 80 Transportlagets protokoll Data Til: 49151 Fra: 80 Til: 80 Fra: 49151 Data Olav Skundberg Innføring i datakommunikasjon Transportlagets protokoll Velkjent port Med pakkesvitsjing må alle pakker inneholde informasjon om hvor pakken skal og hvor den kommer fra. På transportlaget brukes portnummer som adresse i pakkehodet. 6107 Operativsystem og nettverk Jon Kvisli, HSN Transportlaget i TCP/IP - 11

Kjente portnr til noen applikasjoner (repetisjon fra 6105 Windows Server og datanett) Applikasjon/protokoll Bruksområde TCP UDP BitTorrent fildeling 6881-6999 Counter Strike spill 27020-39 1200, 27000-15 DNS navneoppslag 53 53 FTP filoverføring 20 / 21 HTTP / HTTPS websider 80 / 443 IMAP4 e-post 143/ 993 itunes musikk 3689 Kazaa fildeling 1214 LDAP katalogtjeneste 389 389 MS SQL Server database 1433 1433 MSN Messenger chat 1863 m.fl. 1863 m.fl. MySQL Server database 3306 3306 Napster musikkdeling 6699 Oracle database database 1521 1521 POP3 e-post 110 Remote Desktop fjernpålogging 3389 SMTP e-post 25 World of Warcraft spill 3724 Xbox Live spill 3074 3074 6107 Operativsystem og nettverk Jon Kvisli, HSN Transportlaget i TCP/IP - 12

Pålitelig og utpålitelig dataoverføring Avsender 4 3 1 Kvittering for mottatt pakke 1 Mottaker Olav Skundberg Innføring i datakommunikasjon Pålitelig = data kommer frem, er korrekte og i rett rekkefølge Obs! Pålitelig er ikke det samme som sikker! - Sikker krever kryptering. Pålitelig overføring krever tilbakemelding (kvittering) Hvordan skal man ellers kunne vite om overføringen var vellykket? Tilbakemelding krever at det er etablert en to-veis forbindelse Meldinger/pakker må kunne sendes begge veier (dupleks). To protokoller i transportlaget: TCP oppretter to-veis forbindelse og tilbyr pålitelig overføring UDP oppretter ikke forbindelse, garanterer ikke pålitelig overføring 6107 Operativsystem og nettverk Jon Kvisli, HSN Transportlaget i TCP/IP - 13

Pålitelig dataoverføring med TCP Hvilke problemer kan oppstå? 1. Segmentene kan komme frem i vilkårlig rekkefølge» Fordi de kan rutes ulike veier i nettet 2. Segmenter kan bli borte på vegen blir aldri mottatt 3. Bitfeil: Ett eller flere av bitene i segmentet kan bli endret/feiltolket 4. Det kan oppstå kø i langsomme deler av nettet Hvordan sikre pålitelig overføring? 1. Segmentene må nummereres slik at mottaker kan oppdage rekkefølgen» I praksis er det hver byte i nyttelasten som nummereres 2. Mottaker må kvittere for mottatte segmenter» Avsender sender segmentet på nytt hvis kvittering er mottatt innen time-out 3. Bitfeil kan oppdages med sjekksum» Segmenter med feil kastes av mottaker må sendes på nytt 4. Må kunne regulere sendehastigheten etter nettets kapasitet 6107 Operativsystem og nettverk Jon Kvisli, HSN Transportlaget i TCP/IP - 14

Bit nr. TCPs pakkeformat 0 15 16 31 Byte nr. 0-31 Avsenders portnr (16 bit) Mottakers portnr (16 bit) 1-4 32-63 Sekvensnummer (32 bit) 5-8 64-95 Kvitteringsnummer (32 bit) 9-12 96-127 Lengde (4 bit) Ubrukt (6 bit) Flagg 1 2 3 4 5 6 Vindu (16 bit) 13-16 128-159 Sjekksum (16 bit) Viktig peker (16 bit) 17-20 Tilleggsinformasjon (Options) (n * 32 bit) 160-21- - - - - - - Nyttelast = data fra applikasjonslaget - - - - - - Olav Skundberg Innføring i datakommunikasjon 6107 Operativsystem og nettverk Jon Kvisli, HSN Transportlaget i TCP/IP - 15

TCPs pakkeformat TCP-hode (header) Avsenders portnr (Source port) Avsenderapplikasjonens portnr Mottakers portnr (Destination port) Mottakerapplikasjonens portnr Sekvensnr (Sequence No) Nummer på første byte segmentets nyttelast Kvitteringsnr (Acknowledge No) Sekvensnr på neste byte som kan mottas Lengde (Header Length) Lengden på TCP-pakkehodet, inkl. tilleggsinfo Ubrukt (Reserved) Reservert for fremtidig bruk Flagg (Code) 6 enkeltbits (jfr. boolean: 0 = true, 1 = false ) 1. URG (Urgent) Pakken inneholder viktige data som må gis prioritet 2. ACK (Acknowledgement) Pakken fungerer som bekreftelse/kvittering 3. PSH (Push) TCP tvinges til å videreformidle data straks 4. RST (Reset) Brukes ved nedkobling av TCP-forbindelse 5. SYN (Synkronize) Brukes ved oppkobling av TCP-forbindelse 6. FIN (Finish) Brukes ved nedkobling av TCP-forbindelse Vindu (Window Size) Størrelse på ledig mottakerbuffer hos avsender Sjekksum (Checksum) Brukes for deteksjon av bitfeil i pakken Viktig peker (Urgent pointer) Peker på siste byte av prioriterte data i nyttelasten Tilleggsinformasjon (Options) Variabel størrelse n * 32 bits (ikke påkrevet) Nyttelast (TCP-body) inneholder data fra applikasjonslaget Noen segmenttyper har ikke nyttelast, f.eks. bare kvittering. 6107 Operativsystem og nettverk Jon Kvisli, HSN Transportlaget i TCP/IP - 16

Bytestrøm og sekvensnummer Webtjener Bytestrøm TCP Segmenter IP Webleser Bytestrøm TCP IP Sekvensnummer starter egentlig på en tilfeldig verdi ISN, som er satt = 1 her for enkelhets skyld Sendebuffer Byte nummer:... 378 377 376 Bytestrøm Mottaksbuffer Byte nr..10 9 8 7 6 5 4 3 2 1 TCP-segment Data TCP-hode Data sekvensnr=376 TCP-hode sekvensnr=1 IP-nett 6107 Operativsystem og nettverk Jon Kvisli, HSN Transportlaget i TCP/IP - 17

Bytestrøm og sekvensnummer TCP hos avsender: Mottar en bytestrøm fra applikasjonslaget Mellomlagrer data i et sendebuffer. Nummerer hver byte med et sekvensnummer (teller)» Teller bytes så lenge forbindelsen er i bruk Bryter bytestrømmen opp i flere TCP-segmenter (pakker) Legger på et TCP-hode på hvert segment Leverer TCP-segmentet som data til nettverkslaget (IP) TCP hos mottaker: Mottar TCP-segmentet som data fra nettverkslaget (IP) Fjerner TCP-hodet Setter sammen segmenter i riktig rekkefølge ved hjelp av sekvensnummer Mellomlagrer mottatte data i et mottaksbuffer Leverer data som en sammenhengende bytestrøm til mottakerapplikasjonen Applikasjonene "ser" aldri segmentene, kun bytestrømmen 6107 Operativsystem og nettverk Jon Kvisli, HSN Transportlaget i TCP/IP - 18

Sekvensnr og kvittering av pakker Nettleser (klient) Webtjener 1 Data 375 Sekvensnr. : 1 Kvitteringsnr. : 1 HTTP GET ACK Sekvensnr. : 1 Kvitteringsnr. : 376 2 HTTP ok Sekvensnr. : 1 Kvitteringsnr. : 376 Data 1460 3 HTTP forts. Sekvensnr. : 1461 Kvitteringsnr. : 376 Data 1460 4 5 Sekvensnr. : 376 Kvitteringsnr. : 2921 ACK HTTP forts. Sekvensnr. : 2921 Kvitteringsnr. : 376 Data 1460 6 8 Sekvensnr. : 376 Kvitteringsnr. : 4464 ACK HTTP forts. Sekvensnr. : 4381 Kvitteringsnr. : 376 Data 83 7 Denne loggfilen kan hentes på www.datakom.no og vises i WireShark Olav Skundberg Innføring i datakommunikasjon 6107 Operativsystem og nettverk Jon Kvisli, HSN Transportlaget i TCP/IP - 19

Sekvensnr og kvittering av pakker 1. Første segment fra klient, med data fra app.laget (HTTP-GET) 2. Tjeneren kvitterer med en TCP-kvittering (ACK flagg=1) Kvitteringsnr = sekvensnr til siste mottatte databyte + 1 Ingen nyttelast (data fra appl.laget) 3. Første segment fra tjeneren med app.data (1460 B) Sekvensnr = 1 : pakkens datadel starter med byte 1 i datastrømmen Kvitteringsnr er uendret fordi det ikke er mottatt mer data fra klienten 4. Neste segment fra tjeneren med app.data (neste 1460 B) Sekvensnr: Datadelen starter med byte nr 1461 i datastrømmen 5. Klienten kvitterer for mottatte data (ACK flagg = 1) Kvitteringsnr betyr at de første 2920 bytes fra tjener er mottatt korrekt 6. Tredje segment med app.data fra tjeneren 7. Siste segment med app.data fra tjeneren Datadelen er ikke full og inneholder bare 83 bytes 8. Kvittering for at klienten har mottatt alle 4463 bytes av websiden 6107 Operativsystem og nettverk Jon Kvisli, HSN Transportlaget i TCP/IP - 20

TCP er forbindelsesorientert (repetisjon fra 6105 Windows Server og datanett) Appl. Appl. Appl. POP Appl. HTTP POP Porter HTTP Adresse Multipleksing logiske forbindelser Internettverk TCP etablerer logiske forbindelser mellom kommunikasjonspartene (klient- og tjenerapplikasjon) Figuren er hentet fra Frode Sørensen: Innføring i nettverk, IDG Books Norge 6107 Operativsystem og nettverk Jon Kvisli, HSN Transportlaget i TCP/IP - 21

TCP er forbindelsesorientert (repetisjon fra 6105 Windows Server og datanett) Logisk forbindelse = en tenkt kommunikasjonskanal mellom to socketer (porter) Forbindelsen må etableres før dataoverføring kan starte Tre faser: 1. Etablere (åpne) en TCP-forbindelse 2. Sende og motta data på forbindelsen 3. Koble ned (lukke) TCP-forbindelsen 6107 Operativsystem og nettverk Jon Kvisli, HSN Transportlaget i TCP/IP - 22

Oppkobling av TCP-forbindelse Part 1 (klient) Flagg: SYN=1 Sekvensnr. = ISN 1 (0) Kvitteringsnr. = ikke gyldig Flagg: ACK=1 Sekvensnr. = ISN 1 + 1 Kvitteringsnr. = ISN 2 + 1 Olav Skundberg, Innføring i datakommunikasjon Part 2 (tjener) Flagg: SYN=1, ACK=1 Sekvensnr. = ISN 2 (0) Kvitteringsnr. = ISN 1 + 1 Her er forbindelsen etablert Alltid klienten som starter etablering av TCP-forbindelsen Etableringsdialogen kalles for 3-way handshake (3-veis håndtrykk) ISN = Initiellt SekvensNummer 6107 Operativsystem og nettverk Jon Kvisli, HSN Transportlaget i TCP/IP - 23

Oppkobling av TCP-forbindelse Ved oppstart åpner tjenerapplikasjonen en fast port for lytting (PASSIVE OPEN) TCP åpner porten og applikasjonen er klar for å etablere forbindelser Klienten etablerer forbindelse til oppgitt tjener/applikasjon med en treveis handshake (ACTIVE OPEN): TCP på klientsiden tildeler klienten neste ledige portnummer og sender SYN til TCP på tjenersiden TCP på tjenersiden åpner forbindelse til tjenerapplikasjonen (OPEN_RECEIVED) og bekrefter med SYN og ACK til klienten TCP på klientsiden åpner forbindelse til klientapplikasjonen (OPEN_SUCCESS) og bekrefter med ACK til tjener TCP-forbindelsen er nå etablert og klar for dataoverføring 6107 Operativsystem og nettverk Jon Kvisli, HSN Transportlaget i TCP/IP - 24

Data 375 TCP på klient Sekvensnr. : 1 Kvitteringsnr. : 1 Sekvensnr. : 376 Kvitteringsnr. : 2921 Sende og motta data ACK=1 ACK=1 Sekvensnr. : 376 Kvitteringsnr. : 4464 ACK=1 ACK=1 ACK=1 ACK=1 ACK=1 ACK=1 TCP på webtjener Sekvensnr. : 1 Kvitteringsnr. : 376 Sekvensnr. : 1 Kvitteringsnr. : 376 Sekvensnr. : 1461 Kvitteringsnr. : 376 Sekvensnr. : 2921 Kvitteringsnr. : 376 Sekvensnr. : 4281 Kvitteringsnr. : 376 Olav Skundberg Innføring i datakommunikasjon Data 1460 Data 1460 Data 1460 Data 83 Data Sekvensnr. : 376 ACK=1 348 Kvitteringsnr. : 4464 ACK=1 Sekvensnr. : 4464 Data Sekvensnr. : 724 Kvitteringsnr. : 724 239 ACK=1 Kvitteringsnr. : 4703 6107 Operativsystem og nettverk Jon Kvisli, HSN Transportlaget i TCP/IP - 25

Sende og motta data Klientapplikasjon sender data til TCP (SEND) TCP bufrer data i et sendebuffer TCP deler opp data i segmenter og sender med Seq = nr. på første databyte TCP på tjenersiden Mottar og bufrer datasegmentene i et mottakerbuffer Bekrefter mottak av hvert segment med ACK, Ack.No = nr. siste mottatte databyte + 1 Leverer data til tjenerapplikasjonen (DELIVER) Den vituelle forbindelsen er full dupleks Begge parter kan sende / motta data samtidig. 6107 Operativsystem og nettverk Jon Kvisli, HSN Transportlaget i TCP/IP - 26

Eksempel fra WireShark Logging av to HTTP-GET requests Kan lastes ned fra: http://datakom.no/ressurser/logger/iid-http.pcap 6107 Operativsystem og nettverk Jon Kvisli, HSN Transportlaget i TCP/IP - 27

6107 Operativsystem og nettverk Jon Kvisli, HSN Transportlaget i TCP/IP - 28

Nedkopling av TCP-forbindelse Part 1 (klient) Part 2 (tjener) Flagg: FIN=1 Her er den ene retningen av forbindelsen koblet ned Flagg: ACK=1 Flagg: ACK=1 Flagg: FIN=1 Disse kan sendes i samme pakke Olav Skundberg, Innføring i datakommunikasjon Her er begge retningene koblet ned Det finnes flere mulige nedkoblings sekvenser Begge sider (både klient og tjener) kan ta initiativet til å kople ned Èn retning av forbindelsen kobles ned av gangen gir motparten mulighet for å sende resterende data før den kobler ned sin retning 6107 Operativsystem og nettverk Jon Kvisli, HSN Transportlaget i TCP/IP - 29

Nedkopling av TCP-forbindelse Skjer med utveksling av 3-4 pakker 1. Klientapplikasjonen ber lokal TCP om å koble ned (CLOSE) TCP på klientsiden sender FIN til TCP på tjenersiden 2. TCP på tjenersiden mottar FIN Informerer tjenerapplikasjon om at klient vil avslutte TCP på tjenersiden bekrefter med ACK (eller ACK + FIN) til klienten» TCP på tjenersiden venter evt. med FIN til tjenerapplikasjon er klar til å avslutte 3. TCP på klientsiden mottar FIN Varsler klientapplikasjonen om at forbindelsen er avsluttet ( TERMINATE) TCP på klientsiden bekrefter med ACK tilbake til tjener Venter en stund for å sjekke om FIN fra tjener blir sendt på nytt 4. TCP på tjenersiden mottar siste ACK fra klient Informerer tjenerapplikasjonen om at forbindelsen er avsluttet ( TERMINATE) 6107 Operativsystem og nettverk Jon Kvisli, HSN Transportlaget i TCP/IP - 30

Tilstander (states) i TCP 6107 Operativsystem og nettverk Jon Kvisli, HSN Transportlaget i TCP/IP - 31

Tilstandskontroll Tilstander i TCP TCP holder orden på hvilken fase forbindelsene er i Hver TCP-forbindelse/socket har en tilstand avhengig av hvilken fase forbindelsen er i. De viktigste tilstander en TCP-socket kan ha: LISTEN Tjenerporten er åpnet og klar for etablering av forbindelser (tjener lytter) ESTABLISHED TCP-forbindelse er etablert (med 3-veis håndtrykk) og data kan sendes TIME_WAIT Klienten har bedt om nedkobling med FIN Tjener har kvittert med ACK & FIN Klient har kvittert med ACK Klient må vente en stund i tilfelle retransmisjon av siste ACK & FIN fra tjener (dersom siste ACK fra klient ikke kommer fram til tjener). CLOSE_WAIT Klient har bedt om nedkobling med FIN TCP på tjener kvitterer med ACK Tjenerporten står i CLOSE_WAIT til tjenerapplikasjonen har sagt ok til nedkobling (at den er ferdig med å sende data). TCP på tjener sender FIN CLOSED Porten er lukket (ikke i bruk) og ikke synlig med netstat. Vise alle åpne TCP-porter med portnr og tilstand i Linux: $ netstat -ant 6107 Operativsystem og nettverk Jon Kvisli, HSN Transportlaget i TCP/IP - 32

Logiske forbindelser webleser 1 portnr=49151 webleser 2 portnr=49152 webtjener portnr=80 TCP IP 128.39.156.91 TCP IP 128.39.196.115 Nettverk logisk forbindelse IP 128.41.12.123 TCP webleser 3 portnr=49151 Socketadresser og socketpar Tre logiske forbindelser: 128.39.156.91:49151-128.39.196.115:80 128.39.156.91:49152-128.39.196.115:80 128.41.12.123:49151-128.39.196.115:80 6107 Operativsystem og nettverk Jon Kvisli, HSN Transportlaget i TCP/IP - 33

Logiske forbindelser TCP etablerer en logisk forbindelse mellom klient og tjener Forbindelsen identifiseres entydig med et socketpar, dvs. socketadressene til klient og tjener Eks:» 128.39.156.91:49151-128.39.196.115:80» 128.39.156.91:49152-128.39.196.115:80» 128.41.12.123:49151-128.39.196.115:80 En tjenerapplikasjon kan ha flere logiske forbindelser gjennom samme socket / port men til forskjellige maskiner, eller klientportnummer. Eks:» en webtjener kan betjene mange webklienter via port nr. 80.» hver klientsocket har entydig (unik) socketadresse. 6107 Operativsystem og nettverk Jon Kvisli, HSN Transportlaget i TCP/IP - 34

TCP er to-veis full dupleks (repetisjon fra 6105 Windows Server og datanett) Klient Tjener Applikasjon Applikasjon Sendebuffer Mottaksbuffer Mottaksbuffer Sendebuffer Figuren er hentet fra Frode Sørensen: Innføring i nettverk, IDG Books Norge 6107 Operativsystem og nettverk Jon Kvisli, HSN Transportlaget i TCP/IP - 35

TCP er to-veis full dupleks En TCP-forbindelse tillater sending og mottak av data samtidig Hver side av forbindelsen har et sendebuffer og et mottaksbuffer Sending og mottak foregår uavhengig av hverandre Klient og tjener kan sende samtidig om det er ønskelig TCP kan betjene flere logiske forbindelser samtidig Multiplekser flere forbindelser over samme IP lag Hver forbindelse har sitt eget sende- og mottaksbuffer Hver åpen socket bruker derfor noe plass i internminne (RAM) 6107 Operativsystem og nettverk Jon Kvisli, HSN Transportlaget i TCP/IP - 36

Deteksjon av bitfeil med sjekksum TCP-pakkehode Data Sjekksum TCP-sjekksum garanterer feilfrihet "ende-til-ende Dvs. helt fra avsenderapplikasjon til mottakerapplikasjon Brukes for å oppdage, men ikke rette, bitfeil på en pakke etter overføring TCP på avsendersiden Beregner sjekksum på hele TCP-segmentet (hode og data) Dvs. de data som skal kontrolleres "summeres" etter en gitt algoritme Sjekksummen sendes som en del av TCP-hodet i feltet Sjekksum (16 bits) TCP på mottakersiden Beregner sjekksum på nytt og sammenligner med mottatt sjekksum i pakkehodet Ved feil vil mottaker ikke kvittere for pakken, og avsender må sende pakken på nytt 6107 Operativsystem og nettverk Jon Kvisli, HSN Transportlaget i TCP/IP - 37

Illustrasjon av sjekksum Handling Mellomregninger 1) Skal overføre 101100 Beregner først sjekksum a. Avsenders sjekksum er 101. 2) Overfører 101100101 Sjekksum a: Tegn 1 Tegn 2 3 bit sum Mente rundt Delsum 1-komplement + + 101 100 001 1 010 101 3) Mottaker beregner ny sjekksum, inkludert avsenders sjekksum Beregner ny sjekksum b. Den blir 111. 4) Godkjenner sjekksum Sjekksum b: Tegn 1 Tegn 2 Mottatt sjekksum 3 bit sum Mente rundt Delsum + + + 101 100 101 110 1 111 Olav Skundberg Innføring i datakommunikasjon 6107 Operativsystem og nettverk Jon Kvisli, HSN Transportlaget i TCP/IP - 38

Om flytkontroll og metningskontroll Flytkontroll: sørge for at mottaker ikke drukner i data En rask avsender i et raskt nett kan risikere å sende data raskere enn en langsom mottaker klarer å ta unna. Mottaker må gi avsender beskjed om å bremse opp Styres av feltet vindu i TCP-pakkehodet Verdien i feltet vindu angir hvor mye ledig plass (i bytes) det er i mottaksbufferet» Dvs. hvor mye mer data er jeg i stand til å ta imot» Maksimal verdi: 2 16 = 65 536 B = 64 KiB» På en webtjener kan mottaksbufferet ofte settes lavere. Hvorfor? Metningskontroll: sørge for at nettet ikke overbelastes Dvs. unngå opphopning av pakker og kø i nettet ( f.eks. fulle buffere i rutere) Når kvittering uteblir, antar man pakken er tapt tegn på metning Hvor lenge skal avsender vente på kvittering før man sender på nytt? TCP måler RTT Rount Trip Time («ping-tiden») og beregner ventetid fra denne» Må måles kontinuerlig fordi den endres av trafikkmengde Alternativ strategi: Bruke prioritering av trafikk 6107 Operativsystem og nettverk Jon Kvisli, HSN Transportlaget i TCP/IP - 39

Kvitteringer Flytkontroll Hvis mottaksbuffer er fullt, vil TCP vente med å kvittere segmenter inntil data er levert til applikasjonen og mottaksbufferet er frigjort Vindustørrelse Mottaker rapporterer størrelsen på mottaksbufferet til avsender i Window feltet Avsender har ikke lov til å sende mer enn dette før han mottar kvittering Glidende vindu (sliding window) Se kommende foiler 6107 Operativsystem og nettverk Jon Kvisli, HSN Transportlaget i TCP/IP - 40

Glidende vindu 7 6 5 4 3 2 1 kvittert pakke som kan fjernes fra utbufferet Utbuffer med TCP-segmenter som skal sendes Glidende vindu inneholder sendte, men ikke kvitterte segmenter. vindusstørrelse=5 Vinduet flyttes når kvittering mottas for segment 2, og segment 7 sendes 7 6 5 4 3 2 1 Problemstilling Hvis avsender må vente på at mottaker har kvittert før neste pakke senders, sløses det bort mye tid til venting - særlig dersom RTT er stor Særlig hvis "avstanden" til mottaker er stor (lang RTT/" pingtid") Løsning TCP-segmentene legges i en sendebufferet Flere segmenter kan sendes ut på nettet uten å vente på kvittering Segmentene beholdes i sendebufferet til kvittering er mottatt for pakken Antall sendte, men ikke kvitterte segmenter kalles vindusstørrelsen Når kvittering mottas, kan vinduet flyttes, og neste segment sendes. 6107 Operativsystem og nettverk Jon Kvisli, HSN Transportlaget i TCP/IP - 41

Glidende vindu Sliding window fungerer også som flytkontroll Når alle segmenter i vinduet er sendt, sendes ikke mer før kvittering mottas Mottaker sender bare kvittering når den er klar til å motta mer data Hindrer at mottaker druknes i data Egenskaper ved sliding window Flere ukvitterte segmenter kan være underveis på nettet. Mottaker kan regulere (tilpassse) vindusstørrelsen. segmenter som ikke kvitteres, ligger ennå i utkøen og kan sendes på nytt dersom de ikke kommer fram Fordeler med sliding window Fungerer bra i nett med stor transporttid (forsinkelse) Sliding window gjør TCP meget godt egnet i store WAN der data skal sendes via mange nett og svitsjer 6107 Operativsystem og nettverk Jon Kvisli, HSN Transportlaget i TCP/IP - 42

Utnyttelse av linjekapasitet SENDER MOTTAKER Eksempel: Fil som skal overføres 1 Flytende sendevindu 2 3 4 5 6 7 8 Segment Buffer 1 t1 t2 RTT ACK t1 = overføringstid t2 = ventetid på kvittering RTT = Round Trip Time Rundetid/"pingtiden" = t1 + t2 Utnyttelsesgrad = t1 / t2 Eksempel 1: RTT = 10 ms 10 Mb/s forbindelse: t1 = 1 ms Utnyttelse = 1ms / 10 ms 0,1 = 10% Eksempel 2: RTT = 300 ms Utnyttelse = 1ms / 300 ms 0,003 = 0,3% 6107 Operativsystem og nettverk Jon Kvisli, HSN Transportlaget i TCP/IP - 43

Pipelining med glidende vindu SENDER MOTTAKER Eksempel: Fil som skal overføres 1 Flytende sendevindu 2 3 4 5 6 7 8 Segment Buffer 1 2 3 4 ACK Pipelining = sende flere pakker uten vente på kvittering Mer effektiv utnyttelse av linjekapasiteten, opp mot 100% Noe mer kompleksitet i hver ende (buffer + logikk) Glidende vindu = regulere hvor mye som kan sendes før kvittering kommer tilbake 6107 Operativsystem og nettverk Jon Kvisli, HSN Transportlaget i TCP/IP - 44

Data fra applikasjonslaget TCP-sendevindu Sendevindu Olav Skundberg, Innføring i datakommunikasjon Ikke sendt Sendt, men ukvittert Sendt og kvittert Ledig plass i sendevindu Data til nettverkslaget Formål: Avgjøre om neste pakke skal sendes nå eller vente Sendevinduet = et «utsnitt» av sendebufferet Flyttes etter hvert som kvitteringer mottas for sendte data Størrelsen på sendevindu styres av både flyt- og metningskontroll.» Reduseres hvis redusert flyt / økt metning» Reduseres hvis pakker timer ut før kvittering mottas» Tar alltid hensyn til den mest begrensende faktoren.» Maks. størrelse på sendevinduet er 64 kb 6107 Operativsystem og nettverk Jon Kvisli, HSN Transportlaget i TCP/IP - 45

Forbindelsesorientert Oppsummering TCP Klient må etablere forbindelse før dataoverføring Klient eller tjener kobler ned når dataoverføring er ferdig Pålitelig overføring Feildeteksjon med sjekksum Kvittering for korrekt mottatte data Retransmisjon ved manglende kvittering Bytestrømorientert tjeneste Avsender deler opp lange meldinger i segmenter Segmentene nummereres med sekvensnummer Mottaker setter sammen segmenter i rett rekkefølge til meldinger «Ende-til-ende» transport mellom applikasjoner Adresserer segmenter til riktig applikasjon med portnummer 6107 Operativsystem og nettverk Jon Kvisli, HSN Transportlaget i TCP/IP - 46

Forbindelseløst transportlag Noen applikasjoner stiller andre krav til transportlaget enn det TCP tilbyr: Forbindelsesløs tjeneste Korte forespørsler som krever raske (korte) svar Tidkrevende å koble opp og ned forbindelse Eks: DNS forespørsler DNS forespørsel Spørsmål: domenenavn Rask, men ikke feilfri tjeneste Noen applikasjoner tåler små feil, men krever rask overføring Eks: Streaming av lyd og video, IP telefoni Svar: IP adresse Multicasting Noen applikasjoner skal sende fra én avsender til mange mottakere samtidig Eks: IPTV Her er det behov for noe annet enn TCP! 6107 Operativsystem og nettverk Jon Kvisli, HSN Transportlaget i TCP/IP - 47

UDP = User Datagram Protocol UDP protokollen Forbindelsesløs tjeneste Sender data uten å etablere logisk forbindelse først Ingen kontroll på om mottakerapplikasjonen finnes, og kan ta i mot pakkene Dette sparer tid! Datagramorientert (pakkeorientert) tjeneste Dvs: UDP kan ikke dele en bytestrøm opp i pakker (segmenter) Applikasjonene må dele bytestrømmen i pakker før de leveres til UDP I noen applikasjoner er datamengdene så små at det holder med én pakke» Eks. DNS Adresserer pakkene til riktig applikasjon UDP bruker samme adresseringsmekanisme som TCP Tjenere lytter på en socket med gitt portnummer Klientprogrammet får en socket med kortlivet portnr når det startes. Mulighet for multicast-adressering, dvs. flere mottakere av pakkene 6107 Operativsystem og nettverk Jon Kvisli, HSN Transportlaget i TCP/IP - 48

UDP protokollen Garanterer ikke pålitelighet eller feilfri dataoverføring! Sender data og håper det beste Kan oppdage feil med sjekksum, men retter ikke feilen» kan bruke eller kaste pakker som inneholder feil ikke tid til å sende på nytt» ber ikke avsender om å sende på nytt ingen kvitteringer Applikasjonene må rette eventuelle feil, dersom det er ønskelig... Ingen kvitteringer eller sekvensnummer Effektiv og rask Ingen tidsbruk for opp- og nedkobling av logiske forbindelser Lite ekstra tidsbruk til beregning av sjekksummer, kvitteringer o.l. Lite pakkehode gir liten ekstra datamengde Velegnet for tidskritiske sanntidsapplikasjoner» lydoverføring: IP-telefoni og musikkstreaming» bilde/lydoverføriing: videosamtaler, videostreaming, IP-TV» on-line spill UDP er "tilstandsløs" (ingen tilstander) UDP-porter er enten åpne eller ikke, og kan sende/motta data når de er åpne 6107 Operativsystem og nettverk Jon Kvisli, HSN Transportlaget i TCP/IP - 49

UDP pakkehode 0 15 16 31 Avsenders port (16 bit) Lengde (16 bit) Mottakers port (16 bit) Sjekksum (16 bit) pakkeheader 8 Byte ----- Nyttelast = data fra applikasjonslaget ----- Olav Skundberg Innføring i datakommunikasjon 6107 Operativsystem og nettverk Jon Kvisli, HSN Transportlaget i TCP/IP - 50

UDP pakkehode UDP hode (header) er bare 8 bytes langt! Mottakers portnr (2 B) Avsenders portnr (2 B)» Bare nødvendig hvis applikasjonen ønsker svar Lengde på hele UDP datagrammet/pakken (2 B)» inkl. både hode og nyttelast Sjekksum frivillig (2 B)» Kontrollerer hele UDP datagrammet (både hode og data) UDP kropp (body) datadel Data fra applikasjonen - nyttelast Maks størrelse = 2 16-8 = 65 527 bytes UDP gjør primært to ting: Adressere data til riktig applikasjon (portnr) Evt. kontrollere sjekksum og kaste datagram med feil. Lite UDP hode gir lite ekstra protokolldata (overhead) 6107 Operativsystem og nettverk Jon Kvisli, HSN Transportlaget i TCP/IP - 51