Informaticasite van het Sondervick College te Veldhoven                 © L.J.M van Haperen (bron : R.J. van der Beek)
 

Hoofdstuk 14. Netwerken deel 2

14.1. Het TCP/IP-protocol en de netwerklagen.

 14.1.1. Transport in "lagen".

Berichten over een netwerk versturen is in principe behoorlijk ingewikkeld, al merk je daar meestal weinig van omdat alles automatisch gaat. Maar iemand die het netwerkverkeer moet installeren en regelen kan gemakkelijk het overzicht verliezen.
Om dat te voorkomen wordt netwerkverkeer opgebouwd in lagen of niveaus, zodat de netwerkregelaar niet alles tegelijk hoeft te bekijken maar zich op één onderdeel kan concentreren.
Ook fabrikanten kunnen zich specialiseren in een speciale laag van het netwerkverkeer.
Elke laag levert diensten aan de hogere lagen. Elke laag communiceert volgens bepaalde regels en dat noemt men het protocol van die bepaalde laag.
Deze verzameling van lagen en protocollen noemt men de netwerkarchitectuur.
We leggen dit uit m.b.v. een voorbeeld hoe de communicatie vroeger verliep.

Stel je voor dat een calculator van een groot bedrijf in Groningen een heel groot bestand met gegevens heeft aangemaakt met behulp van het programma SPSS (dat is een programma waarmee je statistiek op gegevens kunt uitvoeren).
Het genoemde bedrijf heeft ook een vestiging in Johannesburg in Zuid-Afrika, en de calculator van de vestiging in Johannesburg moet dat bestand gebruiken.
Het bestand moet dus naar Johannesburg worden verstuurd.
Tegenwoordig zullen ze zoiets waarschijnlijk via email doen, maar een aantal jaren geleden deden ze dat meestal m.b.v. diskettes.

Toch kun je die ouderwetse manier goed vergelijken met de manier waarop het via Internet gaat.
Als je een bestand m.b.v. schijfjes verstuurt gebeurt dat in stappen. Als je een bestand via email verstuurt gebeurt dat ook in stappen.

Eerst beschrijven we de stappen die worden genomen als je het m.b.v. diskettes verstuurt. En daarna vergelijken we die stappen met wat er gebeurt als je het via email doet.

De stappen die worden genomen als het m.b.v. diskettes gaat:

  • De calculator heeft het bestand aangemaakt m.b.v. het programma SPSS.
  • Hij neemt daarna contact op met de systeembeheerder en vertelt hem dat het genoemde bestand moet worden verstuurd.
    De systeembeheerder zet het programma op schijfjes. Als het een groot bestand is dan past het waarschijnlijk niet op één diskette. We nemen even aan dat er 10 schijfjes voor nodig zijn.
    Op het etiket van elk schijfje zet hij het nummer van het schijfje en de naam van het bestand waar het mee geopend kan worden (dus SPSS). Verder doet hij elk schijfje in een envelop, en hij zet de naam en het adres van degene die het moet hebben op de envelop. Hij zorgt er voor dat ze gefrankeerd worden, en dat ze gepost worden. En hij belt misschien nog even naar de zaak in Johannesburg om te vertellen dat ze post kunnen verwachten: 10 enveloppen met schijfjes. En hij vraagt misschien of ze over een week even willen bellen of alles goed is aangekomen.
  • De TNT zorgt voor de verdere verzending. Daar moet ook nog heel wat voor gebeuren. De post gaat eerst met een busje naar een centraal kantoor, dan met de trein naar Amsterdam, dan naar Schiphol, dan met het vliegtuig naar Zuid Afrika, enz.
  • Uiteindelijk komen ze terecht bij de vestiging in Johannesburg. De systeembeheerder krijgt ze, hij haalt de schijfjes uit de enveloppen zorgt er voor dat het weer één groot bestand wordt.
  • Hij zet dat bestand op de computer van de calculator en vertelt er bij dat die het programma SPSS kan gebruiken om de gegevens te bewerken. En dan kan die aan de slag en is alles rond.

Het overbrengen van dat bestand gaat dus in verschillende stappen. En er komen heel wat mensen en handelingen aan te pas om er voor te zorgen dat het op de juiste plaats komt.


Als je iets via Internet verstuurt dan gaat het ook in verschillende stappen. Er komen dan niet allemaal verschillende mensen aan te pas, maar wel verschillende "stuurprogramma's" , die verschillende dingen voor hun rekening nemen. Dat noem je de verschillende "lagen" van de transmissie. En bij elke laag heb je een protocol.

In 1974 heeft de internationale standaardisatieorganisatie een model voor gelaagde netwerken gedefinieerd. Dat model heet voluit het Open Systems Interconnection Reference Model, maar iedereen spreekt kortweg van het OSI-model.
De volgende vijf lagen in dat model gaan we verder bespreken.

Fysieke laag Deze laag verzorgt het fysieke transport van bits.
Datalinklaag Deze laag beheert en controleert de datatransmissie en probeert fouten te corrigeren
Netwerklaag Deze laag verzorgt het transport, de adressering en de routering van pakketten door een netwerk
Transportlaag Deze laag verzorgt een data-onafhankelijk eind-naar-eindtransportsysteem
Applicatielaag Deze laag verbindt de netwerkapplicaties met de gebruikers

 14.1.2. De applicatielaag.

Stel je wilt een emailbericht versturen.
Eerst heb je dat emailbericht ingetypt, waarschijnlijk met behulp van een emailprogramma.

Dan staat er, als het bericht klaar is, een bestand op je computer dat begint met het emailadres van degene aan wie het verstuurd moet worden, het onderwerp van het bericht, enz.
Dat bestand zit op een speciale manier in elkaar.
Daar hoef je zelf niet zo veel voor te doen, dat regelt het emailprogramma wel voor je.

Er zijn bepaalde afspraken gemaakt hoe zo'n bestand er uit moet zien.
Dat noem je het SMTP-protocol (Simple Mail Transfer Protocol). En dat hoort bij de applicatielaag. Want de "applicatie" (het programma waarmee je werkt) regelt dat.

Als de gegevens worden verstuurd via Internet dan moet ook worden vastgelegd met welk programma de gegevens kunnen worden "benaderd", dat wordt de poort genoemd.
Dat programma is eigenlijk de toegangspoort tot de gegevens. Je moet dit begrip "poort" niet verwarren met het begrip "poort" van bijvoorbeeld een netwerkkaart, of de poort voor het aansluiten van een muis, dat zijn fysieke poorten. In tegenstelling daarmee wordt een applicatie ook wel een virtuele poort genoemd. En daar worden nummers voor gebruikt. Voor het SMTP-protocol is het poortnummer 25. Het poortnummer geeft dus aan bij welke applicatie het hoort. Heel bekende poorten zijn: 21 voor FTP, 23 voor TELNET, 25 voor SMTP, 53 voor domeinnaamvertalingen, 67 voor dhcp-servers, 68 voor dhcp-clients, 80 voor http en 110 voor pop3

Wat er in de applicatielaag gebeurt is te vergelijken met wat de calculator heeft gedaan in het voorbeeld: hij heeft m.b.v. het programma SPSS een bestand aangemaakt.

 14.1.3. De transportlaag.

Als je het emailbericht hebt ingetypt, en je klikt op "Bericht verzenden" dan gebeurt er van alles.

Eerst wordt er een verbinding opgezet met je provider via de telefoon of via de kabel (of misschien was die verbinding er al). En er wordt op een bepaalde manier duidelijk gemaakt aan de provider dat ze een bericht, dus een bitstroom, kunnen verwachten.
Hoe dat gebeurt daar zijn ook afspraken over gemaakt en die afspraken vormen het TCP-protocol (Transmission Control Protocol).
Dat wordt geregeld door een gedeelte van de systeemprogrammatuur, en dat wordt de transportlaag genoemd.
De transportlaag verdeelt het bericht in stukken, meestal van 1500 bytes. Dat worden datagrammen of TCP-segmenten of pakketjes genoemd.
En er wordt aan elk pakketje nog iets toegevoegd, een zogenaamde header. Die bestaat uit 20 bytes.

Zo'n TCP-segment ziet er dan als volgt uit:

2 bytes 2 bytes 4 bytes 4 bytes 8 bytes 0-1500 bytes
bronpoort bestemmingspoort volgorde-nummer bevestigingsnummer checksum enz. data
  • Het begrip poort is hierboven al uitgelegd. De bronpoort en de bestemmingspoort worden in de eerste velden vastgelegd.
  • Elk pakketje wordt van een volgnummer voorzien. Dat is natuurlijk nodig omdat de stukken bij de ontvanger weer aan elkaar geplakt moeten worden en dat moet natuurlijk wel in de goede volgorde gebeuren.

    Als er een pakketje bij de ontvanger aankomt dan wordt er door de ontvanger ook zo'n soort pakketje teruggestuurd ter bevestiging. Daar staat het nummer in dat ontvangen is, en dat is de ACK (=acknowledgment-number of bevestigingsnummer). De data zitten daar natuurlijk niet weer bij in.

    Er gaan dus steeds pakketjes heen en weer !

Wat er in de transportlaag gebeurt komt ongeveer overeen met wat de systeembeheerder doet in het voorbeeld.

 14.1.4. De netwerk-laag.

De transportlaag heeft er voor gezorgd dat het bericht in allemaal TCP-segmentjes is verdeeld. Dat was te vergelijken met wat de systeembeheerder deed: het bestand op verschillende schijfjes zetten, in enveloppen doen, en zorgen dat die gepost worden.

Als de enveloppen in de brievenbus zijn gedaan dan regelt de TNT het verdere vervoer. Dan gebeurt er ook nog van alles. Eerst gaan de brieven naar een centraal adres waar ze gesorteerd worden. Dan gaan ze misschien met de posttrein naar Amsterdam. Dan naar Schiphol. Dan met het vliegtuig naar Zuid Afrika, dan weer in de trein, en uiteindelijk bezorgt de postbode ze hopelijk op het juiste adres.

Als iets via het Internet wordt verstuurd dan volgen de pakketjes ook een lange route, over verschillende kabels. Steeds van "router" naar "router" (een router is een computer die het pakketje in ontvangst neemt, kijkt waar het naar toe moet, en het dan in de goede richting verder stuurt).

Dat geheel noem je de netwerklaag. En de afspraken daarover vormen het netwerkprotocol.

Als de transportlaag een TCP-segmentje overgeeft aan de netwerklaag, dan voegt de netwerklaag weer een header toe aan het segment.
Er zijn afspraken over gemaakt hoe die header er uit ziet, en dat noem je het IP-protocol.

Een IP-pakketje ziet er als volgt uit :

1 byte 1 byte 2 bytes 2 bytes 2 bytes 1 byte 1 byte 2 byte 4 byte 4 byte 0-1520
lengte
van de
header
TOS
(type of service
totale lengte
(header + data)
Identi
fication
volg
orde
num
mer
TTL
(time to live)
trans
port-
proto
col
header
check
sum
bron
adres
bestem
mings
adres
TCP
seg
ment
  • Het vierde veld (Identification) geeft aan bij welk bestand dit pakketje hoort.
  • Het vijfde veld is het volgorde-nummer van het pakketje. Dat zit er dus dubbel in, want dat nummer zit ook al in het TCP-segment. Maar die nummers hoeven niet altijd precies gelijk te zijn. Het gebeurt onderweg namelijk wel eens dat een pakketje nog eens in stukjes wordt gehakt, omdat de er over de komende route alleen maar kleine pakketjes vervoerd kunnen worden. En dan met het volgorde-nummer van het IP-pakketje aangepast worden.
  • Het zesde veld is TTL: het time-to-live veld.
    Dat is een teller die in het begin meestal op 255 wordt gezet.
    En elke keer als een pakketje een router passeert wordt dat nummer één verlaagd.
    En als het getal 0 wordt dan wordt het pakketje weggegooid, want er wordt aangenomen dat het pakketje dan verdwaald is, dat het in ieder geval niet op de juiste plaats kan komen.
    Dat zorgt er voor dat pakketjes niet eeuwig blijven ronddolen op het Internet.
  • Het zevende veld is het transportprotocol. Dat is het protocol dat er voor gezorgd heeft dat het bestand in stukjes is gehakt, en dat er bij de bestemming voor moet zorgen dat de pakketjes weer aan elkaar geplakt worden.
    Dat is waarschijnlijk TCP, maar er zijn ook andere, minder bekende, transportprotocollen, bijv. UDP.
  • Het bronadres en het bestemmingsadres zijn zogenaamde IP-adressen, dus 4 getallen tussen 0 en 255.
  • In het laatste veld staan de echte data + de TCP-header. De lengte daarvan kan 1620 bytes zijn (dat is normaal), maar het kan ook veel kleiner (bijv. bij een ontvangst-bevestigings pakketje zijn er geen data) en ook veel groter zijn (maximaal mag de grootte van één IP-pakket 64 Kb zijn).
Je hoeft dit niet allemaal te onthouden, van de header zijn alleen het TTL-byte, het totale lengte-byte, en bronadres en bestemmingsadres belangrijk.

Wat er in de netwerklaag gebeurt komt ongeveer overeen met wat de TNT doet om er voor te zorgen dat brieven met de diskettes uit het voorbeeld op de plaats van hun bestemming komen.

 14.1.5. De datalink-laag.

Als pakketjes via Internet verstuurd worden, dan moet het verkeer over de kabels ook goed geregeld worden.

Dat wordt geregeld door de datalink-laag.

Als de datalink-laag een IP-pakketje van de netwerklaag ontvangt dan wordt er weer een header aan toegevoegd.

Elke laag voegt dus een header toe (bij het versturen; bij de ontvangst haalt elke laag er juist een header van af).

In die header zit bijvoorbeeld een startbyte waar aan gezien kan worden waar het frame begint. (dat is te vergelijken met de toeter van een trein : ik kom er aan !)

Het frameformaat van 802.3 in tabelvorm:


7 bytes

1 bytes

6 bytes

6 bytes

2 bytes

0-1540

4 bytes

preambule

vlagbyte

doeladres

bronadres

lengte dataveld

data

checksum

Wordt het verstuurd over een LAN dan wordt er een header toegevoegd zoals je hierboven ziet (uitleg: zie vorige hoofdstuk). Als je bijvoorbeeld zit te internetten op school en verstuurt jouw computer een pakketje dan gaat het eerste stukje over het school-netwerk. De datalinklaag zet de bijbehorende header er voor (de netwerkprogrammatuur van de netwerkkaart regelt dat). Als het pakketje is aangekomen bij de router van school dan haalt die de LAN-header weg, zet er een andere datalink-header voor en stuurt het verder over het Internet.

De datalink-laag bestaat daarom uit twee verschillende gedeelten : de MAC-deellaag (Medium Access Control) voor het verkeer over een LAN, en de LLC-deellaag (Logical Link Control) voor de rest.

Over de LLC-deellaag wordt meer verteld in het volgende hoofdstuk.

Het verkeer over de de datalink-laag is in het voorbeeld te vergelijken met het vervoer van de enveloppen met diskettes per trein en vliegtuig.
Een posttrein rijdt over rails, en het verkeer over die rails moet goed geregeld zijn. Het moet bekend zijn wanneer een trein aankomt en vertrekt. Bij kruisingen moeten geen botsingen onstaan, want dan kan het gebeuren dat een heleboel brieven niet op de plaats van bestemming aankomen.

 14.1.6. Overzicht van de protocollen en lagen.

De namen van de opeenvolgende lagen zijn gemakkelijk te onthouden met het volgende ezelsbruggetje: All People Seem To Need Data Processing
De eerste letters van deze woorden zijn gelijk aan de eerste letters van de lagen: Applicatielaag, Presentatielaag, Sessielaag, Transportlaag, Netwerklaag, Datalinklaag, Physical layer (Fysieke laag in het engels). Maar de Presentatielaag en de Sessielaag laten we buiten beschouwing.



In de applicatielaag wordt het bestand aangemaakt, dat verstuurd moet worden. Daarvoor zijn verschillende protocollen.
SMTP is een email-protocol. Bijbehorende poortnummer : 25
De user-agent die er bij hoort is (dus de applicatie) een email-programma.
HTTP en HTML (hypertext transfer protocol en hypertext markup language) zijn protocols voor internet-home-pages. (http voor het versturen, html voor de bijbehorende taal). Bijbehorend poortnummer : 80
De user-agent voor HTTP is een browser, bijv. Internet Explorer.
FTP is een file transfer protocol, bedoeld om bestanden over het internet te versturen. Als je bijv. een home-page gemaakt hebt en je wilt het bijbehorende html-document naar de provider sturen, zodat iedereen het via Internet kan bekijken, dan moet je dat met behulp van een FTP-programma doen. Zo'n programma werkt bijna net zo als de Verkenner. Het bijbehorende poortnummer is 21.
Ping is een programma om te kijken of een bepaalde "host" te bereiken is, en hoe lang het duurt voordat een bericht is overgeseind.
Traceroute is een soortgelijk programma, daarmee kun je zien welke route een pakketje heeft afgelegd.

In de transportlaag worden de bestanden in pakketjes verdeeld aan de zender-kant.
Aan de ontvangst-kant zorgt het er voor dat de pakketjes weer worden samengevoegd. Als het al besproken TCP-protocol wordt gebruikt dan wordt er ook voor gezorgd dat er van elk ontvangen bericht een ontvangstbericht terug wordt gestuurd.
Het UDP-protocol is een soortgelijk protocol, maar dit protocol wordt gebruikt als de snelheid belangrijker is dan de betrouwbaarheid, bijv. bij het overseinen van gesproken tekst en video's. Hierbij wordt er niet van elk ontvangen pakketje een ontvangstbericht teruggestuurd.

In de netwerklaag wordt er voor gezorgd dat de IP-pakketjes in de goede richting worden verstuurd, en op het juiste adres worden bezorgd.
Daarvoor wordt het IP-protocol gebruikt. Aan de hand van het IP-adres wordt de richting, waarin het gestuurd moet worden, bepaald. Er wordt ook gebruik gemaakt van een speciaal soort "besturings-pakketjes", de zogenaamde ICMP-pakketten. En daarbij wordt gebruik gemaakt van het ICMP-protocol.
Als bijvoorbeeld het time-to-live veld van een IP-pakket 0 is geworden, dan wordt het IP-pakket niet verder verstuurd en dan wordt er een ICMP-pakketje naar de zender teruggestuurd met het bericht dat het IP-bericht niet is aangekomen. Het programma PING maakt gebruik van ICMP-berichten.

De datalinklaag zorgt voor het vervoer over de kabels, hopelijk zonder botsingen enz.
In een LAN heb je daarvoor o.a. het Ethernet-protocol.
Als je een Internet-sessie wilt starten dan wordt vaak eerst kontakt gelegd met de provider m.b.v. het PPP-protocol. In het volgende hoofdstuk meer daar over.

 14.1.7. Speciale IP-adresssen

In een lokaal netwerk (dat geen publieke ip-adressen nodig heeft) kunnen geen willekeurige ip-adressen worden gebruikt, er zijn bepaalde adressen voor gereserveerd. Die zijn ingedeeld in klasse A, B en C
Voor klasse B gaat het om de adressen 172.16.0.0 tot en met 172.31.255.255. (het bijbehorende subnet-masker is dan 255.255.0.0, dat betekent dat de laatste twee getallen van het IP-adres vrij te kiezen zijn, de eerste twee niet)
En verder wordt 192.168.0.1 tot en met 192.168.0.255 gereserveerd voor klasse C. (het bijbehorende subnet-masker is dan 255.255.255.0, dat betekent dat het laatste getal van het IP-adres vrij te kiezen is, de eerste drie niet)
Deze gereservereerde netten voor privégebruik worden nooit toegewezen aan aanvragers van een publiek ip-adres.

De IP-adressen die in een LAN worden gebruikt mogen beslist niet "zichtbaar" zijn vanaf het Internet, al was het maar om adresconflicten te vermijden want in de meeste LAN's worden dezelfde IP-adressen gebruikt). Daarom doet de ROUTER aan adresvertaling, dat betekent dat hij het door de provider toegewezen ip-adres gebruikt als het "officiële" publieke adres naar de buitenwereld toe. Alle datatransfers van gebruikers binnen het eigen netwerk naar buiten toe komen bij de router terecht en die vervangt de interne adressen door het publieke adres. Zelf houdt hij een lijstje bij van alle interne adressen waarvoor hij dat deed plus hun bestemming. Als er een antwoord komt doet de router het omgekeerde: het publieke adres vervangen door het interne adres. De afkorting die hiervoor gebruikt wordt is NAT (Network Adress Translation)

De router verzorgt alle adresvertalingen. De meeste routers hebben zelfs een DHCP (Dynamic Host Configuration Protocol)-server aan boord die er voor zorgt dat je niet zelf interne ip-adressen hoeft te verzinnen voor elke pc in je netwerk: de router doet dat allemaal automatisch voor je.

Een heel speciaal ip-adres is het zogenaamde 'loopback'-adres 127.0.0.1.
Een pc hoeft niet verbonden te zijn met een LAN of een internet provider om TCP/IP te kunnen gebruiken: je kunt alles doen met het loopback-adres 127.0.0.1, maar het werkt allemaal alleen binnen je eigen pc.
Je moet dan zelf voor een webserver op je PC zorgen, maar dan kun je ook van alles uitproberen. In de meeste systemen koppelt men de domeinnaam 'localhost' vast aan dat adres 127.0.0.1.

Er wordt met IP-adressen van 4 bytes gewerkt (dat wordt wel IPv4 genoemd), maar zo langzamerhand zijn die adressen allemaal al verbruikt.
Daarom wordt er toegewerkt naar IPv6, waarin gewerkt wordt met IP-adressen van 16 bytes. De eerste acht bytes van een IPv6-adres bevatten informatie over het type ip-adres en de geografische gegevens, en de laatste acht bytes bevatten het adres.