Hfd 3 Flashcards
Transport laag
Voorziet in logical communication tussen applicaties die op verschillende hosts runnen. Applicaties gebruiken de logische communicatie van de transportlaag om elkaar te berichten. Protocollen alleen in endsystems, niet in netwerkrouters.
Segments
Transport-layer packets, klein gemaakte messages, verpakt in header.
Worden de netwerklaag ingestuurd om daar verpakt te worden tot datagrammen.
Netwerk routers lezen alleen de datagrammen niet de segmenten.
Transport vs netwerklaag
Transportlaag | logische communicatie tussen processen die op verschillende hosts lopen (de kinderen die alle brieven in huis weer verdelen/verzamelen onder de rest)
Leeft in endsystem, levert bericht alleen af naar network edge.
Netwerklaag | logische communicatie tussen de hosts zelf (de postal service)
Leeft in de networkcore.
UDP
User Datagram Protocol
Unreliablr, connectionless service
Voorziet alleen in 2 basis services van transport-laser services; process-to-process data delivery & error checking
Bijvoorbeeld gebruikt door DNS
TCP
Transmission Control Protocol
Reliable, connection-oriented service
Voorziet in 2 basis services van transport-laser services; process-to-process data delivery & error checking
Daarnaast ook reliable data transfer, congestion control.
TCP connectie is een logische connectie, geen fysieke. Dus onzichtbaar voor routers, switches, etc. Zij zien gewoon een datagram
Transport-layer multiplexing
Aka demultiplexing
Demultiplexing
Het afleveren van data in segment door de juiste socket.
Gedaan door de header die rond de message zit.
Multiplexing
Het verzamelen van data chunks van de host, om deze in te pakken in headers die data bevatten over de poort waar t naartoe moet.
Message wordt segment
Source port number field
Deel van de header die afkomst definieert dmv poort nummer
Destination port number field
Deel vd header die definieert naar waar de data moet dmv een poort nummer
Port numbers
Een 16-bit nummer van 0-65535
0-1023 zijn well-known poortnummers, zijn gereserveerd voor bekende applicatie protocollen zoals HTTP en FTP
bind()
Om na het creëeren van een socket in python dmv
clientSocket = socket(AF_INET, SOCK_DGRAM)
Een specifieke poort (19157) toe te kennen aan de applicatie dmv
clientSocket.bind((‘’, 19157))
TCP demultiplexing
Through a TCP socket
Identified by a Four-tuple met IPadres, source port number, destination IP & destination port numbet
UDP vs TCP demultiplexing
UDP
Heeft alleen bestemmings informatie, waardoor 2 segmenten van verschillende hosts dezelfde socket in kunnen
UDP verbinden socket
clientSocket = socket(AF_INET, DGRAM)
clientSocket.bind((‘’, 19175))
TCP
Bevat zowel bestemming als host info. Dus segmenten die aankomen van verschillende hosts of met verschillende bestemmingen zullen in andere socket eindigen
Verbinden welcoming socket, port 12000
clientSocket = socket(AF_INET, SOCK_STREAM)
clientSocket.connect((serverName,12000))
Nieuwe socket gemaakt door server, met de 4 eigenschappen van t gestuurde segment als eisen
connectionSocket, addr = serverSocket.accept()
Connectionless
Zonder handshake zenden en ontvangen in de transportlaag. UDP
Waarom wel kiezen voor UDP
Meer controle over welke data verstuurd wordt vanuit de application-layer en wanneer (TCP is meer bezig met congestion-control dus soms moet t wachten)
Dus handig voor applicaties met minimum sending rate, zonder dat teveel vertraging mag en wanneer de wel wat data-loss kunnen incasseren.
Dingen als netflix & teams bellen
UDP is sneller, want geen handshake nodig. Begint gelijk met zenden.
TCP onderhoudt allerlei parameters om de reliability te kunnen beloven tijdens een connectie. UDP doet dit niet. Hierdoor kan een server, overgeleverd aan een specifieke applicatie, meer actieve gebruikers dienen.
UDP heeft minder packet overhead (8vs20)
UDP segment structure
|———32 bits ———|
Source port - dest. port
Length - checksum
Application data (message)
Checksum
Biedt error-detection
UDP :
10110101
10000110
—————+
00111011
Wanneer het meest linker cijfer overflow heeft, gaat deze carry-bit (de bit die je naar bovenliggende som meeneemt) verloren
Dan is het tijdvoor de 1s complement. Dit betekend dat alle 1en een 0 worden en andersom. Checksum wordt dus
11000100
Aan de ontvangende kant worden alle 3 de 16-bit pakketjes toegevoegd (incl) checksum. Deze moeten dan op 1111111 uitkomen. Zit er een 0 in, dan fout.
End-end principle
Gezien sommige functionaliteiten geimplementeerd moeten worden van eind tot eind, worden deze functionaliteiten overbodig in lower levels, zoals error checking
Connection-oriented
Wanneer een applicatie proces niet kan beginnen zonder handshake. Zoals bij TCP.
Full-duplex service
TCP connectie tussen van proces A in een host naar proces B in een andere. Dan kan applicatie-data van A naar B, terwijl op hetzelfde moment data terug kan van B naar A
Point-to-point
TCP connectie zend van 1 verzender naar 1 ontvanger. Multicasten (het tegelijk verzenden naar meerdere ontvangers) is niet mogelijk in TCP.
TCP connection handshake
Client proces laat client transport-layer weten dat hij connectie wil maken
- Hierna stuurt de TCP in client een speciaal segment naar server proces, zonder payload met SYN bit set to 1. Het kiest een random initial sequence number
- Deze stuurt dan weer een speciaal segment terug, zonder payload met SYN=1 en initial sequence nummer +1 en een eigen initial sequence nummer (SYNACK segment)
- Uiteindelijk stuurt de client een derde segment, waarin initial server sequence number +1 SYN=0 en kan data gaan bevatten (connection-granted segment)
Send buffer
De buffer aan de clientkant van de TCP connectie. Eens in de zoveel tijd pakt TCP een stuk data uit de buffer en stuurt m door.
MSS
Maximum segment size. Hoeveel data per keer uit de sendbuffer gepakt kan worden om te verturen.
Bepaald door te kijken hoeveel data er past binnen de MTU rekening houdend met encapsulation. Door typische MTU van 1500 bytes en TCP/IP header lengte van 40 bytes, meestal 1460 bytes
MTU
Maximum transmission unit. De lengte van het grootste link-layer frame dat verstuurd kan worden door de lokale sending host.
Typische MTU voor ethernet en PPP link-layer protocols = 1500 bytes
Segment structuur TCP
Header velden en applicatie-laag data.
Header data in TCP;
- source & destination portnr (as in UDP)
- checksum field (as in UDP)
- sequence & acknowledgement number field
- receive window (indicator voor hoeveel bytes een ontvanger wil accepteren)
- header field lenght (geeft lengte van de header aan. Kan verschillen door niet verplichte option field. Als deze 0, dan header 20 bytes)
- option field (optioneel. Voor o.a. onderhandelen over MSS, scherm scaling factor of time-stamp)
- flag field (ACK bit voor valideren acknowledgement field. RST, SYN & FIN bits voor connection set-up en afbreek. PSH bit verteld data data onmiddelijk naar bovenste laag moet. URG bit verteld dat er ‘urgente’ data in dit segment zit, einde van de urgente data aangegeven in Urgent Data Pointer Field)
In praktijk worden de laatste 3 genoemden niet gebruikt.
Sequence & acknowledgement number fields
Deel van de reliable data transfer service.
Sequence number van segment = de byte stream number van de eerste byte in het segment (zorgt in essentie voor het juist identificeren, ordenen en verwerken van de verschillende segmenten van een groter stuk data)
Aknowledgement number = een nummer voor het bevestigen van succesvol ontvangen gegevens, ondersteunt betrouwbare gegevensoverdracht en foutcorrectie
Cumulative acknowledgements
Want de acknoledgement number geeft aan dat alle segmenten tot dat sequence nummer aan toe goed zijn ontvangen.
Cumulatief = de som van alle delen vanaf de start van een proces op een bepaald moment.
What to do with out of order received segments?
Niets over vastgelegd. Programmeur kan kieze voor;
(1) het direct weggooien van out of order bytes of
(2) out of order byte bewaren en wachten om de missende
In praktijk wordt optie 2 vaak gekozen. Effectiever.
Telnet
Protocol voor inloggen. Werd veel gebruikt, tegenwoordig vaak vervangen voor SSH, want gebruikt geen encription.
Piggybacked
Wanneer een acknowledgement number gekoppeld is aan een nieuw bericht van de ontvanger
Eind TCP connectie
Of de client of de server kan dit beginnen. Stuurt dan een speciaal segment met FIN=1. De ander stuurt dan een bevestiging om vervolgens zelf een speciaal segment met FIN=1 te sturen. Hierna rest alleen nog de bevestiging van de initiator.
TCP states
Verscheidene staten waarin het TCP protocol zich kan bevinden.
Bijvoorbeeld | closed - syn_sent - established - fin_wait_1 - fin_wait_2 - time_wait - closed
Hoe TCP als portnr’s of IP niet matchen?
Als segment ontvangen wordt met niet-matchende port, dan stuurt een special reset segment terug door RST bit =1 (voor UDP dmv speciaal ICMP datagram)
Nmap port-scanning
Een tool die scant of een port packets ontvangt, vaak gebruikt in cyberattacks
Tool stuurt TCP SYN segment naar bepaalde poort. 3 reacties mogelijk;
(1) tool krijgt een TCP SYNACK segment terug, dan is destination te bereiken (en eventueel aanval te beginnen)
(2) TCP RST terug, dan segment verstuurd alleen niet juiste port. Wel overgekomen, dus geen firewall
(3) niets terug, waarschijnlijk geblocked door firewall en nooit target gevonden
DNS services
Hostname naar IP vertaling
Host aliasing
Mail server aliasing
Load distribution
Waarom niet centraliseren DNS
Single point failure
Volume van t verkeer
Afstand tot database
Onderhoudt