Samenvatting Infrastructuur door Leon Wetzel
Infrastructuur Samengesteld door Leon Wetzel
Protocollen Protocol
Een protocol is een stelsel afspraken waarin het formaat en de volgorde van de berichten wordt gedefinieerd die tussen twee of meer communicerende entiteiten worden uitgewisseld én de reacties bij het verzenden en/of ontvangen van een bericht of bij een andere gebeurtenis.
Netwerkprotocollen
Alle communicatieactiviteiten op de netwerken worden geregeld door middel van protocollen.
Netwerkstructuren Networkrand / Network edge
Applicaties en hosts
Toegangsnetwerken
Bedrade of draadloze communicatieverbindingen
Netwerkkern / Network core
Netwerk van netwerken, verbonden routers
Netwerkrand / network edge Eindsystemen / hosts
Voeren applicaties uit zoals e-mail of browsen op het internet. Wordt gedaan op ‘de rand van het netwerk’ (edge of network).
Client-server model
1
Samenvatting Infrastructuur door Leon Wetzel Server:
Host die altijd aan staat Permanent IP-adres Server farms / Server clusters voor schaling
Clients:
Communiceren met server Kunnen sporadisch verbonden zijn Kunnen een dynamisch IP-adres hebben Clients communiceren niet direct met elkaar
Peer-to-peer model
Er is geen server die altijd aan staat Eindsystemen communiceren direct met elkaar Peers zijn sporadisch met elkaar verbonden Peers veranderen hun IP-adressen Goed schaalbaar, maar moeilijk om te beheren
Netwerklagen Introductie Netwerken zijn complex!
Verschillende soorten hosts Hosts draaien verschillende programma’s (parallel) Verschillende types applicaties Verschillende snelheden en bandbreedtes Etc., etc., etc.,…
Lagen Elke laag implementeert een dienst
Via zijn eigen laaggebonden acties Door afhankelijk te zijn van diensten die worden aangeboden door een bovenliggende laag 2
Samenvatting Infrastructuur door Leon Wetzel
Laag N gebruikt diensten van laag N-1. Laag N levert diensten aan laag N+1. Maar waarom lagen gebruiken?
Complexe systemen worden makkelijker in de omgang Structuur zorgt voor makkelijkere herkenning van de stukken van het systeem Modulariteit versimpelt onderhoud en het bijwerken van het systeem Aanpassingen van een laag zijn transparant voor de rest van het systeem Fouten kunnen makkelijker worden herkend Machines die dezelfde lagen bieden zijn compatibel Implementaties van een laag zijn makkelijk aan te passen (voorkomt vendor lock-in)
Regels voor communicatie tussen lagen: interface
3
Samenvatting Infrastructuur door Leon Wetzel
Internet Protocol Stack Laag Applicatie Transport Netwerk Link Fysiek
Protocol FTP, SMTP, HTTP, DNS TCP, UDP IP, routingprotocollen PPP, Ethernet, WiFi DSL, Bluetooth, USB
Packetnaam Bericht / Data Segment Datagrammen Frames Afzonderlijke bits
Tussen? Applicatie - Applicatie Proces - Proces Host - Host Direct met elkaar verbonden systemen Kabel
Applicatielaag Hierop worden netwerktoepassingen en bijbehorende protocollen uitgevoerd. Voorbeelden van deze protocollen zijn HTTP (webdocumenten), SMTP (e-mailberichten) en FTP (overdracht van bestanden tussen twee eindsystemen). Mensen kunnen zelf relatief makkelijk protocollen maken voor de applicatielaag en deze toe te passen. Een packet met informatie op deze laag heet een bericht.
Transportlaag Deze laag zorgt voor het transport van berichten van toepassingen. Op het internet worden twee transportprotocollen gebruikt, namelijk UDP en TCP (deze worden later behandeld). Een packet met informatie op deze laag heet een segment.
Netwerklaag De netwerklaag is verantwoordelijk voor transporteren van packets van de netwerklaag van de ene host naar de andere. De protocollen van de transportlaag (UDP en TCP) in een bronhost geven een transportlaagsegment en een bestemmingsadres door aan de netwerklaag. De netwerklaag zorgt er vervolgens voor dat het segment bij de transportlaag in de ontvangende host wordt afgeleverd. Een packet met informatie op deze laag heet een datagram. Op de netwerklaag wordt het IP-protocol gebruikt. Dit protocol definieert de velden in het datagram zelf, maar ook hoe eindsystemen en routers daar mee om moeten gaan. Er is maar één IP-protocol en alle internetcomponenten met een netwerklaag moeten het IP-protocol gebruiken. De netwerklaag bevat ook padbepalingsprotocollen die het pad van de datagrammen tussen de bron en bestemming bepalen. Het internet is een netwerk van netwerken, en binnen een netwerk kan een netwerkbeheerder dus elk padbepalingsprotocol gebruiken die hij wilt. Hoewel de netwerklaag zowel het IP-protocol as een groot aantal andere padbepalingsprotocollen bevat, wordt deze laag vaak de IP-laag genoemd omdat IP eigenlijk de lijm is waarmee het internet bij elkaar gehouden wordt.
Datalinklaag De netwerklaag bepaalt het pad van een packet langs een reeks routers tussen de bron en bestemming. Voor het verplaatsen van een node (host of router) naar de volgende node vertrouwt de netwerklaag op de diensten van de datalinklaag. De netwerklaag geeft datagram omlaag door aan de datalinklaag, die het datagram weer doorstuurt naar de volgende node. Bij de volgende node geeft de datalinklaag het datagram weer terug omhoog aan de netwerklaag.
4
Samenvatting Infrastructuur door Leon Wetzel De diensten van de datalinklaag variëren met het specifieke datalinklaagprotocol dat door de link wordt gebruikt. Sommige datalinklaagprotocollen bieden bijvoorbeeld betrouwbare bezorging tussen de verzendende node, over een link, tot de ontvangende node. Dit verschilt echter met TCP! Voorbeelden van datalinklaagprotocollen zijn Ethernet, Wi-Fi en het point-to-pointprotocol (PPP). Omdat datagrammen bijna altijd verschillende links moeten passeren, kan een datagram door verschillende datalinklaagprotocollen worden afgehandeld bij verschillende links op het pad. De netwerklaag ontvangt van elk van deze datalinklaagprotocollen een andere dienst. Een packet met informatie op deze laag noemen we een frame.
Fysieke laag Waar de datalinklaag complete frames van het ene netwerkelement naar het volgende netwerkelement moet transporteren, verplaatst de fysieke laag afzonderlijke bits in een frame van een node naar de volgende node. Protocollen in deze laag zijn ook linksafhankelijk en worden verder bepaald door het fysieke transmissiemedium van de link (glasvezel of twisted-pairkoperdraad). In het geval van Ethernet is er een speciaal protocol voor bijvoorbeeld coaxiale kabels en glasvezel. Elk bit wordt dus op een speciale manier over een link getransporteerd.
OSI-model Laag Applicatie Presentatie Sessie Transport Netwerk Link Fysiek
Protocol FTP, SMTP, HTTP, DNS AFP, PAD, NDR ASDP, PAP, SMPP TCP, UDP IP, routingprotocollen PPP, Ethernet, WiFi DSL, Bluetooth, USB
Packetnaam Bericht / Data Bericht / Data Bericht / Data Segment Datagrammen Frames (Afzonderlijke) bits
Het OSI-model voegt twee lagen toe aan de Internet Protocol Stack die we eerder hebben gezien. Maar waarom ontbreken deze lagen op de Internet Protocol Stack? Omdat de ontwikkelaar van de toepassing er zelf voor moet zorgen dat de bijbehorende protocollen worden gebruikt!
Presentatielaag De presentatielaag verleent diensten waarmee communicerende toepassingen de betekenis van de uitgewisselde gegevens kunnen interpreteren. Hierbij valt te denken aan gegevenscompressie en gegevensversleuteling, maar ook gegevensomschrijving.
Sessielaag Deze laag zorgt voor het beperken en synchroniseren van de gegevensuitwisseling, en biedt onder andere de mogelijkheid om controlepunten te realiseren en gegevens te herstellen.
5
Samenvatting Infrastructuur door Leon Wetzel
Berichten, segmenten, datagrammen en frames
6
Samenvatting Infrastructuur door Leon Wetzel
Inkapseling Bij de verzendende host wordt een applicatielaagbericht doorgegeven aan de transportlaag. Simpel gezegd neemt de transportlaag het bericht aan en voegt daar aanvullende informatie (transportlaagheader) aan toe. Samen vormen die elementen het transportlaagsegment. Applicatielaagbericht + Transportlaagheader = Transportlaagsegment Het transportlaagsegment kapselt dus het applicatiebericht in. Aanvullende informatie kan informatie zijn waarmee de transportlaag aan ontvangstkant het bericht bij de juiste toepassing kan afleveren, maar het kunnen ook foutdetectiebits zijn. De transportlaag overhandigt dan het segment aan de netwerklaag die een netwerklaagheader toevoegt, zoals de adressen van de bron en de bestemming, waardoor een netwerklaagdatagram ontstaat. Een packet heeft op elke laag dus twee soorten velden: headervelden en een payloadveld. De payload, of data, is feitelijk een packet van de bovenliggende laag. Inkapseling zou complexer kunnen worden. Grote berichten kunnen worden opgesplitst in verschillende transportlaagsegmenten (die elk ook weer worden opgesplitst in verschillende netwerklaagdatagrammen). Aan de ontvangstkant moet dit segment dan weer met behulp van de juiste datagrammen worden opgebouwd.
DNS - Domain Name System DNS-diensten
Hostnaam vertalen naar IP-adres Host aliasing (canonieke namen en pseudoniemen) Mail server aliasing Belastingverdeling (load distribution)
Waarom kunnen we DNS niet centraliseren?
Als het centrale punt wegvalt, dan valt alles weg! Het centrale punt kan al het internetverkeer niet aan Het centrale punt ligt te ver weg van andere continenten (waar je het ook plaatst) Onderhoud zou een ramp zijn Het is niet schaalbaar!
7
Samenvatting Infrastructuur door Leon Wetzel IP-adressen zijn hiërarchisch omdat we, als we van links naar rechts lezen, steeds meer informatie krijgen over de locatie van de host. Dit is vergelijkbaar met het adres op een brief.
Diensten van het DNS Er zijn twee manieren om een host aan te duiden: 1. Met een hostnaam (www.goldhill.nl) 2. Met een IP-adres (172.16.254.1)
menselijke voorkeur machinale voorkeur
Om beide voorkeuren tegemoet te komen, moet er een lijst zijn waarin deze twee manieren gekoppeld worden. Dat is de belangrijkste taak van het Domain Name System. DNS is een gedistribueerde database die is geïmplementeerd in een hiërarchie van DNS-servers en een applicatielaagprotocol waarmee hosts en DNS-servers kunnen communiceren om de vertaalslag te maken (het omzetten van een IP-adres in een hostnaam). DNS-servers zijn vaak Unix-machines die draaien op Berkeley Internet Name Domain-software. Het DNS-protocol werkt met UDP en gebruikt poort 53.
Een gedistribueerde, hiërarchische database Er zijn drie klassen DNS-servers: 1. Root DNS-servers 2. Topleveldomein-servers / TLD-servers 3. Authentiserende DNS-servers
Root DNS-servers Er zijn dertien van deze servers wereldwijd. Feitelijk is elke server een cluster van gerepliceerde servers (voor veiligheid en betrouwbaarheid).
Topleveldomein-servers / TLD-servers Dit zijn de servers die verantwoordelijk zijn voor topleveldomeinen als com, org en edu.
Authentiserende DNS-servers Elke organisatie met hosts op het internet die publieke benaderbaar zijn is verplicht om DNSgegevens te leveren waarin de namen van deze hosts aan IP-adressen worden gekoppeld. Deze gegevens worden opgeslagen op de authentiserende DNS-server. Dit kan een organisatie zelf doen of door een externe organisatie.
Lokale DNS-servers Dit type hoort niet thuis in de hiërarchie van servers. Elke provider heeft een lokale DNS-server (ook wel standaard-DNS-server). Wanneer een host verbinding wil maken met een provider, geeft de provider aan die host de IP-adressen van één of meer van diens lokale DNS-servers (vaak via DHCP).
Types verzoeken Recursief
De verwijzing van een hostnaam wordt opgevraagd op eigen titel.
Iteratief
Antwoorden worden direct geadresseerd aan de lokale DNS-server.
8
Samenvatting Infrastructuur door Leon Wetzel
DNS-caching DNS-caching wordt gebruikt om vertragingen en het aantal DNS-berichten over het netwerk te verminderen. Een DNS-server kan de verwijzing van een hostnaam naar een IP-adres plaatsen in het lokale cachegeheugen.
Transportlaag Een transportlaagprotocol maakt logische communicatie mogelijk tussen toepassingsprocessen die op verschillende hosts worden uitgevoerd. UDP en TCP hebben als taak om zo goed mogelijk het verlengstuk te zijn van de bezorgdienst van IP. De verlenging van de host-to-hostbezorging tot proces-to-procesbezorging heet applicationmultiplexen en application-demultiplexen. UDP: snelle aflevering > kwaliteit UPD en TCP hebben niet: -
Garanties m.b.t. vertragingen. Informatie over bandbreedte.
UDP (User Datagram Protocol) Biedt een onbetrouwbare en connectionless service aan toepassingen. IP-protocol werkt met UDP. Wat betekent dat? -
-
Best-effort delivery o Uiterste best om segmenten te verplaatsten, maar geen garanties dat het gebeurt. o Geen garanties dat segmenten niet verminkt zijn. o Geen garanties dat segmenten in de juiste volgorde worden bezorgd. Het is dus een onbetrouwbare dienst!
TCP (Transmission Control Protocol) Biedt een betrouwbare en connection-oriented dienst aan toepassingen. Maakt gebruik van: -
Flow-control (ontvanger niet overspoelen) Volgnummers Bevestigingen Timers Congestiecontrolemechanisme Connection setup
Hierdoor TCP ervoor dat berichten intact en in de juiste volgorde aankomen. Congestiecontrole voorkomt dat een willekeurige TCP-verbinding de links en routers tussen communicerende hosts overbelast. TCP is erop gericht om elke TCP-verbinding over een zwaarbelaste link een gelijk deel van de beschikbare linkbandbreedte te gunnen.
9
Samenvatting Infrastructuur door Leon Wetzel
Multiplexen en demultiplexen Het uitbreiden van de afleverdienst tussen de host op de netwerklaag tot een afleverdienst tussen toepassingen die op de hosts worden uitgevoerd. De transportlaag van de ontvangende host ontvangt segmenten van de onderliggende netwerklaag. De transportlaag moet deze segmenten vervolgens bezorgen bij het betreffende toepassingsproces op de host. Een proces heeft één of meer sockets die als deur fungeren waardoor gegevens van het netwerk naar het proces en omgekeerd wordt verplaatst. Zo levert de transportlaag op de ontvangende host niet de gegevens rechtstreeks aan een proces, maar aan een tussenliggende socket. Elke socket heeft een uniek identificatienummer, waarvan de indeling verschilt tussen TCP en UDP. Multiplexen
Het verzamelen van gegevens van verschillende toepassingsprocessen op de verzendende host, het verpakken en toevoegen van headerinformatie om segmenten te maken en deze segmenten vervolgens door te geven aan de netwerklaag.
Demultiplexen
Aan de ontvangende kant bepaalt de transportlaag aan de hand van de velden van het transportlaagsegment voor welk ontvangend proces een segment bestemd is en zorgt vervolgens voor dat het daar ook terechtkomt.
Kort samengevat: Bij elkaar voegen van data = multiplexing Uit elkaar halen van data = demultiplexing
TCP en UDP TCP en UDP hebben twee poortnummers: -
1 voor ontvanger, 1 voor verzender Source port, destination port
TCP-socket heeft: -
# 1 2 3 4
IP-adres van bron Poortnummer van bron IP-adres van bestemming Poortnummer van bestemming
IP van bron A A A B
Poort van bron 1024 1025 1026 1024
IP van bestemming C C C C
Poort van bestemming 80 80 23 80
10
Samenvatting Infrastructuur door Leon Wetzel UDP: -
Geen staande sessie Kijkt alleen naar destination poortnummer en IP-adres Geen multiplexing! Segmenten kunnen verloren raken of in verkeerde orde binnenkomen Geen handshaking tussen ontvanger en verzender Elk UDP-segment wordt individueel behandeld Kleine segmenten Geen congestiecontrole Ideaal voor DDoS
UDP-checksum: -
Fouten detecteren Gebruikt one’s complement
TCP: -
Point-to-point o Één zender, één ontvanger Betrouwbaar Oneindige stroom van bytes mogelijk Congestiecontrole Flow-control Zender en ontvanger hebben buffers Handshaking o Controle of ontvanger er is Heeft meer ruimte nodig dan UDP o Meer controlevelden
TCP levert betrouwbare dataoverdracht. Dat levert een generiek probleem op dat in meerdere lagen moet worden opgelost. Pipelining
Meerdere pakketten tegelijkertijd sturen
Pipelining protocollen: -
Go-Back-N o Gebruiker kan n-aantal pakketten verzenden o Verzender heeft buffer o Ontvanger buffert niks o Dus: protocol ideaal voor ontvanger
-
Selective Repeat o Zowel ontvanger als verzender buffert o Ontvanger verstuurt per pakket een acknowledgement (bevestiging / ACK) o Zender beheert een timer voor elk packet dat niet een ACK heeft
TCP gebruikt eigenschappen van Go-Back-N en Selective Repeat. Cumulatieve ACK maar selectief opnieuw versturen van packets.
11
Samenvatting Infrastructuur door Leon Wetzel Op laag 3 (netwerklaag): -
Forwarding o Pakket ontvangen en doorsturen Routing o Bepalen van het pad waar informatie heen moet Connection setup (optioneel)
Maar wat ACK/NAK corrupt is? -
Zender weet niet wat er gebeurd is bij de ontvanger Zender kan niet het bericht opnieuw versturen, want die weet niet of het gaat om een nieuw packet of een duplicaat.
12
Samenvatting Infrastructuur door Leon Wetzel Hoe handelen we bij duplicaten? -
Zender verstuurt het huidige packet opnieuw ALS ACK/NAK corrupt is Zender voegt een sequentienummer toe aan elk pakket Ontvanger negeert gedupliceerde packets
Maar wat als het onderliggende kanaal nou ook packets verliest? -
Zender wacht een tijdje op ACK (vereist een timer) Zender stuurt opnieuw het bericht als er binnen een bepaalde tijd geen ACK is ontvangen Als het packet is vertraagd (niet verloren!), dan stuurt zender het packet opnieuw (dus een duplicaat, maat met een sequentienummer). Ook de ontvanger zal dan een sequentienummer moeten toevoegen aan het packet.
13
Samenvatting Infrastructuur door Leon Wetzel Kan NAK verwijderd worden? In het geval van biterror(s): -
Geen NAK versturen Vertrouwen op timeout (maakt waarde van timeout nog belangrijker)
Go-Back-N versus Selective Repeat -
Efficiënter gebruik van bandbreedte versus bufferruimte
Go-Back-N: -
Vereist bufferen bij zender Buffer niet vereist bij ontvanger 14
Samenvatting Infrastructuur door Leon Wetzel -
Packets die correct zijn ontvangen kunnen opnieuw verzonden worden, wat tijd en bandbreedte verspilt.
Selective Repeat: -
Bufferen niet vereist bij zender Packets die correct zijn verzonden, hoeven niet opnieuw verstuurd te worden
Datagramnetwerken -
Geen call setup op de netwerklaag Routers kennen geen status van end-to-endverbindingen Op netwerkniveau bestaat er niet zoiets als ‘verbinding’ Packets worden doorgestuurd d.m.v. hostadres van bestemming Packets kunnen echter een ander pad nemen als het gaat om hetzelfde paar broneindbestemming.
IP
Waarom IPv6? -
32-bits adressering is achterhaald; bijna alle adressen zijn op! Simpele header zorgt voor meer snelheid bij verwerken en doorsturen Kwaliteit van dienstverlening moet omhoog
IPv6 datagram formaat: -
Header met een vaste lengte van 40 byte. Fragmentatie niet toegestaan
15
Samenvatting Infrastructuur door Leon Wetzel
Dus hoeveel adressen zijn er met IPv6? IPv6 biedt plaats voor 2^128 (3,4 * 10^38) adressen!
Andere wijzigingen t.o.v. IPv4 -
Checksum is verwijderd om verwerkingstijd te reduceren Instellingen zijn toegestaan, mits deze uiten de header zijn en aangegeven met ‘Next Header’-veld ICMPv6, wat nieuwe berichttypes ondersteunt zoals ‘Packet te groot’
EINDE
16