Wat is Three-way handshake (drieweghandshake)?

De procedure waarmee een TCP-verbinding wordt opgebouwd. Drie uitwisselingen, de SYN van de client, de SYN+ACK van de server en de ACK van de client, bevestigen het initiële volgnummer van elke kant.

Japanse benaming: 3ウェイハンドシェイク

“Three-way handshake (drieweghandshake)” komt voor in 2 oefenvragen uit 1 onderwerpen, bijv. Basis van computernetwerken.

Vakgebied: Basis van computernetwerken

Wat de drie uitwisselingen doen

De client vraagt met een SYN om een verbinding en deelt zijn initiële volgnummer mee. De server antwoordt met een SYN+ACK, waarmee hij de ontvangst van dat nummer bevestigt en zijn eigen initiële volgnummer meedeelt. Wanneer de client dit met een ACK bevestigt, is in beide richtingen vastgesteld dat „de andere kant mijn nummer kent”, en kunnen gegevens worden verzonden. Het bevestigen van de nummers voorkomt foutieve verbindingen door oude pakketten die nog in het netwerk rondzwerven.

Tijd om verbinding te maken

Er verstrijkt minstens één rondetijd (RTT) voordat gegevens kunnen worden verzonden. HTTPS heeft daarna ook nog een TLS-handshake nodig, zodat een verzoek pas kan worden verstuurd na in totaal twee rondgangen bij TLS 1.3, of drie bij TLS 1.2. Hoe verder weg de server, hoe groter de RTT, dus het aantal rondgangen wordt verminderd door verbindingen te hergebruiken (persistente verbindingen) of door handshakes samen te voegen, zoals QUIC in HTTP/3 doet.

Afsluiten en SYN-floods

Het afsluiten van een verbinding kost meestal vier uitwisselingen, omdat elke richting apart met een FIN en een ACK wordt gesloten. Een aanval die grote aantallen SYN's met vervalste bronadressen stuurt, zodat de server half geopende verbindingen vasthoudt tot zijn middelen op zijn, heet een SYN-flood. Tegenmaatregelen zijn onder meer SYN-cookies, waarmee de server kan antwoorden zonder toestand bij te houden.

Nu oefenen: vragen over Three-way handshake (drieweghandshake)

Wat is bij de three-way handshake waarmee een TCP-verbinding wordt opgebouwd de juiste volgorde van de uitgewisselde pakketten?

  1. ASYN → ACK → FIN
  2. BACK → SYN → SYN+ACK
  3. CSYN → SYN+ACK → ACK
Antwoord en toelichting tonen

Antwoord: C. SYN → SYN+ACK → ACK

Bij de three-way handshake vraagt de client eerst met een SYN om een verbinding en deelt hij het eerste nummer mee van de gegevens die hij zal sturen (zijn initiële volgnummer). De server antwoordt met een SYN+ACK: hij bevestigt (ACK) de ontvangst daarvan en deelt tegelijk zijn eigen initiële volgnummer mee. Ten slotte stuurt de client een ACK terug, en zijn beide richtingen klaar. Door in drie uitwisselingen de nummers in beide richtingen te bevestigen, worden onder meer foutieve verbindingen door laat aangekomen oude pakketten voorkomen. Daardoor kost het bij TCP minstens één rondetijd (RTT) voordat gegevens kunnen worden verzonden. FIN wordt gebruikt om een verbinding te beëindigen.

Veelgestelde vragen

Waarom zijn er drie uitwisselingen nodig in plaats van twee?

Van het initiële volgnummer van elke kant moet worden bevestigd dat de andere kant het heeft ontvangen. Met maar twee uitwisselingen zou de server niet kunnen bevestigen dat zijn nummer de client heeft bereikt.

Heeft UDP een three-way handshake?

Nee. UDP bouwt geen verbindingen op en kan dus direct gegevens versturen. QUIC, dat op UDP draait, voert een eigen handshake uit die is gecombineerd met de cryptografische sleuteluitwisseling.

“Three-way handshake (drieweghandshake)” in de toelichting

Vragen met “Three-way handshake (drieweghandshake)” (2)

  1. Wat is bij de three-way handshake waarmee een TCP-verbinding wordt opgebouwd de juiste volgorde van de uitgewisselde pakketten?
  2. Een client maakt een nieuwe HTTPS-verbinding (TLS 1.3 over TCP) met een webserver met een rondetijd (RTT) van 100 ms. Welke waarde ligt het dichtst bij de tijd tot het antwoord op het eerste verzoek begint binnen te komen? De DNS-naamresolutie is al gedaan; verwaarloos de verwerkingstijd van de server en de overdrachtstijd van de gegevens.

Verwante termen

TLS (Transport Layer Security) DNS (Domain Name System) HTTP (Hypertext Transfer Protocol) ARP (Address Resolution Protocol) CIDR (Classless Inter-Domain Routing) CSMA/CA DHCP (Dynamic Host Configuration Protocol) MAC-adres NAT (Network Address Translation) OSI-referentiemodel

Naar de woordenlijst