Chapter 3 Transport Layer. Kuljetuskerros



Samankaltaiset tiedostot
Kappale 3, Siirto Taso. Luento-osuus 1 Käännös Mirja Hosionaho 100% Tietoverkot: ylhäältä alas lähestyminen

Luento 5: Kuljetuskerros

Luento 5: Kuljetuskerros luotettavan tiedonsiirron periaatteet. Syksy 2014, Tiina Niklander

3. Kuljetuskerros 3.1. Kuljetuspalvelu

Kuljetuskerros. Chapter 3 Transport Layer. Kuljetuskerros. Kuljetuspalvelut ja -protokollat. Kuljetuskerros vs. verkkokerros

Kuljetuskerros. Chapter 3 Transport Layer. Kuljetuspalvelut ja -protokollat. Kuljetuskerros. Kuljetuskerros vs. verkkokerros

Chapter 3 Transport Layer. Kuljetuskerros

Chapter 3: Transport Layer

Kuljetuskerros. Tietokoneverkot. Matti Siekkinen Pasi Sarolahti

Chapter 1 Introduction

100 % Kaisu Keskinen 3-1

ELEC-C7241 Tietokoneverkot Kuljetuskerros

Tietoliikenteen perusteet. Kuljetuskerros

3. Kuljetuskerros 3.1. Kuljetuspalvelu

Tietoliikenteen perusteet. Kuljetuskerros

Tietoliikenteen perusteet. Kuljetuskerros

Tietoliikenteen perusteet

Tietoliikenteen perusteet. Kuljetuskerros

Tietoliikenteen perusteet. Kuljetuskerros

Kuljetuspalvelu. Tietoliikenteen perusteet. Sisältöä. Kuljetuskerros. Kuljetuskerros. Kuljetuskerros. Internetin kuljetusprotokollat

Chapter 3 Transport Layer. Kuljetuskerros

Kappale 3 Kuljetustaso

Kuljetuspalvelu. Tietoliikenteen perusteet. Sisältöä. Kuljetuskerros. Kuljetuskerros. Kuljetuskerros. Internetin kuljetusprotokollat

Tietoliikenne II. Syksy 2005 Markku Kojo. Tietoliikenne II (2 ov,, 4 op) Page1. Markku Kojo Helsingin yliopisto Tietojenkäsittelytieteen laitos

Tietoliikenteen perusteet. Kuljetuskerros

3. Kuljetuskerros 3.1. Kuljetuspalvelu End- to- end

3. Kuljetuskerros 3.1.

OSI ja Protokollapino

Internet ja tietoverkot. 3 Kuljetusprotokollat Luotettava ja epäluotettava tiedonsiirto

S Tietoliikennetekniikan perusteet. Pakettikytkentäiset verkot. Helsinki University of Technology Networking Laboratory

Kuljetuskerros. Matti Siekkinen. T Johdatus tietoliikenteeseen kevät 2011

TCP/IP-protokollapino. Kuljetuskerros. Tämän luennon jälkeen. Sisältö. Matti Siekkinen. Ymmärrätte:

Chapter 5 Link Layer and LANs

kynnysarvo (threshold)

kynnysarvo (threshold)

Kuljetuskerroksen protokollat. Luotettava vai epäluotettava? Kuljetuskerroksen tarkoitus. Tietosähkeen kapselointi. Portit ja (de)multipleksaus

kynnysarvo (threshold) varoitusarvo = tästä lähtien syytä varoa ruuhkaa aluksi 64 K RTT

Kuljetuskerros. Matti Siekkinen. T Johdatus tietoliikenteeseen kevät 2013

Chapter 5 Link Layer and LANs

Kuljetuskerros. Kirja sivut: ,

Kuljetuskerroksen tehtävä. Kuljetuskerros UDP. UDP-kaappaus (DNS) DNS-haku, Ethernet-kehys <#>

Chapter 2 Application Layer

Kuljetuskerros. CSE-C2400 Tietokoneverkot (osa 1) (osa 2) Matti Siekkinen. Tietokoneverkot 2014

Tehtävä 2: Tietoliikenneprotokolla

Kuljetuskerroksen protokollat

Kuljetuskerroksen protokollat. Kuljetuskerroksen tarkoitus. Luotettava vai epäluotettava?

Kuljetuskerroksen protokollat

Kuljetuskerros. CSE-C2400 Tietokoneverkot (osa 1) (osa 2) Matti Siekkinen. Tietokoneverkot 2014

Chapter 4 Network Layer

7. Palvelun laatu (QoS) Internetissä

7. Palvelun laatu (QoS) Internetissä

Miten selain muodostaa TCP- tai UDP-yhteyden? TCP-osoite = IP-osoite + porttinumero ( tässä 80) SOCKET BIND (80) LISTEN ACCEPT. Connection Request

11/20/ Siirron optimointi

Chapter 4 Network Layer

Kuljetuskerroksen protokollat

Miten Internet toimii?

Tietoliikenne II (2 ov)

Salausmenetelmät (ei käsitellä tällä kurssilla)

Chapter 5 Link Layer and LANs

Tietoliikenteen perusteet. Vähän kertausta. Tietoliikenteen perusteet /2009/ Liisa Marttinen 1

WWW-sivu. Miten Internet toimii? World Wide Web. HTML-koodi. HTTP-istunto URL <#>

1.4. Tietoliikenneohjelmistot eli protokollat

1.4. Tietoliikenneohjelmistot eli protokollat

1.4. Tietoliikenneohjelmistot eli protokollat. Protokollien kerrosrakenne. Mitä monimutkaisuutta?

Siirron optimointi. Optimointi on usein tarpeen: Silly window syndrome. Esimerkki jatkuu

Esimerkki jatkuu. <seq = 6, data = m6> <ack = 4, buf = 0> <ack = 4, buf = 1> <ack = 4, buf = 2> <ack = 6, buf = 0> <ack = 6, buf = 4> 1/31/

TCP. TCP:n peruspiirteiden toiminta tarkemmin. TCP:n uusia piirteitä. osin vain harjoitustehtävissä

TCP:n peruspiirteiden toiminta tarkemmin. osin vain harjoitustehtävissä. TCP:n uusia piirteitä

TCP. TCP-optiot. Erilaisia suorituskykyongelmia. Aikaleima (timestamp) TCP:n peruspiirteiden toiminta tarkemmin. TCP:n uusia piirteitä.

Siirron optimointi. Optimointi on usein tarpeen: Silly window syndrome

Pertti Pennanen OSI 1 (4) EDUPOLI ICTPro

Monimutkaisempi stop and wait -protokolla

Monimutkaisempi stop and wait -protokolla

Esimerkki jatkuu. ajastin laukeaa, uudelleen sanoma 2. <seq = 6, data = m6>

ITKP104 Tietoverkot - Teoria 3

S Teletekniikan perusteet

Siltojen haitat. Yleisesti edut selvästi suuremmat kuin haitat 2/19/ Kytkin (switch) Erittäin suorituskykyisiä, moniporttisia siltoja

3. Kuljetuskerros 3.1. Kuljetuspalvelu End- to- end

R R R RR. Kaikkien. pakettien. siirto yhden linkin yli. always on. Viimeisen siirto muiden linkkien yli. Sovellus: Kuljetus: Verkko: Linkki:

Tietoliikenneohjelmointi. v. 0.01

Internet Protocol version 6. IPv6

Tietoliikenteen perusteet: Kokeeseen tulevista asioista

Tietoliikenne II Kurssikoe

Luento 14: Kertausta. Syksy 2014, Tiina Niklander

Tietoliikenteen perusteet. Vähän kertausta

Tietoliikenne II (2 ov)

ICMP-sanomia. 3. IP-kerroksen muita protokollia ja mekanismeja ICMP (Internet Control Message Protocol)

3. IP-kerroksen muita protokollia ja

Tietoliikenne I (muuntokoulutettaville) 2 ov Syksy 2002 Luennot Liisa Marttinen 11/6/2002 1

Luento 6: Kuljetuskerros UDP & TCP TCP:n ruuhkanhallinta

5. Siirtoyhteyskerros linkkikerros (Data Link Layer)

Tietoliikenteen perusteet. Vähän kertausta

Luento 6: Kuljetuskerros UDP & TCP TCP:n ruuhkanhallinta

peittää verkkokerroksen puutteet

3. Kuljetuskerros 3.1. Kuljetuspalvelu

Kuljetus- ja verkkokerrokset. Jyry Suvilehto T Johdatus tietoliikenteeseen ja multimediatekniikkaan kevät 2011

Monimutkaisempi stop and wait -protokolla

Luento 6: Kuljetuskerros UDP & TCP TCP:n ruuhkanhallinta. Syksy 2014, Tiina Niklander Kurose&Ross: Ch3

Chapter 2 Application Layer

R R R RR. Kaikkien. pakettien. siirto yhden linkin yli. always on. Viimeisen siirto muiden linkkien yli. Sovellus: Kuljetus: Verkko: Linkki:

Transkriptio:

Chapter 3 Transport ayer A note on the use of these ppt slides: We re making these slides freely available to all (faculty, students, readers). They re in PowerPoint form so you can add, modify, and delete slides (including this one) and slide content to suit your needs. They obviously represent a lot of work on our part. In return for use, we only ask the following: If you use these slides (e.g., in a class) in substantially unaltered form, that you mention their source (after all, we d like people to use our book!) If you post any slides in substantially unaltered form on a www site, that you note that they are adapted from (or perhaps identical to) our slides, and note our copyright of this material. Thanks and enjoy! JFK/KWR All material copyright 1996-2004 J.F Kurose and K.W. Ross, All Rights Reserved Computer Networking: A Top Down Approach Featuring the Internet, 3 rd edition. Jim Kurose, Keith Ross Addison-Wesley, July 2004. Kuljetuskerros (1/3) 1 Kuljetuskerros Tavoitteet: Ymmärtää periaatteet kuljetuskerroksen palvelujen taustalla: kanavointi (multipleksointi) luotettava tiedonsiirto vuonvalvonta ruuhkanhallinta Oppia Internetin kuljetuskerroksen protokollista: UDP: yhteydetön kuljetus TCP: yhteydellinen kuljetus TCP:n ruuhkanhallinta Kuljetuskerros (1/3) 2 1

Kuljetuskerros Kuljetuskerroksen palvelut Kanavointi (multipleksointi) Yhteydetön kuljetus: UDP uotettavan tiedonsiirron periaatteet Yhteydellinen kuljetus: TCP segmentin rakenne luotettava tiedonsiirto vuonvalvonta yhteydenhallinta Ruuhkanhallinnan periaatteet TCP:n ruuhkanhallinta Kuljetuskerros (1/3) 3 Kuljetuspalvelut ja -protokollat Tarjotaan looginen kommunikointi eri laitteissa toimivien sovellusprosessien välille Kuljetusprotokollat toimivat päätelaitteissa lähettäjä: pilkkoo sovelluksen viestit segmenteiksi ja välittää ne verkkokerrokselle vastaanottaja: kokoaa segmentit uudelleen viesteiksi ja välittää ne sovelluskerrokselle Yleisesti useampia vaihtoehtoja kuljetusprotokollaksi Internet: TCP ja UDP application transport application transport Kuljetuskerros (1/3) 4 2

Kuljetuskerros vs. verkkokerros verkkokerros: looginen kommunikointi päätelaitteiden välillä kuljetuskerros: looginen kommunikointi prosessien välillä käyttää verkkokerroksen palveluita ja laajentaa/parantaa niitä Analogia: apset lähettävät kirjeitä toisille lapsille prosessit = lapset sovelluksen viestit = kirjeet kirjekuorissa päätelaitteet = postilaatikot kuljetusprotokolla = vanhemmat verkkoprotokolla = postilaitos Kuljetuskerros (1/3) 5 Internetin kuljetuskerroksen protokollat uotettava, järjestyksen säilyttävä (TCP) yhteyden alustus vuonvalvonta ruuhkanhallinta Epäluotettava, järjestyksestä piittamaton (UDP) application transport pelkistetty IP-protokollan laajennus Palvelut, joita ei tarjota: application transport takeita viiveelle takeita kaistanleveydelle Kuljetuskerros (1/3) 6 3

Kuljetuskerros Kuljetuskerroksen palvelut Kanavointi (multipleksointi) Yhteydetön kuljetus: UDP uotettavan tiedonsiirron periaatteet Yhteydellinen kuljetus: TCP segmentin rakenne luotettava tiedonsiirto vuonvalvonta yhteydenhallinta Ruuhkanhallinnan periaatteet TCP:n ruuhkanhallinta Kuljetuskerros (1/3) 7 Kanavointi (multipleksointi) Multipleksointi lähettäjällä: kerätään dataa soketeilta, kapseloidaan data otsikoilla (joita käytetään kanavoinnin purkamisessa) Demultipleksointi vastaanottajalla: toimitetaan vastaanotetut segmentit oikeille soketeille = socket = process application P3 P1 P1 application P2 P4 application transport transport transport host 1 host 2 host 3 Kuljetuskerros (1/3) 8 4

Kuinka demultipleksointi toimii Päätelaite vastaanottaa IPdatagrammin jokaisessa datagrammissa on lähteen ja kohteen IPosoitteet jokainen datagrammi kuljettaa yhtä kuljetuskerroksen segmenttiä jokaisessa segmentissä on lähteen ja kohteen porttinumerot Päätelaite käyttää IPosoitteita ja porttinumeroita ohjatakseen segmentin oikeaan sokettiin 32 bits source port # dest port # other header fields application data (message) TCP/UDP segment format Kuljetuskerros (1/3) 9 Yhteydetön demultipleksointi uodaan soketteja, joilla on porttinumerot: DatagramSocket mysocket1 = new DatagramSocket(99111); DatagramSocket mysocket2 = new DatagramSocket(99222); UDP-soketti tunnistetaan kahdella tunnisteella: kohteen IP-osoite kohteen porttinumero Kun päätelaite vastaanottaa UDPsegmentin: tarkistaa segmentistä kohteen porttinumeron ohjaa segmentin porttinumeron osoittamaan sokettiin IP-datagrammit, joilla eri lähde-ip-osoitteet ja/tai eri lähdeporttinumerot, ohjataan samaan sokettiin Kuljetuskerros (1/3) 10 5

Yhteydetön demultipleksointi DatagramSocket serversocket = new DatagramSocket(6428); P2 P3 P1P1 SP: 6428 DP: 9157 SP: 6428 DP: 5775 client IP: A SP: 9157 DP: 6428 server IP: C SP: 5775 DP: 6428 client IP: B SP = lähdeportti, tarjoaa paluuosoitteen DP = kohdeportti Kuljetuskerros (1/3) 11 Yhteydellinen demultipleksointi TCP-soketti tunnistetaan neljällä tunnisteella: lähteen IP-osoite lähteen porttinumero kohteen IP-osoite kohteen porttinumero Vastaanottava päätelaite käyttää kaikkia neljää tunnistetta ohjatakseen segmentin oikeaan sokettiin Palvelin voi tukea useita samanaikaisia TCPsoketteja: jokainen soketti tunnistetaan em. neljän numeron avulla WWW-palvelimilla on eri soketit jokaiselle yhteyden ottavalle asiakkaalle non-persistent HTTP käyttää eri sokettia jokaiselle pyynnölle Kuljetuskerros (1/3) 12 6

Yhteydellinen demultipleksointi P1 P4 P5 P6 P2 P1 P3 SP: 5775 DP: 80 S-IP: B D-IP: C SP: 9157 SP: 9157 client IP: A DP: 80 S-IP: A D-IP: C server IP: C DP: 80 S-IP: B D-IP: C client IP: B Kuljetuskerros (1/3) 13 Yhteydellinen demultipleksointi: säikeistetty WWW-palvelin P1 P4 P2 P1 P3 SP: 5775 DP: 80 S-IP: B D-IP: C SP: 9157 SP: 9157 client IP: A DP: 80 S-IP: A D-IP: C server IP: C DP: 80 S-IP: B D-IP: C client IP: B Kuljetuskerros (1/3) 14 7

Kuljetuskerros Kuljetuskerroksen palvelut Kanavointi (multipleksointi) Yhteydetön kuljetus: UDP uotettavan tiedonsiirron periaatteet Yhteydellinen kuljetus: TCP segmentin rakenne luotettava tiedonsiirto vuonvalvonta yhteydenhallinta Ruuhkanhallinnan periaatteet TCP:n ruuhkanhallinta Kuljetuskerros (1/3) 15 UDP: yleiskatsaus [RFC 768] Pelkistetty Internetin kuljetusprotokolla Best effort -palvelu, UDP-segmentit voivat: hävitä matkalla saapua perille väärässä järjestyksessä Yhteydetön: ei kättelyä lähettäjän ja vastaanottajan välillä jokainen UDP-segmentti käsitellään muista riippumattomasti Miksi on olemassa UDP? ei yhteydenmuodostusta (joka voisi lisätä viivettä) yksinkertainen: ei säilytä tilatietoja lähettäjällä tai vastaanottajalla pieni otsikko segmentissä ei ruuhkanhallintaa: UDP voi lähettää niin nopeasti kuin halutaan Kuljetuskerros (1/3) 16 8

UDP: yleiskatsaus Käytetään usein suoratoistosovelluksissa (streaming) UDPsegmentin sietävät hävikkiä herkkiä nopeuden pituus suhteen tavuina, UDP:tä käyttävät myös mukaanlukien DNS otsikko SNMP uotettava tiedonsiirto ja UDP: lisätään luotettavuutta sovelluskerroksella virheistä toipuminen sovelluskohtaista 32 bits source port # dest port # length application data (message) checksum UDP segment format Kuljetuskerros (1/3) 17 Internet-tarkistussumma Tavoite: havaita virheitä (esim. bittien vaihtuminen) lähetetyssä segmentissä ähettäjä: käsitellään segmentin sisältö jonona 16 bitin kokonaislukuja tarkistussumma: yhden komplementti kokonaislukujen yhden komplementti -summasta lähettäjä laittaa tarkistussumman arvon checksum-kenttään Vastaanottaja: laskee tarkistussumman vastaanotetusta segmentistä tarkistaa, vastaako laskettu tarkistussumma checksumkentässä olevaa arvoa: EI - virhe havaittu KYÄ - virhettä ei havaittu (mutta voi silti olla virheitä ) Kuljetuskerros (1/3) 18 9

Internet-tarkistussumma: esimerkki Kun lukuja lasketaan yhteen, eniten merkitsevän bitin muistibitti täytyy lisätä summaan ( kierrättää ) Summan yhden komplementti: muutetaan bitit vastakkaisiksi Esimerkki: lasketaan yhteen kaksi 16 bitin kokonaislukua: tarkistussumma muistibitit kierrätys summa 1 1 1 1 1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1 Kuljetuskerros (1/3) 19 Kuljetuskerros Kuljetuskerroksen palvelut Kanavointi (multipleksointi) Yhteydetön kuljetus: UDP uotettavan tiedonsiirron periaatteet Yhteydellinen kuljetus: TCP segmentin rakenne luotettava tiedonsiirto vuonvalvonta yhteydenhallinta Ruuhkanhallinnan periaatteet TCP:n ruuhkanhallinta Kuljetuskerros (1/3) 20 10

uotettavan tiedonsiirron periaatteet Erityisen tärkeää sovellus-, kuljetus- ja siirtoyhteyskerroksilla Epäluotettavan kanavan ominaisuudet määrittävät luotettavan tiedonsiirtoprotokollan (reliable data transfer protocol, rdt) kompleksisuuden Kuljetuskerros (1/3) 21 uotettava tiedonsiirto rdt_send(): kutsu yläpuolelta (esim. sovellus), siirtää dataa kuljetettavaksi vastaanottajalle deliver_data(): rdt kutsuu, toimittaa datan ylemmälle kerrokselle send side receive side udt_send(): rdt kutsuu, siirtää paketin epäluotettavan kanavan yli vastaanottajalle rdt_rcv(): kutsu alapuolelta, kun paketti saapuu kanavan läpi vastaanottajalle Kuljetuskerros (1/3) 22 11

uotettava tiedonsiirto Seuraavaksi: Kehitellään vaiheittain lähettäjä ja vastaanottaja luotettavalle tiedonsiirtoprotokollalle (rdt) Tarkastellaan vain yksisuuntaista tiedonsiirtoa mutta kontrolli-informaatio kulkee molempiin suuntiin! Käytetään äärellisiä tilakoneita (finite state machines, FSM) lähettäjän ja vastaanottajan määrittelemiseen tila (state): kun ollaan tässä tilassa, tapahtuma (event) määrittelee yksikäsitteisesti toiminnot (actions) sekä seuraavan tilan state 1 event causing state transition actions taken on state transition event actions state 2 Kuljetuskerros (1/3) 23 Rdt1.0: luotettava tiedonsiirto luotettavassa kanavassa Alapuolella oleva kanava täysin luotettava ei bittivirheitä ei pakettien katoamisia Erilliset tilakoneet lähettäjälle ja vastaanottajalle: lähettäjä lähettää dataa kanavalle vastaanottaja lukee dataa kanavalta call from above rdt_send(data) packet = make_pkt(data) udt_send(packet) call from below rdt_rcv(packet) extract (packet,data) deliver_data(data) sender receiver Kuljetuskerros (1/3) 24 12

Rdt2.0: kanava jossa bittivirheitä Alapuolella oleva kanava voi muuttaa paketin bittejä tarkistussumma bittivirheiden havaitsemiseksi Kysymys: kuinka selvitään virheistä? kuittaukset (acknowledgements, ACKs): vastaanottaja eksplisiittisesti kertoo lähettäjälle, että paketti oli OK negatiiviset kuittaukset (negative acknowledgements, NAKs): vastaanottaja eksplisiittisesti kertoo lähettäjälle, että paketissa oli virheitä lähettäjä uudelleenlähettää paketin saatuaan NAK-viestin Protokollan rdt2.0 uudet mekanismit: virheiden havaitseminen vastaanottajan palaute: kontrolliviestit (ACK, NAK) vastaanottajalta lähettäjälle Kuljetuskerros (1/3) 25 Rdt2.0: tilakoneen määrittely rdt_send(data) sndpkt = make_pkt(data, checksum) call from above isack(rcvpkt) sender ACK or NAK isnak(rcvpkt) receiver corrupt(rcvpkt) udt_send(nak) call from below notcorrupt(rcvpkt) extract(rcvpkt,data) deliver_data(data) udt_send(ack) Kuljetuskerros (1/3) 26 13

Rdt2.0: toiminta ilman virheitä rdt_send(data) sndpkt = make_pkt(data, checksum) call from above isack(rcvpkt) sender ACK or NAK isnak(rcvpkt) receiver corrupt(rcvpkt) udt_send(nak) call from below notcorrupt(rcvpkt) extract(rcvpkt,data) deliver_data(data) udt_send(ack) Kuljetuskerros (1/3) 27 Rdt2.0: toiminta virheen sattuessa rdt_send(data) sndpkt = make_pkt(data, checksum) call from above isack(rcvpkt) sender ACK or NAK isnak(rcvpkt) receiver corrupt(rcvpkt) udt_send(nak) call from below notcorrupt(rcvpkt) extract(rcvpkt,data) deliver_data(data) udt_send(ack) Kuljetuskerros (1/3) 28 14

Rdt2.0: kohtalokas vika! Mitä tapahtuu, jos ACK tai NAK on korruptoitunut? lähettäjä ei tiedä, mitä vastaanottajan puolella on tapahtunut! ei voida noin vain uudelleenlähettää: mahdollinen duplikaatti Duplikaattien käsittely: lähettäjä lisää sekvenssinumeron jokaiseen pakettiin lähettäjä uudelleenlähettää paketin, jos sen kuittaus (ACK/NAK) on epäselvä vastaanottaja hylkää duplikaatit (ei välitä niitä ylemmälle kerrokselle) stop and wait ähetetään yksi paketti ja odotetaan kuittausta ennen seuraavan paketin lähettämistä Kuljetuskerros (1/3) 29 Rdt2.1: lähettäjä ja epäselvät kuittaukset rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && isack(rcvpkt) ( corrupt(rcvpkt) isnak(rcvpkt) ) rdt_send(data) sndpkt = make_pkt(0, data, checksum) call 0 from above ACK or NAK 1 rdt_send(data) ACK or NAK 0 call 1 from above ( corrupt(rcvpkt) isnak(rcvpkt) ) rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && isack(rcvpkt) sndpkt = make_pkt(1, data, checksum) Kuljetuskerros (1/3) 30 15

Rdt2.1: vastaanottaja ja epäselvät kuittaukset notcorrupt(rcvpkt) && has_seq0(rcvpkt) corrupt(rcvpkt) sndpkt = make_pkt(nak, chksum) notcorrupt(rcvpkt) && has_seq1(rcvpkt) extract(rcvpkt,data) deliver_data(data) sndpkt = make_pkt(ack, chksum) 0 from below 1 from below corrupt(rcvpkt) sndpkt = make_pkt(nak, chksum) notcorrupt(rcvpkt) && has_seq0(rcvpkt) sndpkt = make_pkt(nak, chksum) notcorrupt(rcvpkt) && has_seq1(rcvpkt) sndpkt = make_pkt(nak, chksum) extract(rcvpkt,data) deliver_data(data) sndpkt = make_pkt(ack, chksum) Kuljetuskerros (1/3) 31 Rdt2.1: kommentteja ähettäjä: pakettiin lisätään sekvenssinumero kaksi eri sekvenssinumeroa (0,1) riittää (miksi?) täytyy tarkistaa, onko vastaanotettu ACK/NAK korruptoitunut kaksinkertainen määrä tiloja tilan täytyy muistaa, onko nykyisen paketin numero 0 vai 1 Vastaanottaja: täytyy tarkistaa, onko vastaanotettu paketti duplikaatti tila ilmaisee, mikä seuraavan paketin numeron pitäisi olla Huom: vastaanottaja ei voi tietää, onko sen lähettämä ACK/NAK vastaanotettu OK lähettäjän puolella Kuljetuskerros (1/3) 32 16

Rdt2.2: protokolla ilman NAK-viestejä Muutoin sama toiminnallisuus kuin rdt2.1:ssa, mutta käytetään vain ACK-viestejä Vastaanottaja lähettää ACK-viestin viimeisimmästä oikein vastaanotetusta paketista vastaanottajan täytyy eksplisiittisesti lisätä kuitattavan paketin sekvenssinumero ACK-viestiin Duplikaatti ACK lähettäjällä aiheuttaa saman toiminnon kuin NAK aikaisemmin: uudelleenlähetetään nykyinen paketti Kuljetuskerros (1/3) 33 Rdt2.2: lähettäjä ja vastaanottaja (osa) ( corrupt(rcvpkt) has_seq1(rcvpkt) ) rdt_send(data) sndpkt = make_pkt(0, data, checksum) call 0 from above 0 from below ACK 0 sender FSM fragment receiver FSM fragment ( corrupt(rcvpkt) isack(rcvpkt,1) ) rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && isack(rcvpkt,0) notcorrupt(rcvpkt) && has_seq1(rcvpkt) extract(rcvpkt,data) deliver_data(data) sndpkt = make_pkt(ack1, chksum) Kuljetuskerros (1/3) 34 17

Rdt3.0: kanava jossa bittivirheitä ja viestien katoamisia Uusi oletus: alapuolella oleva kanava voi myös kadottaa paketteja (dataa tai ACKviestejä) tarkistussumma, sekvenssinumerot, ACK-viestit ja uudelleenlähetykset auttavat, mutta eivät riitä ähestymistapa: lähettäjä odottaa järkevän ajan ACKviestiä uudelleenlähettää, jos ACKviestiä ei saada tänä aikana jos paketti (tai ACK) on vain myöhässä (ei kadonnut): uudelleenlähetys aiheuttaa duplikaatin, mutta siitä selvitään sekvenssinumeroilla vastaanottajan täytyy ilmoittaa kuitattavan paketin sekvenssinumero vaatii ajastimen Kuljetuskerros (1/3) 35 Rdt3.0: lähettäjä rdt_rcv(rcvpkt) call 0 from above rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && isack(rcvpkt,1) stop_timer timeout start_timer ( corrupt(rcvpkt) isack(rcvpkt,0) ) rdt_send(data) sndpkt = make_pkt(0, data, checksum) start_timer Wait for ACK1 rdt_send(data) Wait for ACK0 call 1 from above sndpkt = make_pkt(1, data, checksum) start_timer ( corrupt(rcvpkt) isack(rcvpkt,1) ) timeout start_timer rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && isack(rcvpkt,0) stop_timer rdt_rcv(rcvpkt) Kuljetuskerros (1/3) 36 18

Rdt3.0 toiminnassa Kuljetuskerros (1/3) 37 Rdt3.0 toiminnassa Kuljetuskerros (1/3) 38 19