Wat is TCP?

TCP (Transmission Control Protocol) is het verbindingsgerichte transportprotocol van de internetprotocolstack dat gegevens tussen twee applicaties betrouwbaar, volledig en in de juiste volgorde aflevert, door elke byte te nummeren, ontvangst te laten bevestigen en verloren segmenten opnieuw te versturen. TCP werkt bovenop IP op laag 4 (de transportlaag) van het OSI-model en is sinds 1981 een internetstandaard. In OT-netwerken draagt TCP het verkeer tussen SCADA, PLC’s, HMI’s, Historian-systemen en engineeringstations, bijvoorbeeld bij Modbus TCP, OPC UA, S7-communicatie en HTTP.


🕰️ Waar komt TCP vandaan?

Vint Cerf en Bob Kahn beschreven het protocol in mei 1974 in het artikel A Protocol for Packet Network Intercommunication. In 1978 werd het oorspronkelijke ontwerp gesplitst in TCP (betrouwbaar transport) en IP (adressering en routering), zodat toepassingen die geen betrouwbaarheid nodig hebben, zoals spraak, direct op IP konden draaien; daaruit ontstond later UDP. Op 1 januari 1983 stapte het ARPANET officieel over op TCP/IP.

Jaar Mijlpaal
1974 Cerf en Kahn publiceren het ontwerp van het Transmission Control Protocol
1978 Splitsing in TCP en IP
1981 RFC 793 legt TCP vast als standaard
1983 ARPANET schakelt over op TCP/IP
2007 RFC 4987 beschrijft SYN-flood-aanvallen en tegenmaatregelen
2022 RFC 9293 vervangt RFC 793 als actuele specificatie (STD 7)

🧠 Hoe werkt TCP?

Een TCP-verbinding doorloopt drie fasen:

  1. Opbouw met de 3-way handshake - de client stuurt SYN, de server antwoordt met SYN-ACK en de client bevestigt met ACK. Beide kanten kiezen daarbij een willekeurig startvolgnummer (initial sequence number), wat het raden van volgnummers door aanvallers bemoeilijkt.
  2. Gegevensoverdracht - data gaat in genummerde segmenten over de lijn. De ontvanger bevestigt met ACK’s tot welke byte alles binnen is. Blijft een bevestiging uit, dan verstuurt de zender het segment opnieuw. Een checksum over header en data detecteert beschadigde segmenten, die worden weggegooid en opnieuw verstuurd. TCP corrigeert fouten dus niet zelf, maar herstelt ze door hertransmissie.
  3. Afbouw - elke kant sluit zijn eigen richting met FIN en ACK, meestal in vier segmenten. De kant die als eerste sluit blijft daarna enige tijd in de toestand TIME-WAIT (2 × de maximale segmentlevensduur, volgens de standaard 4 minuten) om late segmenten op te vangen.

Daarnaast regelt TCP twee vormen van doorstroming. Flow control via het ontvangstvenster voorkomt dat een snelle zender een trage ontvanger, zoals een kleine PLC, overspoelt. Congestion control remt de zender af zodra het netwerk pakketten verliest, zodat één verbinding niet het hele netwerk verstopt.


🔧 Welke technische waarden zijn belangrijk?

Kenmerk Typische waarde Betekenis in de praktijk
Poortnummer 16 bit (0–65535) Bepaalt welke applicatie het verkeer ontvangt, bijvoorbeeld 502 voor Modbus TCP
Headergrootte 20 bytes, met opties tot 60 bytes Overhead per segment
MSS op Ethernet 1460 bytes (1500 MTU − 20 IP − 20 TCP) Maximale hoeveelheid data per segment
Standaard-MSS zonder optie 536 bytes (IPv4) Terugvalwaarde voor oude of beperkte apparaten
Initiële hertransmissietimer 1 seconde (RFC 6298) Eerste wachttijd voordat een segment opnieuw wordt verstuurd; daarna steeds verdubbeld
TIME-WAIT 2 × MSL, in de standaard 4 minuten Poort blijft na afsluiten bezet; Linux gebruikt bijvoorbeeld een vaste 60 seconden
Keepalive Standaard uit; indien aan pas na 2 uur stilte Detecteert dode verbindingen, maar veel te traag voor procesbewaking

Die waarden verklaren veel storingen in de praktijk. Een verloren segment kost minimaal de hertransmissietijd, die bij herhaald verlies oploopt tot seconden. Bij doorlopend verkeer herstelt TCP sneller met fast retransmit na drie dubbele ACK’s (RFC 5681), maar bij een losse SCADA-poll ontbreekt dat vervolgverkeer en wacht de zender op de timer. Ook het Nagle-algoritme (RFC 896), dat kleine berichten bundelt, kan in combinatie met vertraagde ACK’s tientallen tot honderden milliseconden vertraging geven; daarom zetten veel industriële stacks de optie TCP_NODELAY aan.


🏭 Welke industriële protocollen gebruiken TCP?

Vrijwel elk modern OT-protocol dat geen harde realtime eisen stelt, draait op TCP. Meetwaarden van sensoren bereiken SCADA en historian meestal via een PLC of gateway die een van deze protocollen spreekt:

Protocol TCP-poort Typisch gebruik
Modbus TCP 502 (beveiligd: 802 met TLS) Uitlezen en schrijven van registers in PLC’s, regelaars en meters
OPC UA 4840 (opc.tcp), 4843 voor TLS Data-uitwisseling tussen PLC’s, SCADA, MES en historian
S7 Comm 102 (ISO-on-TCP) Siemens-PLC’s programmeren en uitlezen
IP 44818 (expliciete berichten) Configuratie en diagnose; cyclische I/O loopt via UDP 2222
IEC 60870-5-104 2404 Telecontrol in elektriciteitsnetten
DNP3 20000 Telemetrie in water en energie
IEC 61850 (MMS) 102 Stationsautomatisering
MQTT 1883, 8883 met TLS IIoT-telemetrie via een broker

Daarnaast verlopen webservers op componenten, HTTPS, SSH, engineeringsoftware en verbindingen via VPN, Remote Access of een Jump Server vrijwel altijd over TCP. Voor deterministische I/O wordt TCP juist vermeden: ProfiNET RT gebruikt een eigen Ethertype direct op Ethernet, en EtherNet/IP gebruikt UDP voor cyclische data.


🔄 Wat is het verschil tussen TCP en UDP?

Aspect TCP UDP
Verbinding Verbindingsgericht, met handshake Verbindingsloos
Betrouwbaarheid Bevestiging, hertransmissie en volgorde Best effort, geen hertransmissie
Overhead Header van 20–60 bytes Header van 8 bytes
Gedrag bij verlies Vertraging door hertransmissie Data gaat verloren, geen vertraging
Gebruik in OT Configuratie, SCADA-polling, historian, engineering Cyclische I/O, tijdsynchronisatie, monitoring
Voorbeelden Modbus TCP, OPC UA, HTTP SNMP, PTP (ook direct op Ethernet), Syslog (klassiek), VoIP

De keuze is een afweging: TCP garandeert dat elk commando aankomt, maar kan bij pakketverlies onvoorspelbare latentie veroorzaken. Syslog draait klassiek over UDP, maar kan voor betrouwbare logging ook over TCP met TLS.


🔐 Hoe beveiligt u TCP-verkeer in OT?

TCP zelf biedt geen authenticatie of encryptie. Wie op het netwerk meekijkt, kan verkeer lezen, en wie verbinding kan maken met poort 502, kan bij standaard Modbus registers schrijven. Dat bleek in januari 2024 bij FrostyGoop: die malware stuurde via Modbus TCP opdrachten naar regelaars van een warmtebedrijf in Lviv, waarna ruim 600 flatgebouwen twee dagen zonder verwarming zaten. Belangrijke maatregelen:

  • Versleutelen - gebruik TLS, Modbus/TCP Security of de beveiligingsmodi van OPC UA; anders een VPN-tunnel tussen locaties
  • Poorten beperken - laat via een Firewall of industriële firewall en ACL’s alleen de benodigde TCP-poorten tussen bekende systemen toe; protocolfiltering kan schrijfopdrachten blokkeren
  • Apparaten beperken - Port Security op switches bepaalt welke apparaten op een switchpoort mogen; dit gaat over fysieke poorten, niet over TCP-poorten
  • Segmenteren - scheid zones volgens IEC 62443 met netwerksegmentatie en een DMZ; maak OT-poorten nooit direct vanaf internet bereikbaar
  • Monitoren - volg TCP-verbindingen met netwerkmonitoring, een IDS en SIEM; nieuwe verbindingen naar poort 102 of 502 zijn vaak een signaal
  • SYN-floods opvangen - een SYN-flood vult de wachtrij met half-open verbindingen; SYN-cookies, rate limiting en DDoS-bescherming beperken dit, maar kleine PLC-stacks kunnen al bij lage aantallen vastlopen

In industriële netwerken zijn Segmentatie en Logging van TCP-verkeer essentieel voor beveiliging en troubleshooting. Ze sluiten aan bij de zorgplicht uit NIS2 en de Cyberbeveiligingswet om passende maatregelen voor netwerkbeveiliging te nemen.


🛠️ Hoe lost u TCP-problemen in een OT-netwerk op?

  1. Controleer de verbinding - komt de handshake tot stand? Een RST direct na SYN betekent meestal dat de poort dicht is; geen antwoord wijst op een firewall of routeringsprobleem.
  2. Leg verkeer vast - met Wireshark op een mirrorpoort ziet u hertransmissies, duplicate ACK’s en zero-window-meldingen van een overbelaste PLC.
  3. Let op het aantal verbindingen - veel PLC’s accepteren maar een handvol gelijktijdige TCP-verbindingen. Een extra SCADA-client of scanner kan legitieme verbindingen verdringen.
  4. Stem time-outs af - zet de time-out van de SCADA-driver ruim boven de hertransmissietijd en gebruik applicatie-heartbeats of korte keepalives, zodat een weggevallen verbinding binnen seconden opvalt.
  5. Wees voorzichtig met scannen - actieve poortscans met veel SYN-pakketten kunnen oudere apparaten laten vastlopen; plan ze in een onderhoudsvenster.

❓ Veelgestelde vragen

Op welke laag van het OSI-model werkt TCP?

TCP werkt op laag 4, de transportlaag van het OSI-model, bovenop IP op laag 3. TCP regelt de betrouwbare overdracht tussen twee applicaties, terwijl IP zorgt dat pakketten het juiste apparaat bereiken.

Is TCP geschikt voor realtime besturing?

TCP is niet geschikt voor harde realtime besturing, omdat hertransmissies bij pakketverlies onvoorspelbare vertraging veroorzaken. Voor cyclische I/O gebruiken protocollen als PROFINET RT en EtherNet/IP daarom eigen Ethernetframes of UDP. TCP is wel geschikt voor SCADA-polling, configuratie en historian-verkeer.

Welke TCP-poort gebruikt Modbus TCP?

Modbus TCP gebruikt standaard TCP-poort 502. De beveiligde variant Modbus/TCP Security verpakt het verkeer in TLS en gebruikt poort 802. Poort 502 hoort nooit vanaf internet bereikbaar te zijn.

Is TCP-verkeer versleuteld?

TCP-verkeer is standaard niet versleuteld; TCP garandeert alleen aflevering en volgorde. Versleuteling komt van een laag erboven, zoals TLS bij HTTPS, OPC UA of Modbus/TCP Security, of van een VPN-tunnel.

Wat is een SYN-flood-aanval?

Een SYN-flood-aanval is een denial-of-service-aanval waarbij een aanvaller massaal TCP-verbindingsverzoeken (SYN) stuurt zonder de handshake af te maken. De wachtrij van de ontvanger loopt vol, waardoor legitieme verbindingen worden geweigerd. Kleine OT-apparaten met beperkte TCP-stacks zijn hier extra gevoelig voor.

Waarom valt een TCP-verbinding met een PLC soms weg?

Een TCP-verbinding met een PLC valt vaak weg doordat de PLC zijn maximale aantal verbindingen bereikt, een firewall een inactieve verbinding afsluit of een netwerkonderbreking pas laat wordt gedetecteerd. Korte keepalives of applicatie-heartbeats en correct ingestelde time-outs in de SCADA-driver voorkomen de meeste problemen.


📌 Samengevat

TCP is het betrouwbare transportprotocol onder vrijwel alle moderne OT-communicatie, van Modbus TCP en OPC UA tot engineering en remote access. Het garandeert volledige en geordende aflevering, maar niet tijdigheid en niet vertrouwelijkheid. Combineer TCP daarom met TLS of VPN, beperk poorten met firewalls en segmentatie, en gebruik voor harde realtime I/O protocollen die TCP bewust vermijden.