Netwerken
1 Netwerken
Het internet gebruiken we dagelijks. Dit doen we veelal zonder stil te staan bij hoe het internet werkt. Sterker nog de meeste mensen kunnen prima gebruik maken van het internet zonder dat ze weten hoe het werkt. Het internet zou ook een stuk minder succesvol zijn als dat wel zou moeten. Echter, als HBO-ICT'er willen we begrijpen hoe het internet werkt. Door te begrijpen wat er gebeurt als iemand navigeert naar een website, een whatsappje stuurt of online een game speelt krijg je ook inzage in hoe je zelf een dergelijke applicatie maakt of hoe je een applicatie veiliger maakt.
Daarnaast is het internet een prachtig voorbeeld van hoe we door het scheiden van verantwoordelijkheden een gigantisch groot probleem -de communicatie van biljoenen computers- kunnen oplossen. Let op: met computers bedoelen we bij HBO-ICT niet enkel desktop computers en laptops, maar natuurlijk alles wat een computer bevat zoals mobieltjes, robots, magnetrons, koelkasten, auto's, horloges, ziekenhuisapparatuur, etc.
1.1 Verschillende type netwerken
Het internet is een gigantisch groot netwerk van computers. Om te begrijpen het internet haar taak doet is het verstandig om eerst te kijken naar een kleiner netwerk, zoals het netwerk dat we in ons huis hebben. Een thuisnetwerk noemen we een Local Area Network (LAN). Veel uitdagingen die het internet heeft, heeft een LAN ook. Zoals: hoe weet een computer waar hij een bericht heen moet sturen om te zorgen dat het bij de juiste computer terecht komt?
Voordat we die vraag kunnen beantwoorden kijken we eerste naar hoe we het beste de computers in onze LAN op elkaar kunnen aansluiten om een netwerk te vormen. Dit doen we veelal met netwerkkabels (meestal UTP-kabels genoemd) of via Wi-Fi. Er zijn verschillende manieren van het aansluiten van computers aan elkaar om een netwerk te vormen. Zo kunnen we bijvoorbeeld alle computers met elkaar vinden met 1 lange kabel met aftakkingen of juist elke computer met elke andere computer verbinden. Bij het kiezen van hoe we de computers aansluiten zijn er twee factoren die een rol spelen:
- Snelheid Over een kabel kan altijd een beperkte hoeveelheid data tegelijkertijd verstuurd worden. En we willen graag dat we zoveel mogelijk data tegelijkertijd verstuurd kan worden. Twee computers kunnen niet tegelijkertijd over dezelfde kabel communiceren. Het bericht van de ene computer wordt dan verstoord door het bericht van de andere computer. Als twee computers elkaars berichten verstoren dan noemen we dat een botsing (of in het engels collision). Computers kunnen wel om de beurt gebruik maken van dezelfde kabel.
- Kabels Het liefst hebben we zo min mogelijk kabels. Netwerkkabels zijn duur. Daarbij willen we niet elke keer als we een nieuwe computer aansluiten 20 nieuwe kabels moeten aanleggen.
Grofweg hebben we de volgende vier opties voor het verbinden van onze computers: bus, star, ring en mesh. Het onderstaande filmpje legt de verschillende opties uit en benoemd de voor- en nadelen.
De meeste LAN's zijn aangesloten als een star-netwerk met in het midden een hub. Het enige wat een hub doet is alle kabels die er op zijn aangesloten met elkaar verbinden. Als een computer een bericht stuurt naar een hub dan stuurt de hub het vervolgens over alle andere aangesloten kabels. Hub is een engels woord dat naaf betekent. Denk hierbij aan de naaf van een fietswiel waar alle spaken in het midden van het fietswiel mee verbonden zijn.
Het onderstaande filmpje vertelt over de hardware die nodig is om een netwerk te maken. Sommige begrippen worden onder het filmpje ook in de tekst uitgelegd.
1.2 Nullen (0) en enen (1)
Om goed te begrijpen hoe het internet, of in het algemeen computers werken, is het belangrijk om te realiseren dat deze technology alleen werkt omdat we heel veel afspraken hebben gemaakt over hoe ze moeten werken. Deze afspraken noemen we protocollen.
Dit is nodig omdat over een internetkabel enkel stroom kan worden gestuurd. Op de kabel staat wel stroom of er staan geen stroom op. We kunnen lang naar de kabel kijken (of de stroomschokken voelen), maar we kunnen niet zien (of voelen) of de stroom die er wel of niet op staat de letter 'G' betekent of het getal 42. Die betekenis komt er pas door de afspraken die we hebben gemaakt.
Dit is niet enkel bij computers. Bij het gebruik van een (elektrische) telegraaf kan men niet, zonder afspraken, horen aan het geluid welke letter het is. Een elektrische telegraaf maakt daarom meestal gebruik van het protocol morsecode. Interessant genoeg kan men ook een ander protocol gebruiken zonder de telegraaf aan te passen. Het enige wat men moet doen is zorgen dat de persoon die het bericht ontvangt weet wat het protocol is. Dit geldt ook voor computers.
Het geluid van morsecode op een elektrische telegraaf:
Bij morse code kijken we naar lang geluid en kort geluid. Bij computers kijken we
of er wel stroom of geen stroom is. In de informatica spreken we meestal
over 1 (wel stroom) en 0 (geen stroom). Een plek waar een 1 of een 0 kan staan
noemen we een bit. Voor onze 1'en en 0'en geldt natuurlijk hetzelfde
als voor morsecode. We kunnen uren kijken naar een reeks 1'en en 0'en zoals: 01100001
,
maar de betekenis is er pas met de afspraken die we hebben gemaakt. Sterker nog
de reeks 01100001
kan voor een computer zowel de letter 'a' (ASCII)
betekenen als het getal 97 (binair).
Afhankelijk van wat het protocol is, wanneer de reeks binnenkomt of waar het is opgeslagen.
Bij de werking van netwerken zien we veel protocollen. Die definiëren bijvoorbeeld in welke volgorde informatie wordt verstuurd, zodat we weten dat de 28ste bit bijvoorbeeld onderdeel is van een letter en de 421ste bit onderdeel is van het adres van een computer. Maar er zijn ook protocollen die definiëren hoe berichten terecht komen bij de juiste computer. Bijna elke sectie in dit hoofdstuk gaat over een protocol dat nodig is om het internet werkend te krijgen.
1.3 MAC-adressen, hubs en switches
Als een computer een bericht stuurt op een sternetwerk met een hub, dan wordt het bericht (ook wel Ethernet frame of frame genoemd) naar alle computers op het netwerk gestuurd. Ook naar computers voor wie het bericht niet bedoeld is. Computers kunnen dan berichten gaan verwerken die niet voor hen bedoelt zijn. Dit kunnen we oplossen met MAC-adressen.
Elke computer die moet worden aangesloten op een netwerk heeft een netwerkkaart nodig. Deze netwerkkaart heeft een uniek MAC-adres (Media Access Control-adres). Een MAC-adres bestaat uit een reeks letters en getallen. Elke fabrikant van netwerkkaarten begint zijn/haar MAC-adres met een eigen code en houdt vervolgens bij welke MAC-adressen ze al hebben toegekend aan computers. In theorie kan een enkele computer dus meerdere MAC-adressen hebben.
Ondanks dat MAC-adres het woord 'adres' bevat is het beter om MAC-adressen niet te zien als een adres (zoals van je huis), maar eerder als een identificatienummer zoals je Burger Service Nummer die je krijgt van de overheid. Aan een MAC-adres kan men namelijk niet zien waar de computer zich bevind in het netwerk. Dit in tegenstelling tot het IP-adres, dat we behandelen in een latere sectie van dit hoofdstuk. Een IP-adres kan je wel meer zien als het adres van je huis.
Door aan een bericht het MAC-adres van de bestemde computer toe te voegen weten computers met een ander MAC-adres dat als ze het bericht ontvangen ze het kunnen negeren. Een bericht, vanaf nu frame genoemd, heeft daarom de volgende opbouw:
Waarbij de frame bestaat uit:
- Pre-amble Een reeks 1'en en 0'en om te zorgen dat de verzender en de ontvanger gesynchroniseerd zijn en alle bits goed worden ontvangen
- SFD De Start Frame Delimiter geeft aan dat de pre-amble is afgelopen en hierna echte informatie volgt
- Destination MAC-address Het MAC-adres van de computer voor wie de frame bedoeld is
- Source MAC-address Het MAC-adres van de computer dat het frame verstuurt. Dit geeft de ontvangende computer ook de mogelijkheid om een bericht terug te sturen
- EtherType Het Ethertype veld wordt voor verschillende zaken gebruikt, zoals het aangeven hoe groot de payload is. We gaan hier deze cursus niet op in
- Payload Het daadwerkelijke bericht. Er is een maximale grootte voor de payload. Een bericht, bijvoorbeeld het kopiëren van een bestand, wordt dus meestal verstuurd via meerdere frames, waarbij de ontvangende computer de payloads van de verschillende frames weer achter elkaar plakt
- FCS De Frame Check Sequence bevat een waarde die gebruikt kan worden om te controleren of een bericht wel goed is ontvangen
De MAC-adressen kunnen ons helpen met het sneller maken van ons netwerk. Zoals eerder gezegd, stuurt een hub elk bericht dat hij ontvangt door naar alle andere kabels die op de hub zijn aangesloten. Over al die kabels kan vervolgens geen andere communicatie plaatsvinden. Dit kan natuurlijk slimmer. Daarom sluiten we meestal geen hub aan in het midden van een sternetwerk, maar een switch.
Een switch weet van elke aangesloten kabel welke MAC-adres er bij hoort. Bij het ontvangen van een frame stuurt de switch het niet naar alle aangesloten kabels, maar kijkt naar de 'Destination MAC-address' en stuurt het alleen over de kabel die bij dat MAC-adres hoort. Dit betekent dat een switch zelf ook een computer is. Deze heeft maar één taak: het moet de frames kunnen ontvangen en beslissen over welke kabel deze moeten worden verstuurd. We noemen een dergelijke computer een embedded systeem. Krijgt een switch een frame met een voor de switch onbekend MAC-adres, dan stuurt de switch de frame wel over alle kabels.
Het volgende filmpje legt uitgebreider uit het verzenden van een frame gaat met behulp van MAC-adressen, hubs en switches.:
Wil je opzoeken welke MAC-adres(sen) je computer heeft? Op de website vpngids MAC-adres opzoeken vind je hoe je dit kan doen. De uitleg hoe dit moet op MacOS volgt na die van Windows.
2 TCP/IP-protocol
Om communicatie over netwerken, en dus het internet, te laten werken hebben we naast de hardware (zoals kabels, hub en switches) ook protocollen nodig. protocollen zijn afspraken waar iedere computer zich aan moet houden wil het mee kunnen doen aan de communicatie op een netwerk. Als een verzendende computer zich hier bijvoorbeeld niet aan houdt, dan weet de ontvangende computer niet wat de 1'jes en 0'jes die het ontvangt betekenen. We zijn in dit hoofdstuk al twee protocollen tegen gekomen. De opdeling van de inhoud van een frame is een protocol. Maar ook de werking van een switch is een protocol. Immers, als een switch zijn taak anders uitvoert zal het netwerk niet kunnen communiceren.
Er zijn heel veel andere protocollen die verschillende zaken regelen rond de communicatie tussen computers. In de volgende sectie behandelen we de belangrijkste protocollen die samen het TCP/IP-protocol vormen. Ondanks dat er 'protocol' staat en niet 'protocollen' is het TCP/IP-protocol eigenlijk een groep van protocollen die het internet gebruikt om te functioneren.
2.1 IP-adressen
Zoals we in een eerdere sectie hebben gelezen maakt een MAC-adres het mogelijk om met switches gerichter berichten te sturen over een netwerk. Als de computer met de 'Destination MAC-address' met een kabel aan de switch vast zit stuurt de switch de frame enkel over die kabel in plaats van over alle aangesloten kabels. Dit scheelt veel verkeer op de kabels. Echter bij een groot netwerk zoals het internet, zijn er heel veel MAC-adressen die een switch niet kent. In het geval van het internet zullen dat biljoenen onbekende MAC-adressen per switch zijn waarvan de frames steeds over alle aangesloten kabels worden verstuurd.
Het probleem met MAC-adressen is dat we er niet aan kunnen zien waar in het netwerk de computer zich bevindt. De switch kan alleen maar de juiste kabel kiezen, doordat het zelf een tabel bijhoudt waarin staat welke kabel hoort bij welk MAC-adres. Herinner je dat ondanks het woord 'adres' in de naam, een MAC-adres een identificatienummer is zoals je Burger Service Nummer.
Als oplossing zijn IP-adressen bedacht. Deze geven wel informatie over waar een computer zich bevindt in het netwerk. Hierbij hoeft een computer bij het doorsturen niet te weten waar exact in het netwerk de computer met het IP-adres zich bevindt, als de data maar over een kabel gestuurd wordt die in de richting gaat van de juiste computer. Denk hierbij aan adressen zoals wij die ook gebruiken. Om naar 'Ruiterberglaan 26 Arnhem' te gaan is het vanuit Nijmegen voldoende om te weten dat we een weg naar het noorden moeten nemen. We hebben dan genoeg aan de informatie uit het deel met de plaatsnaam en hoeven niet exact te weten waar de Ruitenberglaan 26 is.
Een IP-adres bestaat uit 32 bits (32 1'en en 0'en), maar om het leesbaarder te houden voor mensen vertalen we meestal elke 8 bit naar een getal en scheiden deze 4 getallen met een punt. Een voorbeeld van een IP-adres is: 142.250.179.196. Met 32 bits kunnen 4.294.967.296 (==2^32) verschillende IP-adressen gemaakt worden. Omdat er inmiddels steeds meer computers op het internet aangesloten zijn beginnen de IP-adressen op te raken. Als oplossing is het internet nu aan het overstappen naar IP-adressen die bestaan uit 128 bits. De huidige IP-adressen die bestaan uit 32 bits noemen we IPv4. Die nieuwe IP-adressen van 128 bits noemen we IPv6. IPv6 schrijven we meestal in de hexadecimale notatie (zie voor meer informatie: hexadecimale notatie) per 32 bit gescheiden met dubbele punt. Een voorbeeld van een IPv6-adres is: 2607:f8b0:4000:806:200e.
2.2 Routers
Als je een internetabonnement hebt krijg je van je provider één IP-adres. Al je
computers op je thuisnetwerk hebben dus op het internet hetzelfde IP-adres. Dit
kan je uitproberen door op verschillende computers naar https://www.watismijnipadres.nl te gaan.
Echter op je thuisnetwerk (LAN) hebben de computers wel een eigen IP-adres. Dit kan je zien door
een terminal op te starten (voor Windows / voor MacOS
en daar ipconfig
(Windows) of ifconfig
(MacOS) in te vullen. Je ziet dan je verschillende
netwerkkaarten en de bijbehorende IP-adressen.
De verbinding van je thuisnetwerk met het internet wordt geregeld door de router. Dit apparaat kan verschillende netwerken met elkaar verbinden en zorgt voor de omzetting van de IP-adressen van de verschillende netwerken. Zo kunnen alle computers van een thuisnetwerk toch verbinden met het internet, ondanks dat er maar één internet IP-adres is voor het thuisnetwerk. Verschillende netwerken maken dus door middel van routers een groot netwerk. Een kleiner deel van een netwerk, zoals je thuisnetwerk een kleiner deel is van het internet, noemen we een subnet.
De router kan ook op basis van een IP-adres een frame de juiste richting op sturen, zonder dat hij het MAC-adres of de exacte locatie van het IP-adres van de eindbestemming kent. Hier dankt de router ook zijn naam aan. De router routeert de frames de goede richting op. Echter tegenwoordig kunnen slimme switches dit ook. Switches kunnen echter niet de verbinding zijn tussen twee verschillende netwerken zoals de router dat doet.
In een eerdere sectie werd al gezegd dat switches ook computers zijn. Routers zijn ook computers. Routers (en slimme switches) hebben om hun functie goed te uitvoeren ook zelf een MAC-adres en een IP-adres.
2.3 Transmission Control Protocol (TCP)-packet
Om frames de juiste richting op te sturen hebben we nog steeds MAC-adressen nodig. De IP-adressen zorgen dat globaal de juiste richting kan worden bepaald, maar MAC-adressen bepalen lokaal over welke kabel de frame moet worden verstuurd.
De frames die we versturen hebben dus nog steeds de 'Destination MAC-address' en de de 'Source MAC-address' nodig (zie 1.3 MAC-adressen, hubs en switches). We moeten dus op een andere plek in de frame de IP-adressen kwijt. Hiervoor gebruiken we het Transmission Control Protocol (TCP). Deze definieert een packet waarin de IP-adressen staan, maar ook andere informatie zodat we de packets makkelijker kunnen versturen en kunnen controleren of ze goed zijn aangekomen. De inhoud van packet staat beschreven in de onderstaande tabel.
Bit offset | 0–3 | 4–7 | 8–15 | 16–31 |
---|---|---|---|---|
0 | Source address | |||
32 | Destination address | |||
64 | Zeros | Protocol | TCP length | |
96 | Source port | Destination port | ||
128 | Sequence number | |||
160 | Acknowledgement number | |||
192 | Data offset | Reserved | Flags | Window |
224 | Checksum | Urgent pointer | ||
256 | Options (optional) | |||
256/288+ | payload |
We zien dat een TCP-packet geen veld biedt voor MAC-adressen. Dat komt omdat we nog steeds frames blijven gebruiken. In plaats van het bericht dat we willen versturen direct in de payload van de frame te plaatsen, plaatsen we ons bericht nu in de payload van het TCP-packet en plaatsen we het TCP-packet in de payload van de frame.
2.4 Routing van packets
Hoe het TCP/IP-protocol samen met routers en switches werkt wordt uitgeleged in het onderstaande filmpje:
2.5 Domain Name System (DNS)
Iets wat tot nu toe nog niet hebben bekeken is hoe het kan dat het internet werkt met IP-adressen, maar wij als gebruikers die niet hoeven in te vullen om te verbinden met een website. Dit komt omdat er gelukkig ook een protocol is dat voor ons leesbare website-adressen, zoals www.tostiszijnnetmensen.nl vertaalt naar IP-adressen. Hoe dit precies werkt wordt uitgelegd in de onderstaande twee filmpjes:
(optioneel) Een nog diepere uitleg over DNS kan je vinden op hello-dns.
2.6 Dynamic Host Configuration Protocol (DHCP)
Het TCP/IP-protocol bestaat uit meerdere protocollen. Een ander belangrijk protocol is Dynamic Host Configuration Protocol (DHCP). Dit protocol wijst automatisch IP-adressen toe aan de verschillende computers op het netwerk. Een netwerk kan ook werken zonder DHCP door elke computer een vast IP-adres te geven, maar dat heeft nadelen. Het grootste nadeel is dat je een probleem hebt als twee computers hetzelfde vaste IP-adres gebruiken. Dit kan bijvoorbeeld ontstaan doordat iemand zijn laptop van zijn huis meeneemt en aansluit op jouw thuisnetwerk.
Het DHCP-protocol bestaat uit een DHCP-server en 4 type berichten die naar of door de DHCP-server worden verstuurd: Discover, Offer, Request en Acknowledge. Het onderstaande filmpje legt uit hoe DHCP werkt. De meeste moderne routers bevatten ook een DHCP-server.
2.7 HTTP Protocol
De communicatie tussen een webserver, de server waar de website op staat, en de webclient, meestal een browser, is ook vastgelegd in een protocol. Dit protocol heet het Hypertext Transfer Protocol (HTTP) protocol. In het HTTP-protocol is vastgelegd welke vragen een webclient aan een webserver kan stellen, welke antwoorden een webserver kan geven op deze vragen en in welke vorm de vragen en antwoorden verstuurd moeten worden. Bij het HTTP-protocol noemen we de vragen HTTP-requests en de antwoorden HTTP-responses.
Er zijn negen verschillende HTTP-requests. De meest gebruikte HTTP-requests zijn GET en POST. GET-requests gebruikt de webclient om alleen informatie van een webserver te vragen. In zowel GET-requests als POST-requests stuurt de webclient een URL mee. Voor een GET-request is dit de locatie van het bestand / de pagina die de webclient wil opvragen. Voor meer informatie over URL zie: wikipedia. POST-requests worden door de webclient gebruikt om informatie door een webserver te laten verwerken op basis van meegestuurde data. Denk hierbij aan het verwerken van informatie ingevuld in een HTTP-formulier. Bij zowel een GET- als de POST-request kan men data mee sturen. Bij de GET-request wordt dit dan meegestuurd als onderdeel van de URL. Bij de POST-request wordt het meegestuurd in een ander veld, waardoor de data niet zichtbaar is in de URL.
Op de HTTP-requests kan de webserver reageren met een HTTP-response. In het geval van een GET-request zal dit hopelijk het gevraagde bestande / de gevraagde pagina zijn. In het geval van een POST-request geeft de webserver aan wat het resultaat is van de verwerking. Een HTTP-response heeft een statuscode, het antwoord (bijvoorbeeld de opgevraagde website) en wat velden met extra informatie (metadata). De meeste voorkomende statuscodes zijn:
- 200 OK – Het gevraagde document is succesvol opgevraagd.
- 304 Not Modified – T.o.v. de versie in de cache is de pagina niet gewijzigd.
- 400 Bad Request - De gebruiker heeft een fout gemaakt in het verzoek waardoor deze niet verwerkt kan worden.
- 403 Forbidden – Het opgevraagde document mag niet opgevraagd worden.
- 404 Not Found – Het opgevraagde document bestaat niet.
- 405 Method Not Allowed – De gebruikte requestmethode is niet toegestaan.
- 410 Gone – Het opgevraagde document heeft bestaan maar is niet meer beschikbaar. Vergelijkbaar met foutcode 404.
- 451 Unavailable For Legal Reasons - een website niet kan worden weergegeven vanwege juridische redenen
- 500 Internal Server Error – De webserver heeft de gevraagde actie niet kunnen uitvoeren.
- 503 Service Temporarily Unavailable – De webserver is tijdelijk in onderhoud.
De berichten van het HTTP-protocol worden als leesbare tekst verstuurd. Servers waar een HTTP-response of -request langs komt kunnen dus meelezen. Om het versturen van berichten veiliger te maken zijn er andere protcollen die hierop aanvullen zoals het HTTPS-protocol (zie voor meer informatie: wikipedia).
2.8 Error checking (optioneel)
Als je benieuwd bent hoe een computer kan controleren of een ontvangen bericht wel correct is raden we de volgende twee filmpjes aan: