Tcp ip protocol stack
TCP/IP Protocol Stack¶
Om communicatie mogelijk te maken tussen twee verschillende devices hebben we meer dan één protocol nodig. We hebben een protocol nodig wat regelt dat twee applicaties met elkaar kunnen communiceren, een protocol wat de route bepaalt tussen twee devices, en zelfs een protocol wat stelt hoe je een berichtje over een verbinding zoals een koperdraad of een ethernetkabel moet verzenden. De ‘stapel’ van protocollen waarmee we alle benodigde functionaliteiten hebben noemen we een protocol stack.
De meest-gebruikte protocol stack is tegenwoordig de TCP/IP Protocol Stack. De TCP/IP Protocol Stack is een implementatie van het OSI-model, een theoretisch model dat beschrijft welke ‘lagen’ er nodig zijn om succesvol te communiceren. De TCP/IP Protocol Stack bestaat uit vijf lagen: de application layer
, de transport layer
, de network layer
, de link layer
en de physical layer
.
Application Layer¶
Op de application layer
hebben we het over applicatieprotocollen
, het startpunt van elke communicatiesessie. Elke host heeft verschillende applicaties, of computerprogramma’s, die draaien. Zodra een applicatie
wilt gaan communiceren met een andere host
begint er een communicatiesessie. Om deze communicatie tussen applicaties soepel te laten verlopen wordt er gebruik gemaakt van gestandaardiseerde applicatieprotocollen
. De applicatieprotocollen beschrijven hoe je een bestandje moet formatteren zodat de ontvangende applicatie het correct uit kan lezen. Bekende protocollen op de applicatielaag zijn bijvoorbeeld HTTP
, HTTPS
, SMTP
, FTP
, DNS
of DHCP
. Een pakketje dat wordt verstuurd via de application layer
heet ook wel een message
.
Transport Layer¶
Een applicatieprotocol
beschrijft wat je gaat versturen. Op de transportlaag
wordt bepaald hoe je het pakketje wilt versturen. Op deze laag noemen we een verzonden pakketje ook wel een segment
, vaak omdat de messages
van de applicatielaag worden opgedeeld om ze beter te kunnen versturen. Er zijn twee belangrijke protocollen op deze laag: TCP
en UDP
. TCP
wordt gebruikt als je zekerheid wilt: zekerheid dat je pakketje goed wordt ontvangen, zekerheid dat de ontvanger de pakketjes in de juiste volgorde kan zetten, zekerheid dat het netwerk niet overbelast raakt.. Het biedt veel zekerheid, maar tegelijkertijd zorgt dit ook voor een tragere verzending. De tegenhanger is UDP
. UDP
is een stuk sneller, het heeft minder zogeheten overhead, maar je mist ook een hoop belangrijke aspecten van TCP
. Zo geeft UDP geen ontvangstbevestigingen, en is het aan de applicatie om de pakketjes weer in de juiste volgorde te zetten.
Vaak is er een vaste koppeling tussen het applicatieprotocol en het transportprotocol. Als een applicatie er bijvoorbeeld baat bij heeft dat pakketjes in de juiste volgorde binnenkomen, zoals bij een e-mail of website, dan gebruikt het TCP. Als snelheid van belang is, pakketjes niet in stukken worden geknipt omdat ze erg klein zijn, of er soms wat pakketjes mogen ontbreken, dan is UDP de beste optie.
Network Layer¶
Zodra bekend is welke applicaties met elkaar willen praten, en op welke manier het pakketje verzonden moet worden, is het tijd om de locatie van het pakketje én de route daarnaartoe te bepalen. Dit wordt gedaan op de network layer
. Op de network layer
verpakken we informatie in datagrams
. Om de locatie te bepalen gebruiken we IP-adressen: manieren om met cijfers (decimaal of hexadecimaal) individuele hosts op het Internet te identificeren. Een pakketje wordt verpakt in een IPv4 of een IPv6 pakket. Op de network layer zijn er 2 belangrijke taken: routing
, oftewel het bepalen van de route die een pakketje moet nemen over het Internet, en forwarding
, het bepalen per individuele router naar welke uitgang elk pakketje moet.
Op de netwerklaag is er nog één ander protocol wat belangrijk is om te benoemen: ICMP. ICMP wordt gebruikt om de status van de verschillende routes te bepalen. Een belangrijke implementatie van ICMP is bijvoorbeeld het ping-commando.
De netwerklaag is te vergelijken met een vervoersbedrijf: het bepaalt de route die wordt genomen tussen verzender en ontvanger, en welke distributiecentra er op die route worden aangedaan. Binnen zo’n distributiecentrum zorgt de netwerklaag ervoor dat een pakketje weer in de juiste truck, bus, of vliegtuig terechtkomt.
Link layer¶
Als laatste zijn er de link layer en de physical layer. Vaak worden deze twee lagen samengevoegd. De link layer zorgt ervoor dat een pakketje in het juiste format staat zodat het over een specifieke verzendingstechniek kan worden gestuurd. Er is altijd een fysiek verzendingsmiddel waarmee twee netwerkonderdelen met elkaar worden verbonden. Denk bijvoorbeeld aan Ethernet, WiFi, of Bluetooth. Elk medium waarover je data verstuurt heeft eigen vereisten hoe je dit verstuurt. De link layer zorgt ervoor dat elk pakketje wordt klaargezet voor het juiste medium. Zodra een pakketje wordt verzonden door de link layer, gaat het naar de volgende node in het netwerk. Dit duurt net zolang totdat het op plaats van bestemming is.