# Protocollen
We kennen nu reeds netwerkarchitecturen, laten we nu kijken naar de specifieke netwerkprotocollen die de communicatie tussen de verschillende lagen faciliteert. We delen deze protocollen op in verschillende lagen en dit vormt een netwerkarchitectuur.
Protocollen kunnen communiceren met de boven- en onderliggende lagen. Omdat de protocollen relatief ‘los’ staan van elkaar kunnen we deze ook makkelijk vervangen zonder een impact te hebben op de omliggende lagen en moet je weinig kennis hebben van de volledige stack.
Omdat deze lagen nogal abstract zijn overlopen we niet alle protocollen maar vooral de meest relevante op de applicatielaag. We bekijken ook het TCP op de transport laag en het IP op de netwerk laag.
# Applicatie laag
# FTP
Dit protocol laat toe bestanden te verzenden tussen twee systemen via TCP. FTP kan voor zowel het up- als downloaden van bestanden worden gebruikt en is niet alleen beperkt tot tekstbestanden maar ondersteund ook binaire bestanden. Voor het gebruik van FTP is een “login account” of anonymous toegang op een FTP-server nodig.

# HTTP
HTTP maakt het mogelijk om op een relatief eenvoudige manier multimedia bestanden bruikbaar te maken voor het Internet (tekst, foto’s, geluid, video, …). De kern van HTTP is dat het bestanden beheert die hyperlinks bevatten naar andere bestanden, die bij het selecteren een nieuwe transfer zullen veroorzaken. Om dit mogelijk te maken draaien alle webservers een HTTP daemon: een programma dat enkel en alleen tot taak heeft te wachten tot er HTTP aanvragen binnenkomen en deze daarna te behandelen.
HTTP-request
Een HTTP-request bestaat uit de request-soort, de URL, de headers en eventueel een inhoud. Een overzicht van de meest gebruikte HTTP-requests:
- GET
- POST
- PUT
- PATCH
- DELETE
Een request ziet er uit als volgt:
GET: /wiki/HTTP HTTP/1.1
Host: nl.wikipedia.org
Connection: close
User-Agent: Mozilla/5.0 (X11; U; Linux i686; rv:1.6)
Gecko/20040401 Debian/1.6-4
Accept:
text/xml,text/html,text/plain,image/png,image/jpeg,image/gif
Accept-Charset: ISO-8859-1,utf-8
Keep-Alive: 300
2
3
4
5
6
7
8
9
HTTP-response
Een HTTP-response bestaat uit een resultaat-code, headers en een body. Een overzicht van de meest voorkomende resultaat codes:
- 404 not found
- De pagina bestaat niet (meer). De webserver vindt het bestand niet.
- 403 forbidden
- De server laat je niet toe om deze pagina op te halen. Je hebt geen permissies.
- 500 internal server error
- “Catch-all” foutmelding. Is meestal als er iets onverwacht fout loopt, zoals te veel bezoekers, de servers die down zijn…
- 503 Service Unavailable
- Meestal door onderhoudswerken op de server.
- 504 Gateway Timeout
- Server to server timeout. Dit gebeurt wanneer de ene server de data niet op tijd ontvangt.
# HTTPS
Het HTTPS protocol is een beveiligde (versleutelde) versie van HTTP. HTTPS is een afkorting van Hyper Text Transport Protocol Secure. Alle gegevens die een web client en een web server uitwisselen worden nu versleuteld volgens de SSL standaard.
Met HTTPS is het nog steeds mogelijk dat andere Internet gebruikers de communicatie afluisteren, maar alle gegevens (denk aan credit card nummer en password) zijn onbruikbaar. Bovendien zou de software op zowel de server als de client het direct merken als de gegevens onderweg veranderd zijn.
# SMTP
SMTP is de de-facto standaard voor het versturen van e-mail over het internet. SMTP is een relatief simpel, tekstgebaseerd protocol: eerst wordt één of meerdere ontvangers van een e-mail gegeven, en daarna de tekst van het bericht.
SMTP dient niet om berichten van een server op te halen, enkel om berichten te versturen. Voor het ophalen van e-mail bestaat er POP3 en IMAP.
Eén van de beperkingen van het originele SMTP is dat er geen mogelijkheid is om na te gaan of de zender wel echt is wie hij beweert te zijn. Daarom werd de SMTP-AUTH-extensie ontwikkeld. Deze beperking wordt uitgebuit bij het versturen van spam waarbij een fictieve afzender bij een e-mail kan worden opgegeven. Hierdoor is spam nog steeds een groot probleem. Het SMTP-protocol grondig veranderen of vervangen door een compleet nieuw protocol wordt niet mogelijk geacht omdat het zo veelvuldig verspreid en geïmplementeerd is
# POP
Dit is een protocol dat gebruikt wordt om e-mail berichten effectief te downloaden van de server naar de cliënt en ze daar lokaal te beheren (in tegenstelling tot het lezen, bewerken en verzenden van op de server zelf) met de optie om de berichten al dan niet van de server te verwijderen, wat handig is indien men zijn e-mail vanaf meerdere plaatsen wil kunnen inkijken. POP3 kan met of zonder SMTP worden gebruikt.
De communicatie met de server die nodig is om de mail op te halen verloopt via het POP-protocol. Hiertoe dient op de server een zogenaamde POP-server te draaien, software die de mail van een bepaalde gebruiker over het netwerk kan sturen.
Het POP-protocol heeft als voordeel dat het aantal berichten dat je kunt opslaan gelijk is aan de opslagcapaciteit van je computer. Ook kun je berichten die op je computer zijn opgeslagen bekijken, zonder dat een internetverbinding noodzakelijk is. Echter, het lezen van je e-mail op verschillende computers of e-mailprogramma’s zal voor problemen zorgen. Bovendien loop je het risico e-mail kwijt te raken als je harde schijf crasht.
# IMAP
Dit lijkt sterk op POP maar in tegenstelling tot POP zullen bij IMAP de mails op de server blijven staan.
IMAP lost de nadelen van POP op: je kunt meerdere applicaties gebruiken om dezelfde inbox te benaderen en je e-mail blijft bewaard als je computer crasht. Echter is het iets lastiger om je e-mail offline te lezen, omdat de e-mail op de server staat. Je hebt dus een internetverbinding nodig. Bovendien gebruikt e-mail opslagruimte van je webruimte.
# Transport laag
# TCP
TCP is een “betrouwbaar” protocol, in die zin dat het garandeert dat een transmissie volledig is bezorgd bij de cliënt door middel van foutcontrole en handshaking. Handshaking is een systeem waarbij beide zijden van de transmissie elkaar op de hoogte stellen van het al dan niet verzenden/ontvangen van pakketten.
Meestal kan ieder TCP segment in één IP datagram (pakket) verzonden worden, indien nodig zal TCP een segment opsplitsen in meerdere IP datagrammen (gefragmenteerde pakketten) zodat deze compatibel blijven met de fysieke dataframes van de bitstream. TCP/IP garandeert echter niet dat de datagrammen in dezelfde volgorde zullen worden ontvangen als ze zijn verzonden. Dan moet TCP ze opnieuw gaan samenstellen bij de bestemming om een ononderbroken datastroom te verwezenlijken.
TCP zorgt voor de connectie tussen beide zijden van een transmissie en gebruikt checksums. Checksums zijn wiskundige berekeningen op de data die een getal binnen een vast bereik opleveren die dan aan beide zijden worden opgemaakt en vergeleken. Daarom vormt het de basis voor FTP.
# Netwerk laag
# IP
IP verzorgt de packet routing: het kiezen van de juiste en meest efficiënte weg van de zender naar de ontvanger via de verschillende routers. Routers zorgen ervoor dat verschillende netwerken aan elkaar worden gelinkt om zo een intranet of het Internet te vormen. Iedere router waarlangs een pakket passeert wordt een hop genoemd, omdat het pakket van het ene netwerk naar het andere “springt” (Eng:to hop).
Een IP pakket bevat altijd een bron- en een bestemmingsadres. Iedere gateway of router bekijkt het bestemmingsadres en zendt het pakket op de meest efficiënte manier over het netwerk naar de eindbestemming. Ieder systeem in hetzelfde TCP/IP-netwerk moet een uniek adres hebben. Een IP-adres is 32 bits lang. Iedere router wordt normaal handmatig geconfigureerd om aan de hand van het bestemmingsadres het pakket naar het juiste netwerk door te verwijzen.
Het IP valt te vergelijken met de post: de brieven worden eerst gecheckt op de naam van de gemeente en naar een centraal punt in die gemeente gestuurd. Daar worden ze verder onderverdeeld in deelgemeenten, wijken en straten om uiteindelijk bij de juiste persoon in de bus te vallen. TCP is dan een aangetekende brief, UDP een gewone. IP is in principe het meest fundamentele protocol van TCP/IP.