Internetprotocols (deel 1)

4
80
Dit artikel is deel 22 van 35 in het DiskIdee dossier Netwerken ontsluierd (cursus)
DossiernavigatieDe wondere wereld van het InternetInternetprotocols (deel 2)

Het internet werkt met tcp/ip en dat omvat twee netwerkprotocols die samenwerken: ip (internet protocol) en tcp (transmission control protocol). Dat vormt de basis voor alles, ook voor alle protocols die daar nog bovenop draaien.
netwerken
Zoals we in deel 21 over de geschiedenis van het internet aan de weet kwamen, is tcp/ip het netwerkprotocol van de Unix-wereld en omdat het internet oorspronkelijk groeide uit de koppeling van Unix-machines, is tcp/ip dus ook het netwerkprotocol voor het internet. Bij tcp/ip kun je zeggen dat IP (Internet Protocol) instaat voor transport, adressering en routering en dat TCP (Transmission Control Protocol) de eind-naar-eindtransmissies verzorgt.


UDP
Zo simpel is het niet altijd. TCP heeft bijvoorbeeld nog een ‘broertje’ dat UDP heet en ook voor eind-naar-eindtransmissies zorgt. Het verschil zit hem in de verbinding tussen die eindpunten: UDP veronderstelt dat die er is en perfect werkt, en TCP niet. TCP noemt men dus ook wel een verbindingsloos protocol. In deel 14 hebben we besproken dat IP de adressering en routering verzorgt op basis van ip-adressen die uit vier bytes bestaan en waarbij we de bytegrenzen gebruiken om ip-adressen op te splitsen in subnetten. Om ip-adressen makkelijker te kunnen verwerken, noteren we elke byte in decimale vorm en plaatsen een punt tussen elk paar decimale getallen. Zo zou het ip-adres D8EF3364 voor mensen veel moeilijker te hanteren zijn dan het decimale equivalent in zogenaamde ‘quad-notatie’ 216.239.51.100.
We hebben ook geleerd dat er meerdere klassen van ip-adressen bestaan en dat elke klasse een specifiek doel dient. Dat is echter niet relevant voor de werking van de andere protocols: de basis van alles is het ip-adres, het maakt niet uit tot welke klasse het behoort.

Poorten
Het IP-protocol zorgt voor het inpakken van data in pakketten met ip-adressen voor zender en ontvanger, maar met de rauwe data alleen zijn we natuurlijk niet veel. We moeten ook een manier hebben om in zo’n pakket aan te geven waar het bij hoort. Daar dient TCP (Transmission Control Protocol) voor: zoals de naam het al zegt, moet dat protocol de transmissie in goede banen leiden. De hoofdbedoeling hiervan is het mogelijk te maken dat meerdere applicaties tegelijk transmissies kunnen uitvoeren tussen twee stations. De meest eenvoudige uitleg over TCP is, dat het een poortnummer bij elk ip-pakket plakt. Dat poortnummer geeft aan bij welke applicatie het hoort. Let wel: meer dan datastromen met eenzelfde poortnummer bij elkaar houden zit er niet in.


Applicaties
Hoewel bepaalde poorten vast bij bepaalde applicaties horen, moeten die applicaties zelf natuurlijk ook nog werk verrichten. Een TCP-poort is een 2 bytes grote waarde, wat betekent dat er 65536 mogelijke waarden zijn. De overgrote meerderheid daarvan is niet aan een welbepaalde applicatie geklonken, maar voor poortnummers onder 1000 is dat meestal wel het geval. 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. Er zijn er natuurlijk nog heel wat meer gedefinieerd, maar die gaan we hier niet allemaal opsommen. Je kunt bij veel applicaties trouwens ook configureren welke poort ze moeten gebruiken. Als je echter standaardfuncties op andere dan de bekende poorten definieert, kan het algemene publiek er niet meer mee werken. Daarmee bedoelen we: als je een webserver bijvoorbeeld op poort 2080 doet werken, kan alleen maar iemand die die poort kent er naartoe surfen. TCP doet nog meer dan alleen data per poort bijeenharken. Het doet ook aan datastroom- en foutenbeheer en zorgt er zo voor dat de datatransmissie betrouwbaar is. Men noemt TCP een verbindingsgeöriënteerd protocol, wat wil zeggen dat applicaties eerst een client-serververbinding moeten opbouwen voordat ze kunnen werken.
Overigens mag je het woord ‘datatransmissie’ hier niet verwarren met het verzenden van ip-pakketten, omdat het IP (internetprotocol) immers zelf daarvoor verantwoordelijk is. Als er data uitgewisseld wordt tussen twee applicaties via zo’n TCP-poort, ligt het voor de hand dat er ook een protocol definieert hoe die wisselwerking moet gebeuren. Dat heet dan een applicatieprotocol. Binnen tcp/ip veronderstellen alle applicatieprotocols een client/server-configuratie. Dat wil zeggen, dat een van de applicaties een client is en gebruik maakt van de diensten van een applicatieserver. Laten we http als voorbeeld nemen. Een http-client (webbrowser) maakt via tcp-poort 80 gebruik van een http-server (webserver). Dat is geen eenrichtingsverkeer: er wordt data uitgewisseld in beide richtingen. Het is echter altijd de server die de dienst verleent en de client die ervan gebruik maakt.


Applicatieprotocols
Letterlijk alle applicatieprotocols in de tcp/ip-wereld werken op deze manier. In de Unix-wereld heet een applicatieserver overigens een ‘daemon’ en het serverprogramma wordt vaak genoemd naar het protocol met een ‘d’ eraan toegevoegd. Zo zou een programma genaamd ‘ftp’ de ftp-client zijn, en ‘ftpd’ de ftp-server. Soms is zoiets niet altijd wat je verwacht. Bij het dhcp-protocol heet de client bijvoorbeeld vaak ‘dhcpcd’ en de server ‘dhcpsd’ omdat ze beide altijd in het geheugen in uitvoering blijven (wat de echte en oorspronkelijke betekenis van het woord ‘daemon’ in Unix is). Daar komen we later nog op terug. We gaan namelijk vanaf dit deel de populairste applicatieprotocols voor tcp/ip nader bekijken. Herinner je dat er 65.536 protocols mogelijk zijn, dus het zou onbegonnen werk zijn die allemaal te willen aflopen. We beperken ons dus tot een bespreking van de populairste applicaties: bestandenoverdracht met ftp, opdrachtregels op afstand met telnet en ssh, postuitwisseling via pop3 en smtp, plus webbrowsing met http. Daarnaast kijken we naar een paar protocols die gebruikt worden voor de administratieve functies van een tcp/ip-netwerk: het automatisch toewijzen van ip-adressen via dhcp en domeinnaamvertaling. Ten slotte gaan we ook nog dieper in op een typisch voorbeeld van een niet-standaard protocol, namelijk de databaseserver mysql.

Vorig artikelInternetprotocols (deel 2)
Volgend artikelDe wondere wereld van het Internet

4 REACTIES

  1. In de paragraaf \”UDP\” lijkt het me verkeerd :
    \”TCP noemt men dus ook wel een verbindingsloos protocol\” .
    In de paragraaf \”Applicaties\” is het volgens mij wel juist : \”Men noemt TCP een verbindingsgeöriënteerd protocol\” .

  2. Daar is geen externe reden voor: er is alleszins geen enkele technische beperking op het afdrukken van artikels van deze site. We vragen natuurlijk wel dat bezoekers onze auteursrechten respecteren.

Reacties zijn gesloten.