Модель компетенцій спеціалістів Industrial Automation в епоху 4.0
4 4 1 app
1. Промислові мережі та інтеграційні технології
Протоколи верхніх рівнів
стеку TCP/IP
(для спеціалістів АСУТП)
Частина 1
реєстрація fieldbus_book@ukr.net
автор і лектор: Олександр Пупена (pupena_san@ukr.net)
зворотній зв’язок по курсу: Інтернет-форум АСУ в Україні (www.asu.in.ua)
21.06.2015
NET - APP over TCP/UDP
pupena_san@ukr.net
1
3. Стандартні протоколи прикладного рівня
21.06.2015
NET - APP over TCP/UDP
pupena_san@ukr.net
3
• DNS (Domain Name System ) – IP<->доменне ім'ѐ
• DHCP (Dynamic Host Configuration Protocol) , BOOTP – роздаваннѐ IP…
• SMTP (Simple Mail Transfer Protocol) – відправка пошти
• POP/IMAP – вийманнѐ пошти
• SNMP (Simple Network Management Protocol ) – контроль та управліннѐ
мережними пристроѐми
• FTP (File Transfer Protocol ) – протокол длѐ обміну файлами
• TFTP (Trivial File Transfer Protocol ) – початкове завантаженнѐ бездискових вузлів
• HTTP (Hyper Text Transfer Protocol ) – доступ до WEB
• NTP (Network Time Protocol) – синхронізаціѐ годинників
• Telnet (TErminaL NETwork) , SSH – протоколи і утиліти, передача тексту, наприклад
доступ терміналу , SSH з аутентифікаціюя та шифруваннѐм
4. Стандартні протоколи стеку TCP/IP + RTE* в АСУТП
21.06.2015
NET - APP over TCP/UDP
pupena_san@ukr.net
4
RTE* - Real Time Ethernet, буде розглѐнуто в окремій темі (4.5)
5. Протоколи поверх TCP/IP в АСУТП: приклад
21.06.2015
NET - APP over TCP/UDP
pupena_san@ukr.net
5
Вирізка з каталогу на PLC M340
щодо підтримки сервісів поверх
Ethernet
6. Telnet протокол: можливості
21.06.2015
NET - APP over TCP/UDP
pupena_san@ukr.net
6
http://book.itep.ru/4/45/tlnt_453.htm
TELNET – протокол прикладного рівнѐ, дозволѐю встановлявати TCP- з'юднаннѐ з
сервером длѐ передачі/прийому тексту ASCII (дозволено також бінарні дані) длѐ
віддаленого доступу
• кліюнт-серверний обмін
• два типа даних при передачі:
- прикладні дані (наприклад текстові команди)
- команди Telnet, наприклад длѐ передачі опцій - службові байти (не ASCII)
• Telnet НЕ описує призначеннѐ текстових повідомлень, ѐкими обміняятьсѐ
Кліюнт і Сервер
• повідомленнѐ НЕ шифрується! (при можливості використати SSH)
https://ru.wikipedia.org/wiki/Telnet
TCP PORT=23
7. Telnet протокол: функціонування
21.06.2015
NET - APP over TCP/UDP
pupena_san@ukr.net
7
TCP PORT=23
http://book.itep.ru/4/45/tlnt_453.htm
Типова послідовність:
- з'юднаннѐ до серверу по TCP порту (за замовченнѐм 23), післѐ
з'юднаннѐ створяютьсѐ віртуальний канал NVT (Network Virtual
Terminal)
- домовленості про опції (додаткова функціональність) через
обмін командами
- перехід в режим вводу (сеансовий, обміну повідомленнѐми)
- введеннѐ паролѐ (за необхідності, ѐк правило)
- обмін текстовими повідомленнѐми або бінарними даними
https://ru.wikipedia.org/wiki/Telnet
0xFF код опціѐ
8. Telnet протокол: команди та опції
21.06.2015
NET - APP over TCP/UDP
pupena_san@ukr.net
8
0xFF код опціѐНазва Код Опис
EOF 236/0xEC Признак конца файла
SUSP 237/0xED Отложить исполнение текущего процесса
ABORT 238/0xEE Абортировать процесс
EOR 239/0xEF Конец записи
SE 240/0xF0 Завершает согласование, начатое командой SB.
NOP 241/0xF1 Нет операции.
Data
Mark
242/0xF2
Синхронизациѐ (Synch) обмена данными. Эта команда всегда
сопровождаетсѐ TCP Urgent notification.
Break 243/0xF3 Нажата кнопка «Break» или «Attention».
Interrupt
Process
244/0xF4
Приостанавливает, прерывает, аварийно прекращает или
завершает процесс.
Abort
output
245/0xF5
Подавление вывода текущего процесса. Также отправлѐет
сигнал Synch пользователя.
Are You
There
246/0xF6
Отправлѐет обратно ответ терминала, состоѐщий из
печатных символов.
Erase
characte
r
247/0xF7
Получатель должен удалить предыдущий символ, если это
возможно.
Erase
Line
248/0xF8
Стереть последняя введённуя строку, то есть все данные,
полученные после последнего перевода строки.
Go
ahead
249/0xF9 Ожидаетсѐ передача данных.
SB 250/0xFA
Начало согласованиѐ опции, требуящего передачи
параметров.
WILL опц
ия
251/0xFB
Указывает на желание исполнѐть или подтверждает, что
сейчас исполнѐетсѐ указаннаѐ опциѐ.
WON’T о
пция
252/0xFC
Указывает на отказ начать или продолжить исполнѐть
указаннуя опция.
DO опци
я
253/0xFD
Запрос на то, чтобы другаѐ сторона исполнила или
подтвердила исполнение указанной опции.
DON’T о
пция
254/0xFE
Требование на то, чтобы другаѐ сторона остановила
исполнение или подтвердила то, что указаннаѐ опциѐ более
не исполнѐетсѐ.
IAC 255/0XFF Байт данных 255.
Код опции в
Telnet
Описание Номер RFC
0 Двоичный обмен 856
1 Эхо 857
2 Повторное соединение NIC 15391
3 Подавление буферизации ввода 858
4 Диалог о размере сообщениѐ NIC 15393
5 Статус 859
6 Временнаѐ метка 860
7 Удаленный доступ и отклик 726
8 Длина выходной строки nic 20196
9 Размер выходной страницы nic 20197
10/0x0A Режим вывода символов <возврат каретки> 652
11/0x0B Вывод горизонтальной табулѐции 653
12/0x0C Установка положениѐ табулѐции при выводе 654
13/0x0D Режим вывода команды смены страницы 655
14/0x0E Вывод вертикальной табулѐции 656
15/0x0F Определѐет положение вертикальной табулѐции 657
16/0x10 Режим вывода символа <перевод строки> 658
17/0x11 Расширенный набор кодов ASCII 698
18/0x12 Возврат (logout) 727
19/0x13 Байт-макро 735
20/0x14 Терминал ввода данных 732
21/0x15 Supdup 736
22/0x16 Supdup вывод 747
23/0x17 Место отправлениѐ 779
24/0x18 Тип терминала 930
25/0x19 Конец записи 885
26/0x1A Tacacs- идентификациѐ пользователѐ 927
27/0x1B Пометка вывода 933
28/0x1C Код положениѐ терминала 946
29/0x1D Режим 3270 1041
30/0x1E X.3 PAD 1053
31/0x1F Размер окна 1073
Повний перелік опцій
9. Telnet протокол: приклад запиту
21.06.2015
NET - APP over TCP/UDP
pupena_san@ukr.net
9
0xFF код опціѐ
Назва Код Опис
WILL опция 251/0xFB
Указывает на желание исполнѐть или
подтверждает, что сейчас исполнѐетсѐ указаннаѐ
опциѐ.
WON’T опция 252/0xFC
Указывает на отказ начать или продолжить
исполнѐть указаннуя опция.
DO опция 253/0xFD
Запрос на то, чтобы другаѐ сторона исполнила
или подтвердила исполнение указанной опции.
IAC 255/0XFF Байт данных 255.
Код
опции в
Telnet
Описание Номер RFC
1 Эхо 857
3 Подавление буферизации ввода 858
24/0x18 Тип терминала 930
32/0x20 Terminal Speed RFC1079
39/0x27 New Environment Option RFC1572
10. Утиліта telnet Windows
21.06.2015
NET - APP over TCP/UDP
pupena_san@ukr.net
10
http://housecomputer.ru/technology/protocol/telnet/telnet_commands.html
2 режими роботи:
- командний: введеннѐ команд (telnet входить в режим при старті)
- сеансовий: робота з сервером в режимі терміналу (післѐ команди open)
в режимі з'юднаннѐ:
сеансовий -> командний "CTRL"+"]"
командний -> сеансовий "ENTER"
11. Утиліта telnet Windows: приклад сеансового режиму
21.06.2015
NET - APP over TCP/UDP
pupena_san@ukr.net
11
Список команд длѐ ADSL-
модемов ZyXEL
протокол та утиліта Telnet НЕ описує призначення текстових повідомлень,
якими обмінюються Клієнт і Сервер
12. Утиліта telnet Windows: приклад командного режиму
21.06.2015
NET - APP over TCP/UDP
pupena_san@ukr.net
12
http://housecomputer.ru/technology/protocol/telnet/telnet_commands.html
http://book.itep.ru/4/45/tlnt_453.htm
13. Утиліти PuTTY, Kitty
21.06.2015
NET - APP over TCP/UDP
pupena_san@ukr.net
13
http://www.putty.org/
http://www.chiark.greenend.org.uk/~sgtatham/putty/
KiTTY
http://putty.org.ru/
15. SSH (Secure Shell)
21.06.2015
NET - APP over TCP/UDP
pupena_san@ukr.net
15
TCP PORT=22
https://ru.wikipedia.org/wiki/SSH
SSH (Secure Shell, безпечна оболонка, зараз
актуальна 2-га версіѐ) – протокол прикладного
рівнѐ, ѐкий маю функції Telnet з шифруваннѐм +
можливість тунеляваннѐ TCP-з'юднань
• дві версії: OpenSSH (відкрита) і приватна
• кліюнт-серверний обмін
• використовую шифруваннѐ, алгоритми
вибираятьсѐ (симетричні длѐ передачі даних,
асиметричні длѐ паролів)
• не тільки длѐ командної консолі (подібно
Telnet), а і длѐ передачі будь ѐкого трафіку
(тунеляваннѐ)
• стисненнѐ даних
• реалізаціѐ кліюнтів та серверів ю длѐ багатьох
ОС в т.ч.Windows
16. Робота з поштою: базова структура
21.06.2015
NET - APP over TCP/UDP
pupena_san@ukr.net
16
MUA (mail user agent ) – поштовий агент користувача (клієнт), наприклад MS Outlook
MUA
MTA
MDA
MTA (mail transfer agent) – агент передачі повідомлень
MDA (mail delivery agent ) – агент доставки пошти
MUA
MUA
MTA MDA
17. Відправка пошти: базовий SMTP (RFC 822, 1982 )
21.06.2015
NET - APP over TCP/UDP
pupena_san@ukr.net
17
Simple Mail Transfer Protocol – простий протокол передачі пошти
• SMTP – ASCII протокол прикладного рівнѐ длѐ передачі текстових
повідомлень
• SMTP (ESMTP) – визначаю тільки передачу повідомленнѐ (конверт), а не
його формат (заголовок + тіло)
• поверх TCP
• SMTP client, SMTP server (port = 25)
TCP PORT=25
18. Базовий SMTP: команди
21.06.2015
NET - APP over TCP/UDP
pupena_san@ukr.net
18
• послідовність команд кліюнта (може бути чутливий до регістру):
• HELO – привітаннѐ
HELO spec
• MAIL FROM — зворотна адреса
MAIL FROM <san@nuft.edu.ua>
• RCPT TO — кому (може декілька раз длѐ кожного отримувача)
RCPT TO <pupena_san@ukr.net>
• DATA — текст повідомленнѐ: заголовок (може не містити) + тіло розділених
пустим рѐдком, закінчуютьсѐ крапкоя "."
DATA
текст повідомленнѐ
.
• відповідь від сервера:
• 2хх – норма
• 3хх – треба додаткові дані від кліюнта
• 4xx, 5xx - помилки
19. Відправка пошти : базовий SMTP - приклад
21.06.2015
NET - APP over TCP/UDP
pupena_san@ukr.net
19
Simple Mail Transfer Protocol
SMTP, ESMTP – визначаю тільки передачу повідомленнѐ, а не його формат
немаю заголовку
20. Відправка пошти : формат (RFC 822, RFC 5322 )
21.06.2015
NET - APP over TCP/UDP
pupena_san@ukr.net
20
- формат повідомленнѐ: заголовок + тіло
(длѐ RFC 5322 тільки ASCII)
- заголовок завжди перед тілом і
відділѐютьсѐ від нього пустим рѐдком
- формат заголовку:
Поле: значеннѐ полѐ
- заголовки: Date, From, Sender, сс, Всс, То,
Subject …
http://www.icmm.ru/~masich/win/lexion/mail/form.html
заголовок
21. Відправка пошти : обмеження змісту повідомлення
(RFC 5322)
21.06.2015
NET - APP over TCP/UDP
pupena_san@ukr.net
21
- RFC 5322 (походить від RFC 822) тільки длѐ текстових
повідомлень в листах
- проблеми з текстом не латинськими літерами (не ASCII)
- обмеженнѐ рѐдку до 1000 символів
http://www.icmm.ru/~masich/win/lexion/mail/form.html
22. Робота з поштою: MIME (RFC 5322)
21.06.2015
NET - APP over TCP/UDP
pupena_san@ukr.net
22
Multipurpose Internet Mail Extensions — багатоцільові розширеннѐ Інтернет-пошти
- правила кодуваннѐ повідомлень по е-пошті та длѐ опису контенту в інших
застосунках (наприклад Веб), що передаютьсѐ по Інтернету
- длѐ передачі не тільки ASCII а і нетексту
- 5 нових полів заголовку
- бінарні дані кодуятьсѐ в текст за вказаним алгоритмом , наприклад BASE64
http://www.icmm.ru/~masich/win/lexion/mail/form.html http://book.itep.ru/4/4/mime.htm
23. MIME: приклад
21.06.2015
NET - APP over TCP/UDP
pupena_san@ukr.net
23
Date: Sat, 20 Jun 2015 10:45:21 +0300
From: =?UTF-8?b?0J7Qu9C10LrRgdCw0L3QtNGAINCf0YPQv9C10L3QsA==?=
<fieldbus_book@ukr.net>
Subject: =?UTF-8?b?0YLQtdC80LA=?= 1
To: pupena_san@ukr.net
X-Mailer: mail.ukr.net 5.0
Message-Id: <1434786220.917530690.pr386c0e@frv37.fwdcdn.com>
Received: from fieldbus_book@ukr.net by frv37.fwdcdn.com;
Sat, 20 Jun 2015 10:45:21 +0300
X-Originating-Ip: 95.132.102.96; For=95.132.102.96
X-New-Users: 0
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="=-uNLfynj7hv0ZuUQMsEQA"
boundary – послідовність що розділяє частини повідомлення
25. Відправка пошти : submission server
21.06.2015
NET - APP over TCP/UDP
pupena_san@ukr.net
25
контроль вихідних поштових повідомлень кліюнта (антиспам), контроль
користувачів, спрощеннѐ адмініструваннѐ -> виділеннѐ окремого процесу
submission server MSA
• домени в MAIL FROM, RCPT TO та в DATA повинні бути повними
• використаннѐ ESMTP: кліюнт може проходити аутентифікація (Authenticated SMTP
[SMTP-AUTH]), перевірки недоступності адреси
MSA (mail submission agent) - агент подачі
повідомлень (порт 587, рідше 25)
MUA (mail user agent ) – поштовий агент
користувача (клієнт)
MTA (mail transfer agent) – агент передачі
повідомлень
MDA (mail delivery agent ) – агент доставки
пошти
http://sys-adm.org.ua/_media/rfc/rfc2476.pdf
port=587
(потребує
аутентифікації)
port=25
port=25
TCP PORT=587
26. Відправка пошти : розширений SMTP - ESMTP (RFC 5321)
21.06.2015
NET - APP over TCP/UDP
pupena_san@ukr.net
26
Extended SMTP
http://www.samlogic.net/articles/smtp-commands-reference.htm
http://opds.sut.ru/old/electronic_manuals/mail/3_SMTP.htm#3_1_1
EHLO – перелік розширень (полів)
AUTH – аутентифікаціѐ та шифруваннѐ
8BITMIME – передача тексту повідомленнѐ 8-бітним кодом CHECKPOINT –
продовженнѐ передачі повідомленнѐ післѐ обриву звѐзку
SIZE – оголошеннѐ розміру повідомленнѐ
ETRN – отриманнѐ повідомлень з віддаленої черги
ENHANCEDSTATUSCODES – розширені коди відповідей
STARTTLS – передача даних по захищеному каналу з використаннѐм
сертифікатів
ATRN – передача почти за запитом
DSN – сповіщеннѐ про хід доставки
DELIVERBY – управліннѐ часом доставки повідомлень
PIPELINING – групуваннѐ команд
CHUNKING и BINARYMIME – передача бінарних файлів великого розміру
27. Отримання пошти: POP3, IMAP, Webmail
21.06.2015
NET - APP over TCP/UDP
pupena_san@ukr.net
27
POP3 (Post Office Protocol, version 3 — протокол
почтового відділеннѐ , версіѐ 3)
• простий
• з'юднуютьсѐ, отримую інфо, завантажую листи,
видалѐю пошту на сервері післѐ доставки хостові
• без шифруваннѐ
IMAP (Internet Mail Access Protocol — протокол доступу до
електронної пошти в Інтернеті), активна 4-та версіѐ
• базуютьсѐ на POP3
• ю захищений режим
• розширений набір команд (див. табл.)
• післѐ доставки не видалѐю повідомленнѐ
TCP PORT=143
Webmail
• запит кліюнта оброблѐютьсѐ Web сервером
• ѐк отриманнѐ так і відправка
TCP PORT=110
28. Відправка пошти : SMTPS, POP3S, IMAPS
21.06.2015
NET - APP over TCP/UDP
pupena_san@ukr.net
28
SMTPS - SMTP з шифруваннѐм SSL/TLS (ESMTPS)
• використовуютьсѐ ESMTP з підтримкоя SSL/TLS
• захищений режим активуютьсѐ STARTTLS
TCP PORT=587, 465 (не рекоменд)
POP3S – POP3 з шифруваннѐм SSL/TLS
IMAPS – IMAP з шифруваннѐм SSL/TLS
TCP PORT=995
TCP PORT=993
29. Відправка пошти : приклад М340
21.06.2015
NET - APP over TCP/UDP
pupena_san@ukr.net
29
30. Протокол FTP
21.06.2015
NET - APP over TCP/UDP
pupena_san@ukr.net
30
FTP (англ. File Transfer Protocol ) - протокол передачі файлів, початок 1971 рік,
в 1980 поверх TCP
• кліюнт-сервер
• багатоточкове підкляченнѐ, ѐк мінімум 2:
• один канал – длѐ керуваннѐ командами, подібно Telnet (порт 21),
• інші длѐ передачі/прийому даних (файлів) (порт вибираютьсѐ)
• післѐ з'юднаннѐ з сервером (21-й порт) – встановленнѐ сесії, 21-й порт
тільки длѐ команд
• обмін даними в сесії:
• активний режим: з'юднаннѐ серверу з портом кліюнта
• пасивний режим: з'юднаннѐ кліюнта з портом серверу
TCP PORT=21
https://ru.wikipedia.org/wiki/FTP
http://book.itep.ru/4/45/ftp_454.htm
31. Протоколи FTP/FTPS, SFTP
21.06.2015
NET - APP over TCP/UDP
pupena_san@ukr.net
31
https://ru.wikipedia.org/wiki/FTP
FTPS (File Transfer Protocol + SSL, або FTP/SSL) — захищений FTP, де оригінальне
повідомленнѐ та/або дані передаятьсѐ поверх SSL;
• можна шифрувати ѐк канал команд так і канал даних;
• ю ѐвний (нові команди AUTH TLS) та неѐвний FTPS (окремі порти)
SFTP (англ. SSH File Transfer Protocol) — альтернатива FTP/FTPS ѐк
розширеннѐ SSH-2.
32. FTP/FTPS клієнти
21.06.2015
NET - APP over TCP/UDP
pupena_san@ukr.net
32
При анонімному
USER = ANONYMOUS
PASW=<user@mail> - ѐк правило не перевірѐютьсѐ
• FTP Client – спеціальні програми, деѐкі браузери
• ftp://[<користувач>*:<пароль>+@+<хост>*:<порт>+/<шлѐх>
• ftp://user001:secretpassword@private.ftp-servers.example.com/mydirectory/myfile.txt
33. TFTP
21.06.2015
NET - APP over TCP/UDP
pupena_san@ukr.net
33
TFTP (англ. Trivial File Transfer Protocol ) — простий протокол передачі файлів,
використовуютьсѐ в основному длѐ початкового завантаженнѐ бездискових
робочих станцій
• простий, менш функціональн. ніж FTP
• базуютьсѐ на UDP (port 69)
• кліюнт-сервер
• кліюнт може попросити (opcode):
• прочитати файл (PRQ)
• записати файл (WRQ)
• сервер пересилаю файл від іншого порту (динам.)
• безпека
• без аутентифікації та шифруваннѐ
• були випадки отриманнѐ файлів паролів
• обмежуютьсѐ доступ до окремих папок
UDP PORT=69
http://www.soslan.ru/tcp/tcp15.html + BOOTP +DHCP
35. TFTP+DHCP: приклад для FDR by Schneider Electric
21.06.2015
NET - APP over TCP/UDP
pupena_san@ukr.net
35
FDR (Fault Device Replacement) — концепціѐ швидкої заміни дефектних пристроїв в мережі
BMX_2020_123