Computerarchitectuur en netwerken. Transportlaag

Vergelijkbare documenten
Computerarchitectuur en netwerken. TCP congestion control Netwerklaag

Computerarchitectuur en netwerken. TCP congestion control Netwerklaag

Bij rekenvragen de berekening opschrijven. Bij beredeneringsvragen de motivering geven.

Modem en Codec. Telematica. Amplitude-modulatie. Frequentie-modulatie. Soorten modems. Fase-modulatie

4IP = Internet Protocol 4Protocol gebruikt op netwerk laag in het internet 4Geen betrouwbaarheid

Computerarchitectuur en netwerken. Inleiding NETWERKEN

Computerarchitectuur en netwerken. Multicast protocollen Datalinklaag/LANs

Infrastructuur Samengesteld door Leon Wetzel

Computerarchitectuur en netwerken. Multimedia in netwerken

Tentamen Telematica Systemen en Toepassingen (261000) 8 november

LAN, MAN, WAN. Telematica. Schakeltechnieken. Circuitschakeling. 4Wordt vooral gebruikt in het telefoonnetwerk 4Communicatie bestaat uit 3 fasen:

Computerarchitectuur en netwerken. Gedistribueerde IPC

Zelftest Internet concepten en technieken

Computerarchitectuur en netwerken. Inleiding NETWERKEN

Netwerken - Samenvatting

Tweede deeltentamen Netwerken (INFONW) 29 juni 2009

Computerarchitectuur en netwerken. Lagenmodel Applicatieprotocollen

OSI model. Networking Fundamentals. Roland Sellis

6. De Transportlaag. Transportlaag introductie

IN2220 Computernetwerken: Transportlaag

in3001: Datacommunicatie en netwerken: Transportlaag

Computerarchitectuur en netwerken. Multicast protocollen Datalinklaag/LANs

Aanleveren van te verzenden sms berichten aan SMS Via

Computernetwerken: Opgeloste vragen. Kenneth Hoste

Zelftest Internet concepten en technieken

Presentatie TCP/IP voor LPCB Nederland 20 en 28 juni 2011

Computernetwerken Deel 2

Computerarchitectuur en netwerken. Netwerklaag/Routering

In figuur 1 is de traditionele oplossing afgebeeld om LAN's onderling aan elkaar te koppelen via gehuurde WAN-verbindingen.

Op dit lesmateriaal is een Creative Commons licentie van toepassing Remie Woudt

Tentamen Telematica Systemen en Toepassingen ( /1) 9 november 2011,

Instellingen Microsoft ISA server

Uitwerking 1 Netwerken, toets 3 (INFONW) 31 januari 2005

Les D-04 Foutdetectie en correctie

Temperatuur logger synchronisatie

E-Fax. Gebruikers handleiding

Les D-02 Datacommunicatie op Ethernet en Wifi netwerken

Computernetwerken! SMTP Simple Mail Transfer Protocol, POP Post Ofice Procotol

xxter Mobotix T24 configuratie

Computerarchitectuur en netwerken. Memory management Assembler programmering

API...1 Identificatie...1 Opties...2 Acties...3 Webserver...6 Heartbeat...6 Buffer groottes...8

The OSI Reference Model

Computerarchitectuur en netwerken. Operating System structuur. Files

GIN MAIL-SMS HANDLEIDING

IP & Filtering. philip@pub.telenet.be

SIP analyse. Handleiding

E-postiljon UNIVERSITAIRE ZIEKENHUIZEN LEUVEN. Informatiesystemen

4Problemen met zakendoen op Internet

Beschrijving webmail Enterprise Hosting

Handleiding RMail. Gebruik zonder add-in SMTP optie

Computerarchitectuur en netwerken. LANs Ethernet Draadloos en Mobiel

Computerarchitectuur en netwerken. InterProcess Communication (IPC)

Wat doet u als uw s uit ProwareGolf Cloud niet aankomen?

De seriële poort Jan Genoe KHLIM

Datasheet SMS Comfort URL

Veilig en. Waarom en via een beveiligde verbinding? U vertrouwt de verbinding met de server van InterNLnet niet

Netwerken. 6 januari 2014 David N. Jansen

Netwerken. Beveiliging Cryptografie

TCP/IP-stack extensies Onderzoeksproject in opdracht van SURFnet

Cloud2 Online Backup - CrashplanPRO

computernetwerken - antwoorden

ZN - Handleiding Instellen Microsoft Outlook 2016

Tentamen Telematica Systemen en Toepassingen (261000) 3 november 2010,

Computerarchitectuur en netwerken Toets 1 4 okt

N.B.: Dit tentamen bestaat uit 30 opgaven Totaal aantal bladzijden: 13

Xelion ESPA koppeling Handleiding Beheer V1.6

VRAGENLIJST COM. NETW

Hoofdstuk 1: Inleiding

Algemene voorwaarden. 1. Betalingsvoorwaarden 1.1 ideal 1.2 Verzendkosten 1.3 Veiligheid

SMSStunter gateway API

Inhoud. Packet Tracer x. Labs xi

2017 VANAD Enovation is een handelsnaam van ENOVATION B.V. Alle rechten voorbehouden. Niets uit deze uitgave mag worden openbaar gemaakt of

Dienstbeschrijving faxdiensten

Je kunt tekst uit bijvoorbeeld een Word-document, een ander bericht of van een website gebruiken.

Analyse van discrete-tijd-wachtlijnsystemen met meerdimensionale toestandsruimte

doen 7 Windows Live Mail

QoS / Quality Of Service

Antwoorden op vragenlijst

Taxis Pitane. Transporter. Censys BV Eindhoven

1 Wat is Dns? 2 Logische Structuur van DNS. 3 Fysische structuur van DNS. 4 Records. 5 Hoe werkt nu DNS. 6 DNS in windows 2008

Tentamen IN2210 Computernetwerken I dinsdag 28 oktober tot uur

Transcriptie:

Computerarchitectuur en netwerken 9 Transportlaag Lennart Herlaar 7 oktober 2014

Inhoud Transport laag UDP TCP protocollen voor betrouwbaarheid Lennart Herlaar Computerarchitectuur en netwerken 9 1

Transportlaag Wat doet de transportlaag? De netwerklaag verzorgt verbindingen van host naar host (onafhankelijk van de structuur van het netwerk) Transportlaag verzorgt verbindingen van proces naar proces De verbindingen van de verschillende processen worden samen over dezelfde netwerkaansluiting gestuurd (multiplexing) Bij aankomst moeten ze uitgesorteerd worden naar het juiste proces (demultiplexing) Vergelijk de interne postdienst van bedrijf Eventueel kan de transportlaag ook betrouwbaarheid toevoegen (TCP) Dus transportlaag doet: multiplexing/demultiplexing Eventueel betrouwbaarheid toevoegen Lennart Herlaar Computerarchitectuur en netwerken 9 2

Transport laag Lennart Herlaar Computerarchitectuur en netwerken 9 3

Multiplexen/demultiplexen Lennart Herlaar Computerarchitectuur en netwerken 9 4

Ports In de transportlaag in het Internet worden Portnummers gebruikt (16 bits) Een eindpunt van een transportverbinding wordt geadresseerd met (IP-adres, portnummer) Portnummers < 1024 zijn gereserveerd Centrale autoriteit (IANA=Internet Assigned Numbers Authority/ ICANN=Internet Corporation For Assigned Names and Numbers) Hogere nummers zijn vrij te gebruiken Socket in O.S. is een manier (programmeerconstructie) om transportverbindingen te gebruiken Lennart Herlaar Computerarchitectuur en netwerken 9 5

Transport Protocols Twee soorten meest gebruikt in Internet: UDP (User Datagram protocol) voegt alleen multiplexing/demultiplexing toe UDP is verbindingsloos TCP (Transmission/Transport Control Protocol) voegt ook betrouwbaarheid toe TCP is verbindingsgericht Er zijn ook andere gedefinieerd. Lennart Herlaar Computerarchitectuur en netwerken 9 6

Transport Protocols Twee soorten meest gebruikt in Internet: UDP (User Datagram protocol) voegt alleen multiplexing/demultiplexing toe UDP is verbindingsloos TCP (Transmission/Transport Control Protocol) voegt ook betrouwbaarheid toe TCP is verbindingsgericht Er zijn ook andere gedefinieerd. Voorbeeld: DNS gebruikt meestal UDP: sneller (geen verbinding opzetten) maar kan ook TCP gebruiken HTTP, email, file transfer e.d. gebruiken TCP: Betrouwbaarheid is belangrijk Lennart Herlaar Computerarchitectuur en netwerken 9 6

UDP segment UDP segment bevat 4 velden naast de applicatiedata: port nummers van afzender en ontvanger Vraag: waarom niet IP-adressen? totale lengte van het segment een checksum om fouten te ontdekken Vraag: Hoe groot kan de data zijn? Lennart Herlaar Computerarchitectuur en netwerken 9 7

Inhoud Transport laag = UDP TCP: protocollen voor betrouwbaarheid = Lennart Herlaar Computerarchitectuur en netwerken 9 8

Multiplexing bij TCP Een TCP-connectie wordt gekarakteriseerd door: IP-adres + portnummer afzender, IP-adres + portnummer bestemming Lennart Herlaar Computerarchitectuur en netwerken 9 9

Betrouwbaarheid UDP levert dezelfde (on)betrouwbaarheid als het onderliggende netwerk Checksum kan gebruikt worden om integriteit van de data te controleren Verloren gegane segmenten worden niet gedetecteerd Volgorde is niet gegarandeerd Voorbeeld: DNS gebruikt meestal UDP Als nameserver geen antwoord krijgt, probeert hij een andere Volgorde is niet belangrijk TCP protocol (verbindingen opzetten, fouten corrigeren) kost teveel tijd Algemeen: bij request/response protocols kan UDP nuttig zijn. Ook bij multimedia (liever met een foutje doorgaan dan wachten) Lennart Herlaar Computerarchitectuur en netwerken 9 10

Betrouwbare Overdracht Er worden geen bits verkeerd doorgegeven Er raken geen stukken informatie kwijt Er wordt geen informatie gedupliceerd Alle gegevens worden in de juiste volgorde afgeleverd Als een van deze problemen optreedt, corrigeert het protocol dit Lennart Herlaar Computerarchitectuur en netwerken 9 11

Betrouwbare Overdracht Er worden geen bits verkeerd doorgegeven Er raken geen stukken informatie kwijt Er wordt geen informatie gedupliceerd Alle gegevens worden in de juiste volgorde afgeleverd Als een van deze problemen optreedt, corrigeert het protocol dit Voor de beschrijving van een protocol kan een Eindige automaat (Finite State Machine) gebruikt worden FSM geeft aan in welke toestanden de zender of ontvanger kan verkeren Wacht op een pakket Pakket ontvangen Zender en ontvanger hebben eigen FSM Lennart Herlaar Computerarchitectuur en netwerken 9 11

Voorbeeld FSM (Dit is een volkomen willekeurig voorbeeld) wacht op pakket recv(pakket) antwoord verzonden pakket ontvangen antwoord gestuurd send(antwoord) Algemeen: conditie voor overgang acties bij overgang Lennart Herlaar Computerarchitectuur en netwerken 9 12

Secretaresse Protocol Secretaresses versturen/ontvangen post voor hun bazen Baas Ahmed Bea Secr Sjaan Stefan Post virtuele communicatie Lennart Herlaar Computerarchitectuur en netwerken 9 13

Secretaresse Protocol Secretaresses voegen betrouwbaarheid toe Baas Ahmed Bea Secr Sjaan Please confirm Message received Stefan Post virtuele communicatie Lennart Herlaar Computerarchitectuur en netwerken 9 14

Simpel protocol met correctie In een simpel protocol stuurt de ontvanger een acknowledge (ACK) als een boodschap goed ontvangen is. Het is ook mogelijk een negatieve ack (NAK) te sturen als een boodschap verkeerd aankomt. We hebben een techniek nodig om te ontdekken dat er een (bit)fout is opgetreden: checksums (zie hoofdstuk 5) Bij een fout wordt het pakket opnieuw gestuurd Automatic Repeat request (ARQ) Lennart Herlaar Computerarchitectuur en netwerken 9 15

Interactie met omliggende lagen De verzender krijgt data van de bovenliggende laag verzendt via onderliggende laag De ontvanger krijgt data van de onderliggende laag levert af aan de bovenliggende laag Baas Ahmed Bea Secr Sjaan Stefan Post virtuele communicatie Lennart Herlaar Computerarchitectuur en netwerken 9 16

RDT (Reliable Data Transfer) Lennart Herlaar Computerarchitectuur en netwerken 9 17

FSM s voor simpel protocol Verzender: rdt_send(data) snkpkt = make_pkt(data, checksum) udt_send(sndpkt) Wait for call from above Wait for ACK or NAK rdt_rcv(rcvpkt) && isnak(rcvpkt) udt_send(sndpkt) rdt_rcv(rcvpkt) && isack(rcvpkt)! Lennart Herlaar Computerarchitectuur en netwerken 9 18

FSM s voor simpel protocol Ontvanger: rdt_rcv(rcvpkt) && corrupt(rcvpkt) udt_send(nak) Wait for call from below rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) extract(rcvpkt,data) deliver_data(data) udt_send(ack) Lennart Herlaar Computerarchitectuur en netwerken 9 19

Protocol zonder fouten rdt_send(data) snkpkt = make_pkt(data, checksum) udt_send(sndpkt) Wait for call from above rdt_rcv(rcvpkt) && isack(rcvpkt)! Wait for ACK or NAK rdt_rcv(rcvpkt) && isnak(rcvpkt) udt_send(sndpkt) rdt_rcv(rcvpkt) && corrupt(rcvpkt) udt_send(nak) Wait for call from below rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) extract(rcvpkt,data) deliver_data(data) udt_send(ack) Lennart Herlaar Computerarchitectuur en netwerken 9 20

Protocol met foutherstel rdt_send(data) snkpkt = make_pkt(data, checksum) udt_send(sndpkt) Wait for call from above Wait for ACK or NAK rdt_rcv(rcvpkt) && isack(rcvpkt)! rdt_rcv(rcvpkt) && isnak(rcvpkt) udt_send(sndpkt) rdt_rcv(rcvpkt) && corrupt(rcvpkt) udt_send(nak) Wait for call from below rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) extract(rcvpkt,data) deliver_data(data) udt_send(ack) Lennart Herlaar Computerarchitectuur en netwerken 9 21

ACK/NAK Problemen Dit protocol is FOUT!! Lennart Herlaar Computerarchitectuur en netwerken 9 22

ACK/NAK Problemen Dit protocol is FOUT!! We veronderstellen voorlopig dat pakketten wel aankomen Wat gebeurt er als een ACK of NAK pakket verminkt raakt? Lennart Herlaar Computerarchitectuur en netwerken 9 22

ACK/NAK Problemen Dit protocol is FOUT!! We veronderstellen voorlopig dat pakketten wel aankomen Wat gebeurt er als een ACK of NAK pakket verminkt raakt? Probleem: we weten niet of het een ACK of NAK is Dus: is ons datapakket wel of niet aangekomen? Als het pakket ten onrechte nog een keer gestuurd wordt dan is er een probleem Lennart Herlaar Computerarchitectuur en netwerken 9 22

ACK/NAK Problemen Dit protocol is FOUT!! We veronderstellen voorlopig dat pakketten wel aankomen Wat gebeurt er als een ACK of NAK pakket verminkt raakt? Probleem: we weten niet of het een ACK of NAK is Dus: is ons datapakket wel of niet aangekomen? Als het pakket ten onrechte nog een keer gestuurd wordt dan is er een probleem Oplossing: Geef de pakketten volgnummers Ontvanger gooit een pakket weg als het hetzelfde volgnummer als de vorige heeft Volgnummers 0 en 1 zijn voldoende Lennart Herlaar Computerarchitectuur en netwerken 9 22

FSM s met volgnummers en ACK/NAK (rdt2.1) Verzender rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && isack(rcvpkt)! rdt_rcv(rcvpkt) && ( corrupt(rcvpkt) isnak(rcvpkt) ) udt_send(sndpkt) rdt_send(data) sndpkt = make_pkt(0, data, checksum) udt_send(sndpkt) Wait for call 0 from above Wait for ACK or NAK 1 rdt_send(data) Wait for ACK or NAK 0 Wait for call 1 from above sndpkt = make_pkt(1, data, checksum) udt_send(sndpkt) rdt_rcv(rcvpkt) && ( corrupt(rcvpkt) isnak(rcvpkt) ) udt_send(sndpkt) rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && isack(rcvpkt)! Lennart Herlaar Computerarchitectuur en netwerken 9 23

FSM s met volgnummers en ACK/NAK (rdt2.1) Ontvanger rdt_rcv(rcvpkt) && (corrupt(rcvpkt) sndpkt = make_pkt(nak, chksum) udt_send(sndpkt) rdt_rcv(rcvpkt) && not corrupt(rcvpkt) && has_seq1(rcvpkt) sndpkt = make_pkt(ack, chksum) udt_send(sndpkt) rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && has_seq0(rcvpkt) extract(rcvpkt,data) deliver_data(data) sndpkt = make_pkt(ack, chksum) udt_send(sndpkt) Wait for 0 from below Wait for 1 from below rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && has_seq1(rcvpkt) extract(rcvpkt,data) deliver_data(data) sndpkt = make_pkt(ack, chksum) udt_send(sndpkt) rdt_rcv(rcvpkt) && (corrupt(rcvpkt) sndpkt = make_pkt(nak, chksum) udt_send(sndpkt) rdt_rcv(rcvpkt) && not corrupt(rcvpkt) && has_seq0(rcvpkt) sndpkt = make_pkt(ack, chksum) udt_send(sndpkt) Lennart Herlaar Computerarchitectuur en netwerken 9 24

FSM s met ACKS met volgnummers (rdt2.2) Verzender rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && isack(rcvpkt,1)! rdt_send(data) sndpkt = make_pkt(0, data, checksum) udt_send(sndpkt) Wait for call 0 from above Wait for ACK1 Wait for ACK0 Wait for call 1 from above rdt_rcv(rcvpkt) && ( corrupt(rcvpkt) isack(rcvpkt,1) ) udt_send(sndpkt) rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && isack(rcvpkt,0)! rdt_rcv(rcvpkt) && ( corrupt(rcvpkt) isack(rcvpkt,0) ) udt_send(sndpkt) rdt_send(data) sndpkt = make_pkt(1, data, checksum) udt_send(sndpkt) Lennart Herlaar Computerarchitectuur en netwerken 9 25

FSM s met ACKS met volgnummers (rdt2.2) Ontvanger rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && has_seq0(rcvpkt) extract(rcvpkt,data) deliver_data(data) sndpkt = make_pkt(ack,0, chksum) udt_send(sndpkt) rdt_rcv(rcvpkt) && (corrupt(rcvpkt) has_seq1(rcvpkt)) udt_send(sndpkt) Wait for 0 from below Wait for 1 from below rdt_rcv(rcvpkt) && (corrupt(rcvpkt) has_seq0(rcvpkt)) udt_send(sndpkt) rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && has_seq1(rcvpkt) extract(rcvpkt,data) deliver_data(data) sndpkt = make_pkt(ack,1, chksum) udt_send(sndpkt) Lennart Herlaar Computerarchitectuur en netwerken 9 26

Samenvatting Transportlaag: multiplexing betrouwbaarheid (TCP) protocollen voor betrouwbaarheid met ACKs (ARQ) en volgnummers Lennart Herlaar Computerarchitectuur en netwerken 9 27

Inhoud Reliable data transfer Protocol met foutherstel Protocol met verloren pakketten Sliding Window protocol TCP implementatie Flow control Congestiebeheer Lennart Herlaar Computerarchitectuur en netwerken 9 28

Mechanismen Verzender: Als een ACK met het verkeerde volgnummer wordt ontvangen wordt het laatste pakket nog een keer gestuurd ARQ = Automatic Repeat request Volgnummers: Omdat er telkens twee mogelijkheden zijn (nieuw pakket of duplicaat, en pakket goed of pakket fout ontvangen) hebben we slechts twee volgnummers nodig: afwisselend 0 en 1 Alternating bit protocol Lennart Herlaar Computerarchitectuur en netwerken 9 29

Betrouwbare Overdracht Eisen: Er worden geen bits verkeerd doorgegeven Er raken geen stukken informatie kwijt Er wordt geen informatie gedupliceerd Alle gegevens worden in de juiste volgorde afgeleverd Als een van deze problemen optreedt corrigeert het protocol dit Tot nu toe zijn we alleen van verminkte pakketten uitgegaan. Maar er kunnen ook pakketten helemaal verloren gaan. Lennart Herlaar Computerarchitectuur en netwerken 9 30

Protocol problemen 1. A B boodschap boodschap verdwijnt B kan niets doen want deze weet niet dat A iets gestuurd heeft. A moet dus op eigen houtje uitvinden dat er iets mis is gegaan. Lennart Herlaar Computerarchitectuur en netwerken 9 31

Protocol problemen 1. 2. A B boodschap boodschap verdwijnt A B boodschap B kan niets doen want deze weet niet dat A iets gestuurd heeft. A moet dus op eigen houtje uitvinden dat er iets mis is gegaan. ACK ACK verdwijnt Ook nu moet A zelf uitvinden dat er iets verkeerd is gegaan. Lennart Herlaar Computerarchitectuur en netwerken 9 31

Timeouts De manier om dit uit te vinden is: reageren als er niks terug komt (binnen een bepaalde tijd) Hoe lang moet je wachten? Op een fysieke lijn: Round Trip Tijd (RTT) In netwerk: moeilijk te schatten Protocol moet bestand zijn tegen te korte wachttijd Na elk verzonden bericht start een wekker Als wekker afloopt en er is geen ACK gekomen: verstuur opnieuw Lennart Herlaar Computerarchitectuur en netwerken 9 32

Protocol met timeouts (rdt3.0) rdt_rcv(rcvpkt)! rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && isack(rcvpkt,1) stop_timer timeout udt_send(sndpkt) start_timer rdt_rcv(rcvpkt) && ( corrupt(rcvpkt) isack(rcvpkt,0) )! rdt_send(data) sndpkt = make_pkt(0, data, checksum) udt_send(sndpkt) start_timer Wait for call 0 from above Wait for ACK1 rdt_send(data) Wait for ACK0 Wait for call 1 from above sndpkt = make_pkt(1, data, checksum) udt_send(sndpkt) start_timer rdt_rcv(rcvpkt) && ( corrupt(rcvpkt) isack(rcvpkt,1) )! timeout udt_send(sndpkt) start_timer rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && isack(rcvpkt,0) stop_timer rdt_rcv(rcvpkt)! Lennart Herlaar Computerarchitectuur en netwerken 9 33

Scenario s Lennart Herlaar Computerarchitectuur en netwerken 9 34

Scenario s Lennart Herlaar Computerarchitectuur en netwerken 9 35

Scenario s Lennart Herlaar Computerarchitectuur en netwerken 9 36

Scenario s Lennart Herlaar Computerarchitectuur en netwerken 9 37

Stop-and-wait vs. Pipelining De voorgaande protocollen heten stop-and-wait Bij lange vertragingen (t.o.v. transmissietijd) zeer onvoordelig: meeste tijd gaat zitten in wachten op ACK Beter: Pipelining (sliding window protocol) Stuur alvast volgende boodschappen ook al is er nog geen ACK Lennart Herlaar Computerarchitectuur en netwerken 9 38

Stop-and-wait vs. Pipelining De voorgaande protocollen heten stop-and-wait Bij lange vertragingen (t.o.v. transmissietijd) zeer onvoordelig: meeste tijd gaat zitten in wachten op ACK Beter: Pipelining (sliding window protocol) Stuur alvast volgende boodschappen ook al is er nog geen ACK Het protocol wordt nu wel ingewikkelder: Nu bijhouden welke ACKs je al gehad hebt Meerdere buffers nodig Meer volgnummers Per verzonden bericht een timer Wat doe je als er een bericht verloren gaat? Lennart Herlaar Computerarchitectuur en netwerken 9 38

Stop-and-wait Situatie: L = 8000 bits/pakket, R = 10 9 bps, RTT = 30 msec. bereken U = efficiëntie van het gebruik van de link Lennart Herlaar Computerarchitectuur en netwerken 9 39

Pipelining Lennart Herlaar Computerarchitectuur en netwerken 9 40

Sliding window protocol Wat doe je als er een bericht verloren gaat? In ieder geval het bericht nog eens sturen Twee keuzen alleen dat bericht herhalen in dat geval moet de ontvanger ingewikkelde administratie bijhouden alle volgende berichten ook herhalen ontvanger heeft het gemakkelijker Verzender moet dus een aantal verzonden berichten kunnen bewaren zolang nog geen ACK ontvangen is: dit heet het window Aanname Er is op elk moment een beperkt aantal geldige volgnummers beperkt aantal bits beperkt geheugen bij zender/ontvanger Lennart Herlaar Computerarchitectuur en netwerken 9 41

Go Back N protocol Ontvanger wil pakketten alleen in goede volgorde ontvangen Ontvanger accepteert alleen pakket met eerstvolgende verwachte volgnummer Ontvanger heeft alleen geheugen voor één pakket nodig Ontvanger stuurt ACK van laatste correct ontvangen pakket Verzender accepteert ACK als acknowledge ook voor vorige pakketten (cumulatief) Bij probleem stuurt verzender alle pakketten na laatst geackte pakket Lennart Herlaar Computerarchitectuur en netwerken 9 42

Go Back N protocol werking Verzender base=1 nextseqnum=1 rdt_rcv(rcvpkt) && corrupt(rcvpkt)!! rdt_send(data) if (nextseqnum < base+n) { sndpkt[nextseqnum] = make_pkt(nextseqnum,data,chksum) udt_send(sndpkt[nextseqnum]) if (base == nextseqnum) start_timer nextseqnum++ } else refuse_data(data) Wait rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) base = getacknum(rcvpkt)+1 If (base == nextseqnum) stop_timer else start_timer timeout start_timer udt_send(sndpkt[base]) udt_send(sndpkt[base+1]) udt_send(sndpkt[nextseqnum-1]) Lennart Herlaar Computerarchitectuur en netwerken 9 43

Go Back N protocol werking Ontvanger rdt_rcv(rcvpkt) && notcurrupt(rcvpkt) && hasseqnum(rcvpkt,expectedseqnum) extract(rcvpkt,data) deliver_data(data) sndpkt = make_pkt(expectedseqnum,ack,chksum) udt_send(sndpkt) expectedseqnum++! expectedseqnum=1 sndpkt = make_pkt(0,ack,chksum) Wait default udt_send(sndpkt) Lennart Herlaar Computerarchitectuur en netwerken 9 44

Selective Repeat protocol Ontvanger wil wel pakketten herordenen Ontvanger accepteert alle pakketten in het venster Ontvanger heeft geheugen voor N pakketten Ontvanger stuurt ACK van elk correct ontvangen pakket (ook reeds eerder geackte) Verzender accepteert ACK als acknowledge alleen voor pakket zelf Elk verzonden pakket moet eigen timer hebben Bij probleem stuurt verzender alleen pakket met timeout Venster wordt opgeschoven als er geen gaten in zijn Het is evt mogelijk om NAKs te gebruiken om een missend pakket te melden Lennart Herlaar Computerarchitectuur en netwerken 9 45

Selective Repeat protocol Lennart Herlaar Computerarchitectuur en netwerken 9 46

Hoeveel volgnummers nodig? Lennart Herlaar Computerarchitectuur en netwerken 9 47

Hoeveel volgnummers nodig? Aantal volgnummers windowgrootte zender + windowgrootte ontvanger Lennart Herlaar Computerarchitectuur en netwerken 9 48

TCP Implementatie TCP gebruikt volgnummers van 32 bits TCP is geen message passing maar byte stream daarom volgnummer = bytenummer (modulo 2 32 ) ACK nummer = eerstvolgend verwacht bytenummer bytestream wordt opgedeeld in segmenten O.S kan een maximale segmentgrootte definiëren Ontvanger slaat uit volgorde ontvangen segmenten meestal wel op (maar hoeft niet) Toch cumulatieve ACK (Go Back N maar met één segment hertransmissie) Na 4 keer dezelfde ACK wordt hertransmissie gedaan vóór de timeout (Fast Retransmit) Lennart Herlaar Computerarchitectuur en netwerken 9 49

TCP segmenten Lennart Herlaar Computerarchitectuur en netwerken 9 50

TCP hertransmissie Lennart Herlaar Computerarchitectuur en netwerken 9 51

RTT schatting RTT: gaia.cs.umass.edu to fantasia.eurecom.fr EstimatedRTT = (1 α) EstimatedRTT + α SampleRTT 350 300 RTT (milliseconds) 250 200 150 100 1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106 time (seconnds) SampleRTT Estimated RTT Lennart Herlaar Computerarchitectuur en netwerken 9 52

TCP flow control Flow control = zorgen dat ontvanger niet teveel te verwerken krijgt Basis ARQ protocol levert al flow control (vooral stop-and-wait) Verzending beperkt door venster Bij TCP vaste ontvangstbuffer in O.S. Vrije ruimte = ontvangstvenster Ontvanger zendt telkens de grootte van de vrije ruimte terug naar verzender (bijvoorbeeld in ACK of retourdata) Verzender mag niet meer zenden dan in venster past Uitzondering: als venstergrootte = 0 dan toch 1 byte zenden anders komt er misschien nooit meer een nieuwe venstergrootte Lennart Herlaar Computerarchitectuur en netwerken 9 53

Flow control Zender Last Last Byte Byte Acked Sent 0 byte nummers Ontvanger Last Byte Read Last Byte Recvd RcvWindow 01 receive buffer 00 11 LastByteSent LastByteAcked RcvWindow Lennart Herlaar Computerarchitectuur en netwerken 9 54

TCP segmenten Lennart Herlaar Computerarchitectuur en netwerken 9 55

TCP connect Beide kanten kiezen een begin-sequence nummer sequence-nummers worden zo gekozen dat kans klein is op duplicaat Bij opzetten van verbinding worden sequence nummers uitgewisseld De sequencenummers moeten geacknowledget worden (twee kanten op) Daarom 3-weg handshake Lennart Herlaar Computerarchitectuur en netwerken 9 56

TCP connect Lennart Herlaar Computerarchitectuur en netwerken 9 57

TCP disconnect Bij afsluiten moet elke kant afzonderlijk een afsluitbericht sturen (anders sluit de verbinding terwijl de ander nog niet klaar is) ACKs kunnen verloren gaan: Dan stuurt de andere kant nog een keer de FIN Een timeout voor het afsluiten. Lennart Herlaar Computerarchitectuur en netwerken 9 58

TCP disconnect Lennart Herlaar Computerarchitectuur en netwerken 9 59

TCP FSMs Lennart Herlaar Computerarchitectuur en netwerken 9 60