Computernetwerken
!
1. Fundamentals
!
Communicatie vereist regels, deze regels noemt met protocollen. Mensen kunnen met relatief losse regels (protocollen) communiceren, bij computers moet dit strikt vastliggen.
!
Communicatieprotocollen bevatten vaak een zender, ontvanger, een manier van communiceren (telefoon, sms, mail, ..), een overeengekomen gemeenschappelijke taal en een snelheid van communiceren alsook commando’s ter bevestiging.
!
De kwaliteit van communicatie is belangrijk bij netwerken, bij VOIP mogen er bv geen pakketen verliezen of in een verkeerde volgorde aankomen.
!
Potentiële problemen: Intern: de groote van een bericht, de complexiteit van een bericht en de belangrijkheid an een bericht. Extern: kwaliteit van de weg tussen zender en ontvanger, omzetten van het formaat van het bericht, aantal keer dat het bericht van pad veranderd.
! Protocollen: !
HTTP: Hypertext Transport Protocol E-mail: SMTP Simple Mail Transfer Protocol, POP Post Ofice Procotol Netwerkarchitectuur:
! Redundantie, schaalbaarheid, QoS (Quality of Service), beveiliging. !
Vroeger: circuit switched netwerken: eerst een verbinding maken dan deze blijven gebruiken, Nu: packet switched netwerken: elk pakket kan zijn eigen weg gaan, indien er ergens een probleem is pakt het gewoon een andere weg. Elk pakket bevat info ivbm verzender en ontvanger.
!
Quality Of Service: sommige pakketen krijgen voorrang op andere, voip pakketen zijn bv belangrijker dan webpagina’s.
!
! ! ! ! !
!
2 OSI IP Model
!
3 belangrijke elementen van communicatie: bron, bestemming en kanaal, wie zal via welk kanaal iets verzenden naar iemand anders.
!
Computers sturen zeer uiteenlopende berichten, kleine tot zeer groot. Een oplossing om het netwerk niet helemaal te bezetten is om berichten op te splitsen in kleinere segmenten. Hierdoor kunnen verschillende pakketen door elkaar heen verzonden worden en kunnen verschillende pakketen van dezelfde data een verschillend pad nemen.
!
Berichten worden altijd naar een „end device” gestuurd ook wel een host genoemd. Elke host heeft een uniek fysiek adres (MAC-adres), het host adres.
!
Een berichten passeert verschillende soorten apparaten doorheen zijn reis van verzender naar ontvanger, denk hierbij aan hubs, switchen, modems, routers, … Deze apparaten hebben uiteenlopende functionaliteiten zoals het routeren van pakketen, versterken van de signalen en eventueel pakketen vertragen zodat andere pakketen (met een hogere prioriteit) eerder door mogen (QoS).
!
Protocollen
!
Voor communicatie op netwerken moeten er enkele dingen vastliggen in protocollen: - de structuur van pakketen, bv: pakketen van 10 000 bits - de manier waarop route-informatie wordt uitgewisseld - hoe en wanneer fouten en systeemberichten worden gestuurd, bv: pakket verloren - hoe een datatransfer wordt opgezet en afgebroken, bv: datatransfers max 60 seconden
!
Protocollen en standaarden worden vastgelegd door bv: - IEEE, Institute of Electrical and Electronics Engineers - IETF, Internet Engineering Task Force - IAB, Internet Architecture Board
!
Protocollen bepalen niet in welke taal een webbrowser moet gemaakt zijn of hoe ze de uiteindelijke data moeten interpreteren. Protocollen bepalen enkel de vorm en structuur van de berichten die worden verzonden.
!
Klein voorbeeld: webbrowser die communiceert met de server
!
Application protocol (HTTP) legt vast op welke manier de client en server bestanden uitwisselen (GET/POST). Het Transport Protocol (TCP) zal de grotere berichten opsplitsen in kleinere gemakkelijk te versturen segmenten. Het Internet Protocol (IP) zal deze TCP segmenten in een IP „enveloppe” steken met informatie over verzender en ontvanger. Als laatste zal het Network Access Protocol deze IP pakketen versturen via het „internet”
!
Gelaagde modellen
!
Het lagen model bij netwerken zorgt ervoor dat er een bepaald niveau van abstractie is. Zo moeten lagen enkel kunnen communiceren met de laag boven en onder hun, hierdoor kunnen aanpassingen in 1 laag vrij gemakkelijk gebeuren. Elke laag legt uit hoe een apparaat dat die laag implementeert moet werken, zo kunnen verschillende fabrikanten producten maken die hetzelfde doen.
!
Er zijn 2 soorten modellen:
- Protocol model: bv TCP/IP - Referentie modellen: bv OSI model
!
Het TCP/IP model
!
Het TCP/IP model is een open standaard die iedereen kan inkijken via RFC fiches (Request for Comments). In deze fiches staat beschreven hoe de protocols juist werken, aan de hand van deze fiches kunnen producenten apparaten maken.
! Het TCP/IP model bestaat uit 4 „lagen”: ! !
1. Application layer 2. Transport layer 3. Internet layer 4. Network access layer
Application layer: toont de data aan de gebruiker en zorgt voor de codering en decodering van de data. Transport layer: zorgt dat verschillende apparaten op verschillende netwerken met elkaar kunnen communiceren (bv Windows met Mac) Network layer: bepaald het beste/snelste pad dat een pakket kan afleggen Network access layer: controleert de hardware die zorgt voor de transmissie.
!
Protocol Data Units (PDU)
!
PDU’s zijn de vormen die een stukje data aanneemt in een bepaalde laag. Bv: segment in laag 4, packet op laag 3 en een frame op laag 2.
!
Bij het versturen van data wordt de ene PDU gestoken/ingepakt in een andere PDA, dit noemt men encapsulatie. De ontvanger zal de aangekomen PDU dan uitpakken tot we terug bij de data zitten, dit noemt met decapsulatie.
!
Het OSI model
!
Het OSI model is nooit echt gebruikt maar dient meer als een referentie, producenten verwijzen altijd naar dit model. Het OSI model definieert 7 lagen en welke functies in deze lagen zitten, het definieert ook hoe informatie doorheen het netwerk stroomt.
! De 7 lagen: !
!
7. Applicatie 6. Presentatie 5. Sessie 4. Transport 3. Netwerk 2. Data link 1. Fysieke
Laag 7: De applicatie laag
!
Deze laag ligt het dichtste bij de gebruiker, het biedt netwerkservices aan, aan gebruikersapplicaties. Deze laag communiceert rechtstreeks met de applicatie en geeft commando’s door aan de presentatie laag. Deze laag biedt zelf geen diensten aan in het OSI model. Voorbeelden: ftp, dns, telnet en http
Laag 6: De presentatie laag
!
De presentatie laag zorgt ervoor dat de informatie die in de applicatie laag verzonden wordt gelezen kan worden door een ander systeem. Indien nodig vertaalt het tussen meerdere dataformaten tot een gemeenschappelijk formaat. Voorbeelden: encryptie, decryptie en compressie. Voorbeelden van standaarden: jpeg, png, midi, mpeg, …
! Laag 5: De sessie laag !
De sessielaag stabiliseert, onderhoudt en beëindigt een sessie tussen 2 communicerende hosts. Deze laag synchroniseert het dialoog tussen beide presentatie lagen. De sessie laag maakt gebruik van de transport laag. Voorbeelden: nfs, asp, x-window
! Laag 4: De transport laag !
De transport laag zorgt voor het segmenteren van de data in kleinere stukken alsook het herassembleren van binnenkomende segmenten. De transport laag zet een virtuele verbinding op tussen beide hosts. Deze laag zorgt er ook voor dat pakketen in de juiste volgorde aankomen en eventuele fouten opgespoord worden. Voorbeelden: tcp (betrouwbaar), udp (onbetrouwbaar), spx, …
! Laag 3: De netwerk laag !
De netwerk laag is verantwoordelijk voor de routering van de pakketen volgens het beste pad. Het stopt de tcp of udp pakketen van de transport laag in een IP pakket en verstuurt dit op het net. Een IP adres toekennen noemt men logisch adresseren.
! Laag 2: De datalink laag !
De datalink laag zorgt voor een betrouwbaar transport van data over een fysieke lijn. Het geeft pakketen een fysiek adres (MAC adres), signaleert fouten en zorgt voor een juiste flow. Pakketen met een fysiek adres worden frames genoemd. Voorbeelden: ethernet, token ring, ppp, isdn, frame relay, …
!
Laag 1: De fysieke laag
! !
De fysieke laag beschrijft de vertaling van binaire informatie naar een (elektrisch) signaal en omgekeerd. Ook beschrijft het de mechanische karakteristieken van kabels, connectoren (denk aan de maximale lengte van een kabel) en de signaal karakteristieken zoals het elektrisch signaal over koper, het optisch signaal bij glasvezel en de radiogolven bij WiFi
!
3 Application Layer
!
De applicatielaag is de 7de laag in het OSI model en de 4de laag in het TCP/IP model. In het TCP/IP model bevat de laag eigenlijk de info van de application, presentation en session layer uit het OSI model.
!
De applicatielaag maakt vooral het uitwisselen van data mogelijk, denk hierbij aan: DNS (Domain Naming System) om van een naam naar een ip adres te gaan, HTTP (Hyper Text Transfer Protocol) om webpagina’s te tonen, SMTP (Simple Mail Transfer Protocol) om mails te versturen en FTP (File Transfer Protocol) om bestanden uit te wisselen.
! Elk van deze protocols liggen vast in een RFC (ready for comment). !
De 6de laag is de presentatie laag, deze heeft 3 primaire functies: coderen en converteren van data, (de)compresseren van data en encrypteren van de data. Denk hierbij aan bestandsformaten zoals mp3, jpeg, gif, …
!
De sessielayer zorgt voor een stabiele verbinding tussen source en destination. Meestal voorzien applicaties zelf de functionaliteiten van de presentation en sessie laag.
! !
Software in de applicatielaag Dit is de software die ons toestaat om via het netwerk te werken, 2 soorten applicaties: Network aware applications zoals browsers, mail clients, torrent programma’s, … (typisch met een grafische user interface) en Application layer service diensten die worden aangeboden via het netwerk zoals netwerkprinters, netwerkschijven, … (diensten zonder grafische user interface).
!
De applicatielaag zorgt ervoor dat zender en ontvanger dezefde berichten versturen en deze lezen.
! Het client server model !
De client is de computer die informatie vraag aan een andere computer, de server is de computer die hierop antwoord.
! Servers !
Een server is een apparaat dat antwoordt op de request van een client maar deze kan ook extra functies bevatten zoals authenticatie of encryptie. Meestal draait er op een server een luisterend achtergrondprocess (deamon genoemd), een server kan meerdere diensten (deamons) aanbieden zoals http, ftp, smtp, … Een server kan meerdere client tegelijkertijd voorzien van antwoorden. Een server is een single point of failure (SPoF), als er iets misgaat kan niemand de server nog bereiken.
! Het peer to peer model !
In het peer to peer model werkt men niet echt met servers, elke computer is zowel server als client. Iedereen kan communicatie initiëren naar elke andere computer, zo is het netwerk gedecentraliseerd en is het geen SPoF meer.
!
Typisch zijn ook hybride netwerken waarbij servers instaan voor het zoeken naar een client om mee te communiceren en ze dan de rest overlaten aan de computers.
Poortnummers
!
De transportlayer zal een poortnummer gebruiken om een service aan te bieden (deamons zijn dus te bereiken via hun poortnummer). Enkele bekende poortnummers: DNS - 53, HTTP - 80, SMTP - 25, POP - 110, DHCP - 67, FTP - 20 en 21.
! DNS Domain Naming Service !
Een ip adres is niet gemakkelijk te onthouden, daarom dat we websites een naam geven. Een DNS server zet deze namen om in ip adressen waarmee de browser dan de juiste bestanden van de juiste servers kunnen gaan halen.
!
DNS is een gedecentraliseerd systeem, overal in de wereld staan DNS servers voor toplevel namen (.be .com .nl), deze servers weten alle informatie (hetzij rechtstreeks hetzij via een andere server) van de onder hun liggende namen om te zetten in ip adressen (kuleuven.be facebook.com google.nl).
!
DNS werkt volgens het client server model, maar een client kan zelf gezien worden als service aan de browser. Wanneer een browser een DNS request doet geeft hij dit door aan de interne DNS module. De interne module zal dan kijken of hij de query in zijn cache heeft zitten en direct antwoorden of hij zal de vraag doorsturen naar een gekende DNS server.
!
Een DNS server die een request krijgt zal eerst kijken of hij de query zelf kan oplossen, indien ja zal hij het antwoord terug sturen, indien niet zal hij de client verdersturen door een link te sturen naar een andere DNS server die het mogelijk wel weet.
!
Helemaal bovenaan in de boom structuur van DNS servers staan root servers, deze servers hebben de IP adressen van alle top-level servers (.be .com …). Deze top level servers bevatten links naar de second-level servers die meestal de juiste antwoorden weten, ze bevatten records met ip adres en naam. Een second-level DNS server kan ook het ip adres bevatten naar een third-level DNS server (punten.khleuven.be) enzovoort.
!
In de link kobe.isawesome.kdg.be zouden we dus 4 servers moeten overlopen.
Eerst wordt de root server gecontacteerd om de .be server te vinden, deze .be server zal info hebben over .kdg.be enzovoort.
! !
HTTP: HyperText Transfer Protocol HTTP heeft 4 belangrijke berichten, GET om een webpagina op te vragen, POST om dingen in te voeren op de server, HEAD om enkel de header op te vragen en PUT om bestanden op de server te zetten. HTTP zelf is niet beveiligd (geencryteerd), HTTPS wel.
! E-mail: SMTP en POP !
POP Post Office Protocol wordt gebruikt om e-mails van de server binnen te halen. SMTP Simple Mail Transfer Protocol wordt gebruikt om mails te verzende. MUA’s : Mail Server Agent zijn de programma’s zoals Outlook, Gmail, Thunderbird, …
!
Op een mailserver draaien 2 services, de Mail Transfer Agent (MTA) om mails te forwarden naar de juist server en de Mail Delivery Agent (MDA) voor het afleveren van de mail naar de clients. Soms bevat een mailserver extra functies zoals anti virus, …
FTP: File Transfer Protocol
!
FTP zorgt voor de bestandsoverdracht over het netwerk, de deamon op poort 21 initieert de verbinding en zal hierop commando’s doorsturen, de daadwerkelijke data van het bestand wordt over een verbinding naar poort 20 gestuurd.
! DHCP !
DHCP zorgt voor het dynamisch toekennen van ip adressen aan computers. Het stelt ook andere dingen in zoals default gateaway, dns server, subnetmasker, …
!
DHCP leent cleints een ip adres voor een bepaalde tijd, het kan draaien op zeer verschillende machines (routers, isp routers, dhcp servers, …).
! 4 Transport Layer !
Het doel van de transportlayer is het segmenteren en herassembleren van data. Ook voegt het een header toe zodat men weet tot welke communicatie het segment behoort.
!
Ook beheert de transportlayer de verbindingen tussen clients en servers. Het identificeert verschillende applicaties door ze elk een uniek poortnummer toe te kennen.
!
De transportlaag is de link tussen de applicaties en de daadwerkelijke versturing op het netwerk.
! Doel van de transportlaag !
Enkele vereisten van de transportlaag: Segementen moeten in de juiste volgorde aankomen, er mogen geen segmenten missen, sommige segmenten mogen met een vertraging komen en andere moeten sneller gaan.
! Rollen van de transporlaag !
De meeste netwerken hebben een maximale groote van een paket daarom moeten grote bestanden (datastukken) soms worden opgedeeld in kleinere segmenten. Als een andere computer zo een segment aankrijgt is het zijn taak om alle segmenten terug aan elkaar te plakken. Doordat een bestand in verschillende segmenten wordt gekapt kunnen verschillende bestanden tegelijk worden verstuurd, zo kunnen sommige pakketen met een hogere prioriteit eerder worden verstuurd.
!
De transportlaag zal een sessie openzetten tussen de client en de server en zorgt ervoor dat alle pakketen op de juiste moment aankomen in de juiste volgorde. Ook zorgt deze laag ervoor dat het netwerk niet overbelast wordt met pakketjes.
!
De transportlaag houdt een lijst bij van reeds verzonden pakketen en bevestigd als er data aangekomen is zo kunnen beide computers weten wat ze al dan niet opnieuw moeten versturen.
! TCP en UDP ! Er bestaan 2 belangrijke protocollen in de transportlaag: TCP en UPD. !
UDP is de minst betrouwbare van de 2, er wordt geen verbinding opgezet tussen beide hosts en pakketen worden op goed geluk naar de destination gestuurd. Wel zijn er maar 8 bytes overhead.
!
Bij TCP is er wel een „verbinding” tussen beide hosts, het voorziet de juiste volgorde van berichten en kan pakketen opnieuw versturen indien er iets mis is gegaan. Maar er is meer overhead (20 bytes).
!
Zowel UDP als TCP moeten weten aan welke applicatie ze de data moeten doorsturen, beide werken met poortnummers. Ze sturen zowel de poortnummer van zender als die van de ontvanger mee met het packet.
!
De combinatie van een ip adres met een poortnummer zorgt voor een unieke wijze om de verbinding te identificeren. (vb: 192.0.0.1:80)
! Betrouwbaarheid bij TCP !
Indien men via TCP werkt zal voor elk binnengekomen segment een berichten worden teruggestuurd om te melden dat dat segmenten goed is aangekomen, indien de zender niet binnen de zoveel tijd een bericht krijgt zal het het bericht opnieuw sturen. (Dit bericht noemt men een acknowledgement).
! UDP, niet te vertrouwen.. #sneakybitch !
UDP voorziet geen mogelijkheid om bestanden opnieuw te verzenden, het bevat enkel de socket van de zender en ontvanger, applicaties die deze manier gebruiken moeten zelf zien dat alle bestanden juist aankomen.
! Protocollen op UDP gebaseerd: DNS, DHCP, RIP, SNMP, … !
Ook bij UDP worden bestanden opgedeeld in verschillende segmenten, maar de juiste volgorde kan niet worden gegarandeerd! (Oplossen in een laag hoger).
! ! 5 Network Layer !
De netwerklaag voorziet transport van end-to-end over een netwerk. Het heeft verschillende functies: adressering, encapsulatie, decauplatie en routering.
!
Adressering: zorgen dat pakketten een ip adres meekrijgen Encapsulatie: informatie toevoegen voor laag 3 (onder andere source en destination ip). Decapsulatie: de header van het paket halen en de data doorgeven aan de volgende laag. Routing: source en destination zitten niet altijd op hetzelfde netwerk, soms is routing nodig tussen beide. Routing is het selecteren van een pas van source naar destination, vooral bepalen wat de „next-hop” is.
! IPv4 !
IPv4 is een netwerklaag protocol, het is het enigste protocol in deze laag dat berichten over het internet kan versturen. IPv6 is de opvolger hiervan. IP pakketen vervoeren pakketen van de transportlaag (L4). IP heeft een zeer lage overhead, het bevat enkel informatie van source en destination. Het voert geen controle uit of pakketen aankomen of niet.
!
Het is verbindingsloos, het zal geen verbinding opstellen tussen source en destination maar het pakketje gewoon op het net zetten, hierna zal dit „zelf” zijn weg vinden naar destination. hogere lagen zullen ervoor zorgen dat alle pakketten aankomen. Het los laten van dit pakketje wordt Best effort service genoemt. IP kan werken op zeer verschillende L2 en L1 protocollen.
!
De Package Data Unit (PDU) van de transportlaag wordt ingepakt in een ip packet en er wordt een ip header toegevoegd. Deze encapsulatie trekt zich niets aan van wat er in het ip packet zit. Routers werken op de netwerklaag en ontleden dus alles van L1 tot L3.
! !
Netwerken in hosts verdelen Netwerken worden in hosts onderverdeeld voor performantie, veiligheid en gemakkelijk adres management.
!
Performantie: een broadcast zou naar heel de wereld moeten worden gestuurd, beter enkel naar het eigen netwerk.
!
Security: Men kan bepaalde groepen van het internet (netweken van hosts) beveiligen met een paswoord of andere dingen.
!
Adresmanagment: elke computer moet een uniek ip-adres hebben elke computer kan niet al de computers in de hele wereld herkennen, 1 ip adres naar buiten en binnen het netwerk andere ip-adressen.
!
Een ip adres bestaat uit 32 bits en wordt onderverdeelt in 2 delen, het netwerkgedeelte en het hostgedeeldte. Voor hosts binnen hetzelfde netwerk is het netwerkgedeelte gelijk en het host gedeelte binnen het netwerk uniek.
!
Het onderverdelen van een ip adres doen we aan de hand van een subnetmasker, dit is een rij 1-en en 0-en van 32 lang. Het subnetmask waar 1-en staan toont hoe groot het netwerk deel is, waar 0-en staan laat het hostgedeelte zien.
! Routing, afhandeling van datapakketten !
Binnen een subnetwerk kunnen host rechtstreeks (dus zonder router) met elkaar communiceren. Indien ze iets naar een ander subnetwerk willen sturen komt er een router aan te pas. De computers in een netwerk bevatten altijd het ip-adres van de defaultgateaway (gateaway == router). Dit is de eerste router die op het netwerk aangesloten is en die is verbonden met andere netwerken.
!
Indien een zender een pakket wilt verzenden kijkt hij of het ip adres binnen het netwerk ligt, zo ja verstuurt hij het rechtstreeks. Ligt het niet binnen het netwerk dan zal hij het pakket versturen naar de default-gateaway, deze zal kijken wat de volgende hop is dat dit pakket moet afleggen. Routers halen pakketten helemaal open tot op laag 3 om te kijken wat het bestemings ip adres is, aan de hand hiervan kan de router kijken of hij het pakket rechtstreeks kan afleveren of dat hij het moet doorsturen naar een andere router.
!
Een router bevat een route tabel met records waarin info staat zoals: naar welk netwerk is dit een route, wat is de next-hop en metriek info (snelheid, kost, lengte, …). Hosts hebben ook een route tabel die gelijkaardig is.
!
De next hop is het apparaat (met ip adres) waar het pakket als volgende naartoe moet (een router of een eindbesteming). Wanneer een pakket aankomt in een router zal de router zijn
route lijst afgaan, van zodra er een match gevonden is zal hij het pakketje hierop doorsturen.
!
Packet forwarding is een packet verdersturen, er zijn zoals gezegd 3 mogelijkheden: forwarden naar de next-hop router, forwarden naar de destination of het bericht vernietigen (indien het al te lang op het net zit).
!
Hoe weet een router hoelang een pakket al op het net zit? Een pakket krijgt in het begin (bij creatie) een Time To Live (TTL) mee, elke keer dat het pakket bij een router passeert zal de router deze TTL verminderen met 1 indien de TTL bij een router 0 wordt zal dit pakket vernietigd worden.
! Hoe routers routes leren !
Elke router moet een next hop hebben voor elke pakket, anders wordt het vernietigd. Het is niet mogelijk om elke router manueel in te stellen, dit zou veel, heel veel werk zijn! Daarom zijn er ook routing protocols.
!
Wanneer een router nieuwe informatie ontvangt van een andere router zal hij hierop alle andere routers waarmee hij verbonden is ook informeren over deze informatie, op die manier blijven alle routers up to date. Enkele bekende protocols zijn RIP (Routing Information Protocol), EIGRP en OSPF.
!
Het nadeel van het dynamisch up to date houden is dat routers cpu en geheugen nodig hebben en dat er extra netwerkbelasting komt.
!
6 IPv4 7 Datalink Layer 8 Physical Layer