IT

Páteční průmyslový protokol: TCP/IP

Zdroj: IETF

Grafika s označením TCP/IP a rámcovým diagramem
Ilustrace: redakce

TCP/IP není protokol, ale sada protokolů: IP doručuje datagramy mezi sítěmi, TCP z nich staví spolehlivý proud, UDP posílá bez záruk a ICMP hlásí chyby. Každá průmyslová Ethernet síť — PROFINET, EtherNet/IP i Modbus TCP — sedí na téhle trojici. Kdo nezná hlavičky, ladí síť zkusmo.

Rámec TCP/IP v Ethernetu

Co to je a odkud pochází

Sada vznikla v projektu ARPANET na přelomu 70. a 80. let; IP popsal RFC 791 (1981), TCP původně RFC 793 (1981) a dnes platná verze je RFC 9293 (2022). Klíčové rozhodnutí bylo rozdělit odpovědnost: IP doručí datagram „nejlépe jak umí" a nezajímá ho pořadí ani ztráty, TCP nad ním doplní potvrzování, řazení a opakování. Průmysl to převzal beze změny — jen si k tomu přidal vlastní aplikace.

Jak funguje

Vrstvy jsou čtyři a každá obalí data té předchozí:

  • Linková — Ethernet II, MAC adresy, rámec s ethertypem (IPv4 = 0x0800).
  • Síťová — IP, adresace a směrování mezi sítěmi.
  • Transportní — TCP (spolehlivý proud) nebo UDP (datagramy bez záruk).
  • Aplikační — konkrétní protokol: 502 Modbus TCP, 44818 EtherNet/IP, 102 S7 komunikace.

IP hlavička má minimum 20 bajtů: verze, IHL, DSCP/ECN, celková délka, identifikace, příznaky a offset fragmentace, TTL, číslo protokolu (6 = TCP, 17 = UDP), checksum hlavičky a adresy odesílatele a příjemce. TCP hlavička má také 20 bajtů: porty, sekvenční a potvrzovací číslo, offset dat, příznaky (SYN, ACK, FIN, RST, PSH, URG), okno a checksum.

Spojení TCP začíná trojcestným handshake SYN → SYN-ACK → ACK, pak se posílají segmenty s potvrzováním a oknem. Ethernetové MTU 1500 bajtů znamená, že do jednoho rámce se vejde 1460 bajtů dat (MSS) — zbytek je režie hlaviček.

Kde to bolí v praxi

TCP je spolehlivé, ale za cenu času: ztracený segment se opakuje a nadřízená aplikace čeká. Proto se přes TCP neřídí pohyb — pro polohové smyčky potřebujete determinismus v mikrosekundách, což TCP negarantuje. Průmyslové protokoly to řeší tak, že cyklická data (I/O) posílají přes UDP nebo přes vlastní EtherType mimo IP, a TCP používají jen na konfiguraci a servis.

Druhá past je adresace. Strojní sítě se navrhují se statickými IP adresami a pevnými rozsahy, protože DHCP server, který spadne, zastaví linku. Do kancelářské sítě se stroj nevěší přímo — mezi ně patří router nebo firewall.

Testování a kód

Nejrychlejší diagnostika je ping, arp -a, ss -tulpn a Wireshark s filtrem tcp.port == 502. V Pythonu stačí socket a struct:

import socket, struct

# navazani TCP spojeni na PLC, port 502 (Modbus TCP)
s = socket.create_connection(("192.168.1.10", 502), timeout=3)
s.sendall(b"")          # sem patri PDU, viz dil o Modbusu
data = s.recv(1024)
print(len(data), data[:8].hex())
s.close()

Pro ruční ověření, že zařízení vůbec odpovídá, se hodí nc -vz 192.168.1.10 502 — pokud se spojení naváže, je to vrstva 1–4 v pořádku a problém je výš.

Licence

RFC jsou volně dostupné, specifikace otevřené, implementace existují pod MIT i GPL (lwIP, picoTCP, jádro Linuxu). Nic se neplatí, nikdo to nevlastní. Právě proto je TCP/IP jediná vrstva, kterou najdete ve všech osmi kategoriích našeho webu.

Pro síťaře: než začnete řešit, proč PLC neodpovídá, ověřte tři věci v tomhle pořadí — linku (kontrolka, ethtool), IP konfiguraci (adresa, maska, brána) a teprve pak port. Devět z deseti „nekomunikuje" končí u špatné masky nebo na jiném VLAN.

Seriál Páteční průmyslový protokol vychází každý pátek. Další díl najdete v přehledu série.

Zdroje

  1. RFC 9293 — Transmission Control Protocol (TCP) — IETF
  2. RFC 791 — Internet Protocol — IETF
  3. RFC 826 — An Ethernet Address Resolution Protocol — IETF

Odkazy vedou na primární zdroje. Text článku je redakční shrnutí, ne převzatá zpráva.