Communicatieprotocollen¶
Hoe weet een webbrowser op welke manier je een website opvraagt bij een server? Hoe kan het dat een MacBook en een Windows laptop allebei zonder problemen e-mails kunnen ophalen van dezelfde Linux-mailserver? Waarom kunnen internetproviders van over de hele wereld berichten uitwisselen, zonder dat het bij de verkeerde ontvanger terecht komt?
Deze vragen staan centraal in hoe we computers, en onze netwerken van computers, tegenwoordig inrichten. Computers zijn al lang geen op zichzelf staande systemen meer. Integendeel: gebruikers hebben er het meeste plezier van als computers met andere systemen in contact staan, informatie kunnen uitwisselen, kunnen samenwerken. Onze elektronische devices zijn continu bezig met communiceren, zoals wanneer we websites bezoeken, we berichten naar elkaar sturen via WhatsApp, Signal, of Telegram, of wanneer we via Teams samenwerken.
Om deze communicatie soepel te laten verlopen zijn er afspraken gemaakt. Die afspraken zijn specifiek, en gaan vaak over één proces: het communiceren met een web-applicatie, het versturen van e-mails, het opvragen van een IP-adres, of hoe je berichten over WiFi moet versturen. Zo’n set afspraken noemen we ook wel een communicatieprotocol. Elk communicatieprotocol beschrijft vier belangrijke componenten van communicatie1:
- Het type berichten wat er verstuurd kan worden.
- Hoe die berichten er uit zien: welke velden moet je invullen?
- Welke waarden mogen er in de velden staan, en wat betekent dat?
- Wanneer berichten verzonden mogen worden, en hoe er gereageerd moet worden op ontvangen berichten.
Door deze protocollen te volgen kunnen verschillende computers, hosts, servers, of andersoortige devices met elkaar communiceren. Maar met zoveel zaken om over te communiceren, en zoveel taken om te regelen voordat een bericht van computer A naar computer B is verzonden… Hoe werkt dat dan in de praktijk?
Protocollen in de ‘echte’ wereld
Ook in de niet-digitale wereld maken we veel gebruik van protocollen. Protocollen zijn de geschreven en ongeschreven regels in de maatschappij. Deze regels komen overal terug: voor elke keer dat je met iets of iemand communiceert zou je die regels uit kunnen schrijven. Soms zijn die regels losjes gedefinieerd, zoals hoe je omgaat met je vrienden. Voor andere interacties zijn er veel strengere regels - een ontmoeting met de koning wordt altijd voorafgegaan door een lange lijst met wat je wel én niet mag doen. Zeker in de communicatie met formele instanties zijn er vaak veel regels die je moet volgen. Bij een belastingaangifte moet je bijvoorbeeld allerlei ondersteunende documentatie meesturen, en als je studiefinanciering aanvraagt moet je het formulier correct invullen, anders wordt je verzoek (hoe terecht ook) alsnog afgewezen.
Communicatieprotocollen combineren¶
In de echte wereld zijn er vaak verschillende stappen die je moet doorlopen als je communiceert. Zeg dat je iets wilt versturen via de post. Dan moet je éérst bepalen wat je nou precies gaat versturen: een enkele brief, een doosje chocola, een koelkast… Pas wanneer je weet wat je gaat versturen, kan je kiezen hoe je dat gaat versturen. Moet het in een envelop met een postzegel, doe je het in een doosje en verstuur je het als pakketje, wil je de zekerheid van een aangetekende brief? Al die keuzes zijn afhankelijk van wat je verstuurt. Die keuzes bepalen ook vaak de bezorgdienst die je kiest. Zodra je jouw post overhandigt aan de bezorger, regelt die de afhandeling: welke route er wordt genomen, langs welke postsorteercentra er wordt gereden, en hoe jouw poststuk wordt overhandigd aan de ontvanger. Wanneer de ontvanger het heeft ontvangen wordt éérst de post uitgepakt, en daarna pas geïnspecteerd op inhoud.
Tijdens het transport zijn er verschillende keuzes die worden gemaakt, en voor elk van die keuzes zou je een eigen ‘protocol’ kunnen opstellen. Bepalen wat je gaat versturen is de eerste stap. Je kan je voorstellen dat daar veel regels voor te bedenken zijn, afhankelijk van wat je wilt versturen. Denk bijvoorbeeld aan de standaardstructuur van een brief, of dat je computeronderdelen altijd in bubbelfolie verstuurt, of dat je een sticker op de doos doet voor breekbare spullen. De tweede stap is hoe je datgene gaat versturen. Hoeveel ga je ermee om dat iets beschadigt tijdens het transport, is het erg als een brief per ongeluk door de sorteermachine naar Timboektoe wordt gestuurd voordat hij in Lutjebroek terecht komt, wil je graag een bevestiging dat de brief is aangekomen? Bij de keuze voor een verzender komen ook veel afspraken kijken. Hoe bepaalt de transporteur welke route er wordt genomen? Hoe zorg je ervoor dat in een sorteercentrum alle inkomende post zo snel mogelijk weer in een vertrekkende vrachtwagen wordt geladen? Mag een vrachtwagen gaan rijden als die halfvol is, of moet je wachten? Hoe deel je zo’n vrachtwagen in? Moet je optimaal gebruik maken van de ruimte? En misschien zijn die regels ook weer anders afhankelijk van het type vervoer: een postduif kan je minder zwaar beladen dan een 747, hoewel het allebei vormen van luchttransport zijn.
Net zoals je het versturen van een brief in stappen kan onderverdelen, waarbij je voor elke stap eigen protocollen kan schrijven, kan je het verzenden van data tussen twee computers óók in stappen verdelen. Per stap zijn er meerdere protocollen waaruit een computer kan kiezen. Deze onderverdeling in stappen, waarbij elke stap één taak uitvoert, noemen we een protocol stack. Er zijn verschillende protocol stacks, maar de meest belangrijke is toch wel de TCP/IP Protocol Stack.
Waarom zijn er verschillende protocollen voor dezelfde taak?
Waarom is er niet één protocol voor elke taak die wordt uitgevoerd? Denk weer terug aan de situatie waarin je zelf iets wilt versturen. Afhankelijk van wat je wilt versturen gebruik je een envelop, een klein pakketje, of een grote doos. Als je van tevoren zou moeten kiezen voor één verpakking om al je verzendingen in te versturen, kom je in de problemen. Als je zeker wilt weten dat je altijd alles kan versturen is een koelkastdoos wel de beste optie - kleine kans dat je dan ruimte tekort komt. Maar ja, dat is wel een stuk duurder en je hebt bijna altijd loos verpakkingsmateriaal. En ja, 9 van de 10 keer is een envelop misschien wel voldoende, maar als je dan een koelkast wilt versturen moet je die eerst opknippen zodat die in een envelop past. En zet ‘m dan maar weer eens in elkaar! Kleine kans dat die nog werkt. Verschillende communicatieprotocollen stellen ons in staat om voor elke situatie het optimale protocol te kiezen.
-
Kurose, J.F., Ross, K.W. (2022). Computer Networking: A Top-Down Approach. Pearson ↩