1. Промислові мережі та інтеграційні
технології
Протоколи TCP та UDP
реєстрація fieldbus_book@ukr.net
автор і лектор: Олександр Пупена (pupena_san@ukr.net)
зворотній зв’язок по курсу: Інтернет-форум АСУ в Україні (www.asu.in.ua)
15.06.2015 NET - TCP/UDP pupena_san@ukr.net 1
4. Транспортний рівень (адресація)
15.06.2015 NET - TCP/UDP pupena_san@ukr.net 4
TSAP – transport service access point: адресація
прикладного процесу
NSAP – Network service access point: адресація хоста
6. TCP vs UDP
15.06.2015 NET - TCP/UDP pupena_san@ukr.net 6
TCP - Transmission Control
Protocol
UDP - User Datagram
Protocol
* надійність сервісів може
реалізуватися на верхніх
рівнях поверх UDP
• control (DNS, DHCP)
*
7. Порти UDP та TCP
15.06.2015 NET - TCP/UDP pupena_san@ukr.net 7
TSAP ~ номер порта
серверні порти
клієнтські порти
• 0-1023 - добре відомі або системні
порти (Well-Known, System)
• 1024-49151 – зареєстровані
користувацькі (User)
• 49152-65535 – динамічні або
приватні порти (Dynamic, Private)
Список портов TCP и UDP
8. 44321
44321
Сокети
15.06.2015 NET - TCP/UDP pupena_san@ukr.net 8
https://microchip.wikidot.com/tcpip:tcp-ip-sockets
сокет – програмна реалізація підключення
сокет - проміжний об'єкт між Application
та TCP/UDP
сокет (адреса_сокета) = адреса_IP +
номер_порту
ідентифікатор з'єднання:
Protocol+IPdst+PORTdst+ IPsrc+PORTsrc (5
tuple)
12. Робота TCP
15.06.2015 NET - TCP/UDP pupena_san@ukr.net 12
• спочатку створюється з'єднання (+
домовленість про особливості
передачі)
• з'єднання "точка-точка"
• з'єднання дуплексне
• сервер очікує, ініціатор (клієнт)
активує
• слідкування за доставкою, за
порядком октетів (байтів)
• з'єднання розривається по
ініціативі будь-якого учасника
• дані буферизуються
• частина буферу передається
окремим пакетом - TCP-сегментом
• межі між повідомленнями не
зберігаються (потік октетів)
байт чи октет?
13. З'єднання на базі TCP
15.06.2015 NET - TCP/UDP pupena_san@ukr.net 13
АСК — квитанція на прийнятий сегмент;
SYN — повідомлення, що використовується для
синхронізації лічильників переданих даних при
встановленні з'єднання;
FIN — ознака досягнення передаючою стороною
останнього байту в потоці даних
14. З'єднання на базі TCP: використання сокетів
15.06.2015 NET - TCP/UDP pupena_san@ukr.net 14
Примітив Призначення
SOCKET (СОКЕТ) Створити новий сокет (гніздо зв’язку)
BIND (ЗВ’ЯЗАТИ) Зв’язати локальну адресу з сокетом
LISTEN (ОЧІКУВАТИ)
Очікувати з’єднання зі сторони
клієнта
ACCEPT (ПРИЙНЯТИ) Підтвердити з’єднання
CONNECT (З'ЄДНАТИ)
Активно пробувати з’єднатись з
сервером
SEND (ВІДПРАВИТИ)
Відправити дані по встановленому
каналі
RECEIVE (ОТРИМАТИ) Отримати дані із з’єднаного каналу
CLOSE (ЗАКРИТИ) Розірвати з’єднання
JAVA Socket programming
15. подія/дія
З'єднання на базі TCP: автомат станів
15.06.2015 NET - TCP/UDP pupena_san@ukr.net 15
події:
- виклик процедури CONNECT,
LISTEN, SEND або CLOSE
- прибуття сегменту: SYN, FIN, ACK,
RST
- таймаут
дії: відправка керуючого сегменту
SYN, FIN, ACK
Полуоткрытое TCP/IP-соединение
типовий шлях клієнта
типовий шлях серверу
нетиповий шлях
23. Приклади обмежень на кількість підключень (сокетів)
15.06.2015 NET - TCP/UDP pupena_san@ukr.net 23
PLC M241
Част. ATV
PLC S7 315
24. Утиліта NetStat
15.06.2015 NET - TCP/UDP pupena_san@ukr.net 24
Утиліта відображає активні підключення TCP, порти, які прослуховуються комп’ютером,
статистику Ethernet, таблиці маршрутизації IP, статистику IPv4 (для протоколів IP, ICMP,
TCP и UDP). Викликана без параметрів, команда netstat відображає підключення TCP.
netstat [-a] [-b] [-e] [-n] [-o] [-p протокол] [-r] [-s] [інтервал]
Параметр Призначення параметру
/? виводить довідку по використанню
-a виводить всі активні підключення TCP та портів TCP та UDP, які прослуховуються.
- b Відображення назву файлу, що використовує підключення або вхідний порт (Win7)
-e виводить статистику Ethernet, наприклад кількість відправлених та прийнятих байтів та пакетів; цей параметр може
комбінуватися з ключем -s.
-f Відображення повного імені домену (FQDN) для зовнішніх адрес (Win7)
-n виводить активні підключення TCP з відображенням адрес та номерів портів в числовому форматі без визначення імен
-o виводить активні підключення TCP та включення коду процесу (PID) для кожного підключення; цей параметр може
комбінуватися з ключами -a, -n та -p.
-p протокол виводить підключення для протоколу, вказаного параметром протокол. У цьому випдаку параметр протокол може
приймати значення tcp, udp, tcpv6 або udpv6. Якщо даний параметр використовується з ключем -s для виводу статистики
по протоколу, параметр протокол может мати занчення tcp, udp, icmp, ip, tcpv6, udpv6, icmpv6 або ipv6.
-s виводить статистику по протоколу; по замовченню виводиться статистика для протоколів TCP, UDP, ICMP та IP; параметр -
p може використовуватися для вказівки набору протоколів.
-r виводить зміст таблиці маршрутизації IP; ця команда еквівалентна route print.
інтервал оновлення вибраних даних з інтервалом, визначеним параметром інтервал (в секундах); нажимання CTRL+C зупиняє
оновлення; якщо параметр опущений netstat виводить дані тільки один раз
26. Утиліта TCPView
15.06.2015 NET - TCP/UDP pupena_san@ukr.net 26
https://technet.microsoft.com/ru-ru/sysinternals/bb897437
Если в период между обновлениями состояние
конечной точки изменилось, она выделяется
желтым цветом, если конечная точка удалена —
красным цветом, новые конечные точки
отображаются зеленым цветом.
27. Утиліти сканування портів (nmap, …)
Тільки для тестування своїх хостів (закон?)!
15.06.2015 NET - TCP/UDP pupena_san@ukr.net 27
https://hideme.ru/ports/
http://www.yougetsignal.com/tools/open-ports/
https://nmap.org/download.ht
ml#windows
30. Утиліти: COM2TCP, TCP2COM
15.06.2015 NET - TCP/UDP pupena_san@ukr.net 30
http://www.serialporttool.com/CommTunnel.htm
TCP SERVER port=5555
IP ADDR=192.168.200.3
COM4TCP2COM
TCP CLIENT port=dyn
IP ADDR=192.168.200.2
Virtual
COM4
COM2TCPAPP
напр.
SCADA
31. TCP2COM + COM0COM: приклад SQUID Microl
15.06.2015 NET - TCP/UDP pupena_san@ukr.net 31
TCP SERVER port=xxxx
STATIC IP ADDR
Virtual
COM4
TCP2COM
TCP CLIENT port=yyyy
Dynamic IP ADDR
Virtual
COM3
COM0COM
APP
напр.
SCADA
SQID Microl
GPRS
INTERNET
ZZZZ
Modbus ClientModbus Server
32. Утиліта: hub4com
15.06.2015 NET - TCP/UDP pupena_san@ukr.net 32
http://com0com.cvs.sourceforge.net/viewvc/com0com/hu
b4com/ReadMe.txt?revision=RELEASED
• GPS hub – один COM на декілька інших
• COM port to telnet redirector
• RFC 2217 server (TCP to COM port redirector)
• RFC 2217 client (COM port to TCP redirector)
• CHAT server
• CVS pserver proxy
• CVS ssh to https proxy
• Multiplexing
• Encryption