De TCP/IP protocolsuite

Iedere IP verbinding is herkenbaar aan de combinatie client ip-adres, client poortnummer, server ip-adres en server poortnummer.

TCP

TCP staat voor Transaction Control protocol. Bij dit type verbinding is er sprake van een connectie waarbij de status binnen het protocol gedefinieerd is. Een TCP connectie wordt opgebouwd in drie stappen. De client kiest een vrij poortnummer, doorgaans boven de 1023. De client probeert een connectie te maken naar een bekend, doorgaans laag, poortnummer op de server. Voorbeelden van bekende poortnummers zijn 80 voor HTTP, 23 voor Telnet en 22 voor SSH. De client stuurt een pakket waarbij de SYN-vlag is gezet naar het bekende poortnummer op de server en gebruikt daarbij het zojuist gekozen hoge poortnummer. Wanneer de server akkoord gaat met het opzetten van de connectie stuurt deze een pakketje met zowel de SYN-vlag als de ACK-vlag gezet terug naar het hoge poortnummer van de client. Dit pakket wordt weer door de client weer beantwoord met een ACK, echter zonder SYN. De connectie is nu tot stand gekomen. De status is nu ESTABLSHED.

     Client                     Server 

      SYN      ---> 
                     <---     SYN+ACK 
      ACK      ---> 

Het beëindigen van een connectie kan op twee manieren gebeuren. Een normale beëindiging vindt plaats wanneer de client een pakket stuurt waarbij de FIN en de ACK vlag gezet zijn. De server beantwoordt dit met een ACK of FIN+ACK.

     Client                     Server 

      FIN+ACK  ---> 
                     <---         ACK 
                     <---     FIN+ACK 
      ACK      ---> 

Een connectie kan ook beëindigd worden wanneer een van de partijen een pakket met de RST vlag stuurt. Dit gebeurt vaak wanneer na een periode van inactiviteit een van de partijen er van uit gaat dat de ander niet meer geïnteresseerd is in voortzetting van de connectie. maar ook wanneer een connectie om een of andere redden geweigerd wordt. Een RST wordt niet bevestigd met een ACK.

UDP

Bij UDP, User Datagram Protocol, is er op netwerk protocol niveau geen sprake van een connectie. De applicaties die dit protocol gebruiken zijn zelf verantwoordelijk voor het bewaken van de status en de kwaliteit van de verbinding. Net als bij TCP maakt de client doorgaans gebruik van een hoog poortnummer en de server van een bekend laag poortnummer.

ICMP

ICMP is het Internet Control Message Protocol. Het dient om berichten die verband houden met een goed functioneren van het IP protocol, of een van de bovenliggende protocollen, door te geven. Er zijn 18 verschillende bericht types, waarbinnen weer diverse bericht codes mogelijk zijn. De bekendste toepassing is het ping commando, dat een ICMP `echo request’ (type 8 code 0) stuurt. Een echo request wordt beantwoord door een `echo reply’ (type 0 code 0).

FTP

FTP is het File Transfer Protocol. Het maakt gebruik van TCP, net zoals HTTP of Telnet. Het bijzondere aan FTP is dat het gebruik maakt van meerdere connecties. Een client maakt contact met poort 21 op de server. Wanneer er data verkeer plaats moet vinden, dit kan een file upload of download zijn, maar ook het resultaat van een ls of dir, wordt er een aparte data connectie geopend. De client geeft daartoe aan de server een hoog poortnummer door waarop het de data connectie verwacht. De data connectie wordt opgezet door de server vanaf poort 20, naar het poortnummer dat de client doorgegeven heeft.

Een variant hierop is passive FTP. Hierbij geeft de server een hoog poortnummer op aan de client en opent de client de data connectie vanaf een hoog poortnummer naar de server.

Auteur: Bart Jan

Technisch specialst Informatiebeveiliging CISSP-ISSAP

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd met *