Naar inhoud springen

Computersystemen/Netwerkstappen

Uit Wikibooks

Stel dat je een host opstart, om https://wikibooks.org te bezoeken. Om de fout te vinden is het interessant om te kijken welke netwerkstappen met grote kans aan bod komen. Hoe worden de netwerkprotocollen in de praktijk gebruikt? Welke weg doorlopen de pakketjes?

Doelstellingen

[bewerken]

Als je een computernetwerk beheert en het loopt ergens fout, dan moet je kunnen achterhalen waar dat precies is. Het kennen van de netwerkstappen is dus noodzakelijk bij:

  • Leerplandoel 30 uit Applicatie- en Databeheer[1], nl. De leerlingen beheren een netwerk en onderhouden het via een cloud beheersplatform.
  • Leerplandoel 19 uit Informatica- en communicatiewetenschappen[2], nl. De leerlingen beheren een computernetwerk.

Fysisch

[bewerken]

Als fysisch iets niet in orde is, dan kan het zeker al niet werken. Kijk of je netwerkapparatuur (router, switch,...) aangeschakeld is en of een apparaat geen foutmelding weergeeft. Bekijk de handleiding van het apparaat voor meer uitleg over de statuslichtjes.

Als je geen "link" krijgt tussen de NIC en de netwerkapparatuur, is de fout meestal te wijten aan een slechte kabel of soms de netwerkkaart. Probeer dan eens een aantal netwerkkabels te verwisselen. Als het probleem zich nu verplaatst heeft, dan weet je of het de kabel of de netwerkkaart was. Op het internet kan je nog veel uitgebreidere handleidingen vinden m.b.t. bekabeling.[3]

Als je kabel werkt, maar af en toe zakt je overdrachtssnelheid in elkaar, dan is misschien je kabel (bijna) defect. Een andere oorzaak van dit probleem kan elektromagnetische straling zijn van een niet ontstoord apparaat. Zo zou je wellicht een elektrische potloodslijper niet snel als de schuldige aanwijzen voor een slechte netwerkverbinding.

Routering

[bewerken]
Deze video legt uit hoe routers pakketten doorsturen tot aan de ontvanger

Voordat we de stappen bekijken is het begrijpen van routering belangrijk. De kans bestaat dat je tezelfdertijd mail leest, chat, iets aan het downloaden bent en dat in de achtergrond je besturingssysteem met updates bezig is en de klok synchroniseert met een tijdserver. Elk van die zaken genereert pakketten die over het Internet worden gestuurd en vaak van en naar een verschillende locatie moeten.

Routering zal er in dat geval voor zorgen dat elk pakketje op de juiste bestemming terechtkomt en dat is de verantwoordelijkheid van alle tussenliggende routers op het pad naar de eindbestemming. Op basis van een IP-adres (of een groep van IP-adressen) wordt een beslissing genomen:

  • ... vanaf welke interface (een router heeft er minstens 2) een pakketje wordt weggestuurd
  • ... doorheen welke weg hij het pakketje verder op weg kan zetten.
    • Als de eindbestemming ook op het eigen netwerk ligt, dan is het on-link, nl. doorheen één of meerdere switches.
    • Als de eindbestemming buiten het eigen netwerk ligt, dan is een gateway nodig als toegangspunt tot dat netwerk, nl. doorheen (een interface van) een router.

Routering heb je niet enkel bij routers, maar ook een host met slechts één NIC heeft een routeringstabel. Zo kan een computer op basis van een IP-adres beslissen waar een ethernetpakketje heen moet. Via het cli-commando netstat -r krijg je bijvoorbeeld:

Network Destination          Netmask       Gateway      Interface Metric
 1          0.0.0.0          0.0.0.0   192.168.1.1  192.168.1.100     55
 2        127.0.0.0        255.0.0.0       On-link      127.0.0.1    331
 3        127.0.0.1  255.255.255.255       On-link      127.0.0.1    331
 4  127.255.255.255  255.255.255.255       On-link      127.0.0.1    331
 5      192.168.1.0    255.255.255.0       On-link  192.168.1.100    311
 6    192.168.1.100  255.255.255.255       On-link  192.168.1.100    311
 7    192.168.1.255  255.255.255.255       On-link  192.168.1.100    311
 8        224.0.0.0        240.0.0.0       On-link      127.0.0.1    331
 9        224.0.0.0        240.0.0.0       On-link  192.168.1.100    311
10  255.255.255.255  255.255.255.255       On-link      127.0.0.1    331
11  255.255.255.255  255.255.255.255       On-link  192.168.1.100    311

We kunnen al enkele zaken besluiten:

  • De host heeft als IP-adres 192.168.1.100: zie kolom 'Interface'.
  • Als een bestemming buiten het eigen netwerk gelegen is (dus niet on-link), dan gaat dit doorheen de gateway 192.168.1.1.
  • Ergens moet een lijn te vinden zijn die het netwerk van host 192.168.1.100 en gateway 192.168.1.0 voorstelt. Dit vinden we hier bij lijn 5 waar als network destination 192.168.1.0 staat en als netmask 255.255.255.0. Samengevat zit onze host in een netwerk 192.168.1.0/24.
  • We kunnen dus al een netwerkschema opbouwen: zie alles wat niet grayed out is in onderstaande tekening.

De host gebruikt de routeringstabel om te weten hoe een pakketje naar een bestemming kan op weg gezet worden op basis van een IP-adres. Bv. naar bestemmingen 192.168.1.103, 192.168.1.100, 192.168.1.255, 127.0.0.1 of 10.1.2.3. Via onderstaande tabel bepalen we welke lijnen uit de routeringstabel matchen met een bepaald IP-adres. De uitleg voor de opbouw staat onder de tabel.

Netwerkadres Netmask /? 192.168.1.103 192.168.1.100 192.168.1.255 127.0.0.1 10.1.2.3
1 0.0.0.0 0.0.0.0 0 0 0 0 0 0
2 127.0.0.0 255.0.0.0 8 8
3 127.0.0.1 255.255.255.255 32 32
4 127.255.255.255 255.255.255.255 32
5 192.168.1.0 255.255.255.0 24 24 24 24
6 192.168.1.100 255.255.255.255 32 32
7 192.168.1.255 255.255.255.255 32 32
10 255.255.255.255 255.255.255.255 32
11 255.255.255.255 255.255.255.255 32
Gekozen lijn 5 6 7 3 1
Gateway (doorheen) On-link On-link On-link On-link 192.168.1.1
Interface (vanaf) 192.168.1.100 192.168.1.100 192.168.1.100 127.0.0.1 192.168.1.100
  • De eerste drie kolommen nemen we over uit de routeringstabel. In de eerste rij vind je enkele "willekeurige" bestemmingen.
  • In de kolom /? bepaal je hoeveel 1'tjes er zijn in het netmask. Iedere 255 zijn acht 1'jes (1111 1111), dus betekent 255.255.255.0 dat er 24 1'tjes zijn.
  • Nemen we bestemming 192.168.1.103:
    • Volgens lijn 1 van de routeringstabel moet er niets overeenkomen (netmask = 0.0.0.0). We nemen dus 0 over van de ?-kolom. De lijn met netwerkadres en netmask 0.0.0.0 noemen we altijd de standaard-gateway of default gateway genoemd: als niets anders matcht wordt deze lijn gekozen.
    • Volgens lijn 2 moeten de eerste 8 bits van het netwerkadres matchen met de eerste 8 bits van de bestemming. Omdat 127 niet gelijk is aan 192 laten we die cel leeg. Idem bij lijn 3 en 4.
    • Volgens lijn 5 moeten de eerste 24 bits matchen. Omdat 192.168.1 zowel in het begin van het netwerkadres 192.168.1.0 zit, als in het begin van de bestemming 192.168.1.103 nemen we 24 bit uit de /?-kolom over.
    • Volgens lijn 6 moeten de volle 32 bits overeenkomen, maar 192.168.1.100 is duidelijk niet gelijk aan 192.168.1.103. De cel blijft dus leeg.
    • Lijnen 8 en 9 zijn niet overgenomen in bovenstaande tabel. In de routeringstabel merk je dat het bij lijnen 8 en 9 om multicast gaat (224.0.0.0), maar hiervoor zouden we op bitniveau moeten kijken (240 i.p.v. 255), wat buiten het kader van deze cursus valt.
    • Volgens lijnen 10 en 11 moeten de volle 32 bits overeenkomen, maar 255.255.255.255 is duidelijk niet gelijk aan 192.168.1.103.
    • De lijn die het meest matcht is dus lijn 5.
    • De gateway is volgens de routeringstabel on-link en dus ligt de bestemming 192.168.1.103 op hetzelfde netwerk als de host 192.168.1.100. We kunnen dit dan ook aangeven op het netwerkschema.
    • Het ethernetframe kan verstuurd worden vanaf de interface 192.168.1.100 op de host, aldus de routeringstabel.
  • Voor bestemming 192.168.1.100 is er een 32-bit match. Dit is opnieuw on-link. Opgelet: deze bestemming staat al op ons netwerkschema, want het is nl. de host zelf. Teken die dus niet nóg een keer!
  • Voor bestemming 192.168.1.255 is er ook een 32-bit match. Dit is opnieuw on-link. Opgelet: teken deze niet op het netwerkschema, want dit stelt een broacast naar het eigen netwerk voor en niet een ethernetframe naar 1 specifieke host!
  • Voor 127.0.0.1 zal dit pakket verstuurd worden vanaf interface 127.0.0.1, logisch want het gaat om de localhost en dus het eigen toestel. On-link is dus hier niet "via de switch", maar als "via de linklaag": het ethernetframe verlaat de host niet.
  • Voor 10.1.2.3 blijkt geen enkele bit te machten, dus wordt de lijn van de default gateway genomen. Logisch, want deze bestemming ligt buiten het eigen netwerk. Het lukt niet meer 'on link': op de internetlaag is dus een router nodig. Via gateway 192.168.1.1 wordt het ethernetframe verder op weg gezet. Op het netwerkschema staat 10.1.2.3 ergens voorbij de router (dus zeker niet noodzakelijk de rechterinterface van de router!).
  • Stel dat er meerdere uiteindelijke keuzes zouden zijn (bepaald door de langste prefix), dan wordt diegene met de kleinste metric gekozen.

Het begrip 'routering' klinkt heel eenvoudig, maar is in de praktijk behoorlijk complex. Zo kan het zijn dat er een 'Quality of Service' (QoS) is vereist voor VoIP-pakketten, die voorrang moeten krijgen op andere pakketten. Of kan het zijn dat bij een gekozen router er plots letterlijk een kink in de kabel komt en dat een andere route automatisch moet worden gezocht.

Stap-voor-stap

[bewerken]

Netwerkschema

[bewerken]

Om de netwerkstappen goed te begrijpen is een goed netwerkschema heel belangrijk.[4]

We bespreken onderstaand netwerkschema uitgebreider, nl. van een bedrijf met twee gescheiden netwerken, verbonden met het Internet. Dankzij het helikopterzicht dat zo'n netwerkschema biedt, kan het gemakkelijker zijn om bij een fout de oorzaak te ontdekken of om te beslissen hoe het netwerk uitgebreid kan worden.

Stel dat host A.1 https://wikibooks.org bezoekt. Welke netwerkstappen komen met grote kans aan bod? Dit is niet zo gemakkelijk als het lijkt, maar eens je het snapt, is het de logica zelve... Als je stap-voor-stap kijkt, dan komt het bijna altijd neer op het kunnen invullen van onderstaande vraagtekens. Pas dan kan een pakket via het netwerk verstuurd worden.

Linklaag Internetlaag Transportlaag
MAC ontvanger MAC verzender IP ontvanger IP verzender poort ontvanger poort verzender

In de uitleg wordt verwezen naar de interface 1 tot 9, kortweg if1 tot if9.

Host A.1

[bewerken]

Hardware-adres: MAC verzender

[bewerken]

Vanuit het netwerklagenmodel weten we dat er twee verzendadressen zijn. Zo is aan iedere NIC automatisch een MAC-adres gekoppeld fysiek "vastgekoppeld" aan de hardware. Zo heeft host A.1 al fysisch een MAC-adres 'out-of-the-box' gekregen van de fabrikant van de NIC. Het Windows-commando ipconfig /all heeft het dan ook over een physical address. Een host kan dus altijd gemakkelijk zijn eigen MAC-adres achterhalen.

Linklaag Internetlaag Transportlaag
MAC ontvanger MAC verzender IP ontvanger IP verzender poort ontvanger poort verzender

DHCP: IP verzender

[bewerken]

Het andere verzendadres zit op de internetlaag. Voor zijn IP-adres krijgt host A.1 dit blijkbaar via DHCP in de range [100-200]. Het netwerkschema vermeldt niet waar de DHCP-server te vinden is, maar de kans is groot dat dit if3 is, nl. de linkse interface van router RAB. Van de DHCP-server kreeg host A.1 blijkbaar 10.1.2.101 als IP-bronadres voor een bepaalde tijd (de DHCP-lease). Zonder DHCP zou het om een statisch, manueel ingesteld IP-adres gaan.

Linklaag Internetlaag Transportlaag
MAC ontvanger MAC verzender IP ontvanger IP verzender poort ontvanger poort verzender

DNS: IP ontvanger

[bewerken]

In het ethernetframe zien we geen plaats voor de domeinnaam wikibooks.org, dus zal er een DNS-aanvraag nodig zijn om deze domeinnaam om te zetten naar een IP-adres van de ontvanger.

Linklaag Internetlaag Transportlaag
MAC ontvanger MAC verzender IP ontvanger IP verzender poort ontvanger poort verzender

Routeringstabel: gateway

[bewerken]

Om te weten vanaf welke interface van host A.1 en doorheen welke gateway het ethernetframe gestuurd moet worden, moet host A.1 zijn eigen routeringstabel bekijken (dus niet van een router!). Het kan dat een bestemming binnen het eigen netwerk ligt (on-link) of buiten het eigen netwerk. Hier ligt de bestemming buiten het eigen netwerk en dus is het IP-adres van default gateway (if3) belangrijk.

ARP: MAC ontvanger

[bewerken]

In het netwerkschema merken we een switch op en die zal het IP-adres van de default gateway niet snappen. Er zal dus ARP nodig zijn om het bijhorende MAC-adres van de default gateway (if3) te achterhalen (dus niet het MAC-adres van wikibooks.org!):

  1. Het bekijken van de ARP-cache: misschien zit de koppeling van MAC-IP van de default gateway er al in.
  2. Als het niet in de cache zit: een ARP broadcast-aanvraag doen.
Linklaag Internetlaag Transportlaag
MAC ontvanger MAC verzender IP ontvanger IP verzender poort ontvanger poort verzender

Transportlaag: poorten

[bewerken]

Op de transportlaag kan nu het transportprotocol gekozen worden: voor HTTPS zal dit TCP zijn (of QUIC). Ook de poortnummers van verzender en ontvanger worden bepaald. Voor het applicatieprotocol HTTPS wordt standaard poort 443 aan de serverkant gekozen. Aan de clientkant wordt dit willekeurig gekozen (vaak groter dan 1024).

Pas nu kan de HTTPS-aanvraag verstuurd worden:

  1. MAC-ontvanger: van de default gateway = if3 (dus niet van wikibooks, nl. if1‼️)
  2. MAC-verzender: van de host = if1
  3. IP-ontvanger: van wikibooks.org = if9
  4. IP-verzender: van de host = if1
  5. Poort ontvanger: 443 (want HTTPS)
  6. Poort verzender: willekeurig gekozen
Linklaag Internetlaag Transportlaag
MAC ontvanger MAC verzender IP ontvanger IP verzender poort ontvanger poort verzender

if3

if1

if9

if1

443

willekeurig

Switch netwerk A

[bewerken]

Bij stap 1 is enkel nog maar de HTTPS-aanvraag net verstuurd, maar er zijn nog netwerkstappen nodig om het tot een goed einde te brengen. Als we ons pakketje verder volgen op het netwerkschema, dan komen we de switch uit netwerk A tegen. Deze zal op basis van enkel het MAC-adres van de ontvanger het pakketje verder op weg zetten naar de router (default gateway). Dit is dus de RAB, links.

Router RAB

[bewerken]

In deze router RAB:

  1. De router moet opzoeken in zijn routeringstabel wat het IP-adres van de volgende hop is. Volgens het schema zal dit 192.168.1.1 zijn, de default gateway van netwerk B. Dit is dus de RBI, links (if7).
  2. Het MAC-adres van 192.168.1.1 = if7 achterhalen (via de cache of via een ARP-aanvraag).
  3. Het doorsturen van het pakket, maar enkele gegevens moeten gewijzigd worden:
    1. MAC-ontvanger: MAC van 192.168.1.1 = if7 (dit is dus gewijzigd, maar nog steeds niet van wikibooks.org!)
    2. MAC-verzender: MAC van 192.168.1.254 = if4 (dit is dus gewijzigd, want het gaat niet meer om A.1, wel om RAB, rechts)
    3. IP-ontvanger: van wikibooks.org = if9 (dit is dus ongewijzigd)
    4. IP-verzender: van de host A.1 = if1 (dit is dus ongewijzigd)
    5. Poort ontvanger: 443 (dit is dus ongewijzigd)
    6. Poort verzender: willekeurig gekozen (ongewijzigd)

Switch netwerk B

[bewerken]

Ook deze switch zal op basis van enkel het MAC-adres van de ontvanger het pakketje verder op weg zetten naar router RBI (default gateway).

Router RBI

[bewerken]

In de router RBI:

  1. De router moet opzoeken in zijn routeringstabel wat het IP-adres van de volgende hop is. Uit het schema kunnen we dit niet achterhalen.
  2. Het MAC-adres van deze hop achterhalen (via de cache of via een ARP-aanvraag).
  3. Het doorsturen van het pakket, maar enkele gegevens moeten gewijzigd worden:
    1. MAC-ontvanger: MAC van de volgende hop (en is dus gewijzigd)
    2. MAC-verzender: MAC van 91.179.77.105 = if8 (en is dus gewijzigd)
    3. IP-ontvanger: van wikibooks.org = if9 (dit is dus nog steeds ongewijzigd)
    4. IP-verzender: 91.179.77.105 = if8, wat dus is gewijzigd, omdat het pakket verder verstuurd wordt op het publieke internet, terwijl het IP-adres van host A.1 een privaat IP-adres is! Er moet dus NAT toegepast worden.
    5. Poort ontvanger: 443 (dit is dus ongewijzigd)
    6. Poort verzender: willekeurig gekozen (kan omwille van NAT wel wijzigen)

Samengevat

[bewerken]

In het voorbeeld surften we vanuit host A.1 naar Wikibooks en werkten zo de netwerkstappen uit. Afhankelijk van de situatie kan er een variatie zijn:

  • Als er een statisch IP is ingesteld op de verzender, dan is DHCP niet nodig.
  • Als er rechtstreeks het IP-adres wordt opgegeven, dan is DNS niet nodig. Bv. bij een ping naar de default gateway of een ping naar 8.8.8.8.
  • Als de bestemming 'on link' is, dan zal er geen ARP nodig zijn voor de default gateway. Er zal ARP nodig zijn om het MAC-adres te achterhalen van het IP-adres dat als eindbestemming op hetzelfde netwerk ligt.

Samengevat kunnen we via onderstaande tabel enkele kernwoorden noteren die meestal nodig zullen zijn:

Linklaag Internetlaag Transportlaag
MAC ontvanger MAC verzender IP ontvanger IP verzender poort ontvanger poort verzender
Ofwel on-link,
ofwel gateway

ARP-cache
ARP-aanvraag

fabrikant NIC DNS → IP statisch?

dynamisch?
→ DHCP

Bekende serverdienst? → bekende poort

Niet bekend? → willekeurig gekozen


Als we het pakketje volgen doorheen de netwerken A, B en het internet, dan kunnen we onderstaande samenvatting maken. De cijfers verwijzen naar de genummerde interfaces van de tekening. Het vraagteken is er omdat we vanuit de tekening niet kunnen weten wat het MAC-adres van de volgende hop is. De 8 bij het IP van de verzender staat in het vet, omdat je niet mag vergeten dat hier NAT wordt toegepast.

A B I ...
MAC ontvanger 3 7 ? ...
MAC verzender 1 4 8 ...
IP ontvanger 9 9 9 ...
IP verzender 1 1 8 ...

Zo gaat deze ketting verder (NAT zal in principe niet meer nodig zijn), totdat wikibooks.org is bereikt. Daarna is er een omgekeerde beweging om de webpagina terug te kunnen sturen. Per netwerk zullen steeds de MAC-adressen van verzender en ontvanger gewijzigd worden. Het al of niet wijzigen van het IP-adres hangt o.a. af van het feit of al of niet NAT'ing nodig is.

Je moet toch verrast zijn door een systeem dat internetarchitecten en -ingenieurs hebben kunnen opzetten, waarbij we als eindgebruiker zo weinig merken van wat er achter de schermen gebeurt. Tenzij er iets foutloopt: dan is het IT'er handig om een goed begrip te hebben van netwerken én om een goed netwerkschema van je netwerk te hebben!

  1. Leerplan Applicatie- en databeheer - 3de graad - D/A-finaliteit
  2. Informatica- en communicatiewetenschappen B + S - 3de graad - D-finaliteit
  3. Zie bv. gossenmetrawatt.de/en cable troubleshooting via TDR Easy cable troubleshooting via TDR
  4. Je kan zoeken naar voorbeelden van netwerkdiagrammen om inspiratie op te doen.
Informatie afkomstig van Wikibooks NL, een onderdeel van de Wikimedia Foundation.