Wat is TCP (Transmission Control Protocol)?

Verbindingsgericht protocol van de transportlaag. Het bouwt een verbinding op met een three-way handshake en levert gegevens met volgnummers, ontvangstbevestigingen (ACK's) en hertransmissie in de juiste volgorde af, zonder gaten of duplicaten. Flowcontrol en congestiebeheersing regelen hoeveel het verstuurt. Het draagt onder meer webverkeer via HTTP/1.1 en HTTP/2, e-mail en SSH.

Japanse benaming: TCP

“TCP (Transmission Control Protocol)” komt voor in 21 oefenvragen uit 3 onderwerpen, bijv. Basis van computernetwerken, Netwerkontwerp en -beheer, Basis van webtechnologie.

Vakgebied: Basis van computernetwerken

Hoe TCP aflevering garandeert

TCP geeft elke byte die het verstuurt een doorlopend nummer, het volgnummer. De ontvanger stuurt een ontvangstbevestiging (ACK) terug die in feite zegt: stuur me hierna de gegevens vanaf dit nummer. Komt er binnen een vastgestelde tijd geen ACK, dan verstuurt de zender de gegevens opnieuw (hertransmissie na time-out). Ontvangt hij drie ACK's met hetzelfde nummer (dubbele ACK's), dan verstuurt hij opnieuw zonder op de time-out te wachten (fast retransmit). De ontvanger zet gegevens die in de verkeerde volgorde aankomen weer op volgorde, gooit duplicaten weg en spoort met een checksum beschadigde gegevens op. Voor de applicatie zien de gegevens eruit als een doorlopende bytestroom zonder berichtgrenzen.

Vensters bepalen hoeveel er wordt verzonden

De zender mag tot een venster aan gegevens versturen voordat hij op ACK's moet wachten. De vrije bufferruimte volgen die de ontvanger meldt (het ontvangstvenster) is flowcontrol; het congestievenster van de zender laten groeien en krimpen naargelang de drukte in het netwerk is congestiebeheersing. De zender gebruikt het kleinste van de twee. Omdat per rondgangstijd (RTT) maar één venster aan gegevens kan worden verzonden, is de doorvoer ruwweg venster ÷ RTT. Met een venster van 64 KB en een RTT van 100 ms ligt de bovengrens bijvoorbeeld rond 5 Mbit/s, dus snelle verbindingen over grote afstand vertrouwen op de optie window scale om grotere vensters mogelijk te maken.

Header en verbindingsbeheer

Een TCP-header is zonder opties 20 bytes. Hij bevat het bron- en bestemmingspoortnummer, het volgnummer, het bevestigingsnummer, vlaggen zoals SYN, ACK, FIN en RST, de venstergrootte en een checksum. Een verbinding wordt geïdentificeerd door vier waarden: het bron- en bestemmings-IP-adres en de bijbehorende poortnummers. Ze begint met een three-way handshake en wordt gesloten wanneer elke richting een FIN verstuurt. Gaat één segment verloren, dan kunnen latere gegevens niet aan de applicatie worden doorgegeven, ook al zijn ze aangekomen (head-of-line blocking), wat een van de redenen is dat HTTP/3 in plaats daarvan QUIC over UDP gebruikt.

Nu oefenen: vragen over TCP (Transmission Control Protocol)

Tot welke laag van het TCP/IP-model met vier lagen behoren TCP en UDP?

  1. AApplicatielaag
  2. BInternetlaag
  3. CTransportlaag
Antwoord en toelichting tonen

Antwoord: C. Transportlaag

Het TCP/IP-model wordt van onder naar boven beschreven met vier lagen: de linklaag (netwerkinterfacelaag), de internetlaag, de transportlaag en de applicatielaag. TCP en UDP zijn protocollen van de transportlaag; met poortnummers onderscheiden ze voor welke applicatie op een eindapparaat het verkeer bestemd is. IP in de internetlaag zorgt ervoor dat pakketten van eindapparaat naar eindapparaat worden bezorgd. HTTP en DNS zijn protocollen van de applicatielaag. Vergeleken met het OSI-referentiemodel komt de transportlaag overeen met laag 4 en de internetlaag met laag 3.

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

Wat is het verschil tussen TCP en UDP?

TCP bouwt een verbinding op en levert gegevens betrouwbaar af met ontvangstbevestigingen, hertransmissie en volgorderegeling. UDP heeft geen verbindingsopbouw en geen hertransmissie en verstuurt eenvoudig datagrammen, zodat de header kleiner is en er minder vertraging bijkomt. TCP wordt gebruikt waar volledigheid telt, zoals bij het web en bestandsoverdracht; UDP waar weinig vertraging belangrijker is dan af en toe een verlies, zoals bij spraakgesprekken, en voor korte uitwisselingen zoals DNS-query's.

Wanneer verstuurt TCP gegevens opnieuw?

Er zijn twee aanleidingen: er komt geen ACK binnen de hertransmissietime-out, die wordt berekend uit gemeten RTT's, of er komen drie dubbele ACK's met hetzelfde bevestigingsnummer achter elkaar, wat fast retransmit in gang zet. Blijven hertransmissies mislukken, dan wordt de time-out telkens verdubbeld.

Waarom is de doorvoer van TCP lager dan de snelheid van de verbinding?

Per rondgangstijd kan hooguit één venster aan gegevens worden verzonden, dus de doorvoer daalt naarmate de afstand tot de andere kant groeit of het venster krimpt. Ze daalt ook wanneer pakketverlies de congestiebeheersing het venster laat verkleinen, of wanneer de ontvangende applicatie de gegevens traag leest.

“TCP (Transmission Control Protocol)” in de toelichting

Vragen met “TCP (Transmission Control Protocol)” (21)

  1. Tot welke laag van het TCP/IP-model met vier lagen behoren TCP en UDP?
  2. Wat is bij de three-way handshake waarmee een TCP-verbinding wordt opgebouwd de juiste volgorde van de uitgewisselde pakketten?
  3. 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.
  4. Wat is bij de flowcontrol van TCP het doel ervan dat de ontvanger zijn venstergrootte (ontvangstvenster) aan de zender meldt?
  5. Een TCP-verbinding heeft een vast ontvangstvenster van 65.536 bytes en een RTT van 10 ms. De bandbreedte van de lijn is ruim voldoende en er is geen verlies. Welke waarde ligt het dichtst bij de bovengrens van de doorvoer van deze verbinding?
  6. Welke beschrijving van het basisidee van congestiebeheersing bij TCP is juist?
  7. Wat is voor een TCP-zender de aanleiding om een segment als verloren te beschouwen en opnieuw te verzenden?
  8. Over Ethernet van 1 Gbit/s worden doorlopend TCP-gegevens verzonden in IP-pakketten die de MTU van 1500 bytes volledig vullen. Neem de IPv4-header als 20 bytes, de TCP-header als 20 bytes, de Ethernet-header en de FCS samen als 18 bytes, en de preamble en de ruimte tussen frames (interframe gap) samen als 20 bytes. Welke waarde ligt het dichtst bij de bovengrens van de doorvoer van applicatiegegevens?
  9. Vier links van 1 Gbit/s tussen twee switches worden met linkaggregatie gebundeld tot één logische link. Frames worden verdeeld met de gangbare methode die per combinatie van bron- en doeladressen en poortnummers (per flow) een link kiest. Welke waarde ligt het dichtst bij de maximale doorvoer die één TCP-verbinding kan halen?
  10. Een router die NAPT uitvoert (extern adres 198.51.100.7), is ingesteld met port forwarding, een statische instelling die alleen de bestemming vertaalt: „verkeer dat binnenkomt op externe TCP-poort 8080 doorsturen naar poort 80 van de interne webserver 192.168.1.20”. Wanneer host 203.0.113.9 op het internet vanaf bronpoort 51000 verbinding maakt met poort 8080 van 198.51.100.7, wat zijn dan de bestemming en de bron van de pakketten die de webserver ontvangt?
  11. Op een interface van een router is een ACL ingesteld die inkomende pakketten van boven af controleert. Regel 1 is „verkeer naar TCP-poort 443 van 10.0.0.10 toestaan”, regel 2 is „al het verkeer van bron 192.168.1.0/24 weigeren” en regel 3 is „verkeer van bron 192.168.0.0/16 naar TCP-poort 80 toestaan”; andere regels zijn er niet. Welke keuze noemt van de vier pakketten (i) „van 192.168.1.5 naar TCP-poort 443 van 10.0.0.10”, (ii) „van 192.168.1.5 naar TCP-poort 80 van 10.0.0.20”, (iii) „van 192.168.2.5 naar TCP-poort 80 van 10.0.0.20” en (iv) „van 192.168.2.5 naar TCP-poort 22 van 10.0.0.20” alle pakketten die worden doorgelaten?
  12. Een apparaat communiceert via een site-to-site-VPN-tunnel met een verre webserver. TCP-verbindingen kunnen worden opgebouwd en kleine pagina's laden, maar downloads van grote bestanden blijven halverwege steken. De MTU in de tunnel is 1400 bytes, en de server verstuurt pakketten van 1500 bytes waarbij fragmentatie verboden is (de DF-bit op 1). De firewall voor de server is bovendien zo ingesteld dat hij alle ICMP weggooit. Wat is de meest waarschijnlijke oorzaak?
  13. Van een webserver met een RTT van 40 ms worden één HTML-bestand en de vier afbeeldingen waarnaar het verwijst na elkaar opgehaald. Neem aan dat het opzetten van een TCP-verbinding één rondgang kost en elk verzoek met antwoord één rondgang, en verwaarloos de overdrachtstijd van de gegevens, de verwerkingstijd van de server, TLS en het afbreken van verbindingen. Wat is het verschil in totale tijd tussen het openen van een nieuwe TCP-verbinding voor elk object en het hergebruiken van één TCP-verbinding (een persistente verbinding)?
  14. 1,5 MB tekstgegevens worden met gzip tot een derde van de grootte gecomprimeerd en verzonden. De bandbreedte is 10 Mbit/s en de RTT is 100 ms, en voordat het verzenden van de gegevens begint, kosten de TCP-verbinding, de TLS-handshake en het HTTP-verzoek samen drie rondgangen. Neem 1 MB = 10^6 bytes en verwaarloos de tijd voor compressie en decompressie, de headers en het wachten door de congestiebeheersing van TCP. Welke waarde ligt het dichtst bij de tijd tot alle gegevens zijn ontvangen?
  15. Welke laag van het OSI-referentiemodel gebruikt logische adressen zoals IP-adressen om pakketten tussen verschillende netwerken door te sturen tot ze hun bestemming bereiken?

Vergelijkingen met deze term

Verwante termen

Pakket (packet) HTTP (Hypertext Transfer Protocol) RTT (round-trip time) Router IP (internetprotocol) UDP (User Datagram Protocol) DNS (Domain Name System) Poortnummer TLS (Transport Layer Security) QUIC

Naar de woordenlijst