Как написать свой протокол передачи данных. Протоколы интернет

Протокол передачи данных - набор соглашений интерфейса логического уровня , которые определяют обмен данными между различными программами . Эти соглашения задают единообразный способ передачи сообщений и обработки ошибок при взаимодействии программного обеспечения разнесённой в пространстве аппаратуры , соединённой тем или иным интерфейсом.

Сигнальный протокол используется для управления соединением - например, установки, переадресации, разрыва связи. Примеры протоколов: RTSP , SIP . Для передачи данных используются такие протоколы как RTP .

Сетево́й протоко́л - набор правил и действий (очерёдности действий), позволяющий осуществлять соединение и обмен данными между двумя и более включёнными в сеть устройствами.

Разные протоколы зачастую описывают лишь разные стороны одного типа связи . Названия «протокол» и «стек протоколов» также указывают на программное обеспечение , которым реализуется протокол.

Наиболее известные протоколы, используемые в сети Интернет:

  • HTTP (Hyper Text Transfer Protocol) - это протокол передачи гипертекста . Протокол HTTP используется при пересылке Web-страниц между компьютерами, подключенными к одной сети.
  • FTP (File Transfer Protocol) - это протокол передачи файлов со специального файлового сервера на компьютер пользователя. FTP дает возможность абоненту обмениваться двоичными и текстовыми файлами с любым компьютером сети. Установив связь с удаленным компьютером, пользователь может скопировать файл с удаленного компьютера на свой или скопировать файл со своего компьютера на удаленный.
  • POP3 (Post Office Protocol) - это стандартный протокол почтового соединения. Серверы POP обрабатывают входящую почту, а протокол POP предназначен для обработки запросов на получение почты от клиентских почтовых программ.

Достаточно часто мне приходиться сопрягаться со специализированным ПО (и железом, хотя в конечном итоге идет сопряжение со вшитым на плату фирмвейром), изготовитель каждого из которых предоставляет свой протокол обмена данными.

Какими свойствами и особенностями обладает хороший, годный грамотный, качественный протокол?

В идеале, протокол должен быть абстрагирован от более нижнего уровня взаимодействия, будь то передача по TCP, UDP, по serial порту, USB, Bluetooth, через цифровой радиосигнал, или даже по голубиной почте . И надо учитывать, что далеко не все из них гарантируют доставку и\или достоверность передающихся данных.

Небольшой дисклеймер: говоря о достоверности данных, я имею ввиду их неискаженность вследствие помех и иных ошибок в среде передачи. В статье я не буду затрагивать темы пласта технологий, связанных с безопасностью в ИТ. Допустим что наши Алиса и Боб могут друг другу доверять, и никакая Ева им помешать не может . (Например у коллег вопрос безопасности решается включением всех территориально разделенных участников взаимодействия в хорошо защищенный VPN, не имеющий в свою очередь доступа наружу)

В большинстве протоколов реализована схема «Вопрос-Ответ». Это можно представить как разговор, в котором на каждую реплику своего собеседника вы реагируете вербально, и в том же смысловом ключе. Таким образом участниками взаимодействия достигается уверенность в том, что их сообщения переданы и адекватно восприняты. Однако эта схема допустима и эффективна не для всех задач: в случаях когда задержка в общении должна быть минимизирована, или ответ на каждую из многочисленных реплик признается избыточным (например для отладочных сообщений), реализуется схема «Старт-Стоп». При получении сообщения на «Старт» ваш собеседник начинает сыпать в вас потоком реплик, и замолкает лишь при слове «Стоп». Сообщения, отправляемые в потоке, обычно имеют инкрементируемый порядковый номер, и если при принятии потока сообщений были проблемы с обработкой\было пропущено одно из них, его можно перезапросить отдельно по этому самому номеру.

Все протоколы можно разделить на две группы, (по представлению данных): символьные и бинарные .
Символьные протоколы, с которыми мне приходилось встречаться, базировались либо на XML, либо на JSON-строках. Из их достоинств можно упомянуть о более простой отладке взаимодействия (вследствие их читаемости), о простоте реализации (наличия готовых парсеров), и пресловутой универсальности.
Теперь о недостатках. Очевидно, что такие протоколы являются крайне избыточными, мизерная доля полезной информации плавает в массивной, неэффективной обёртке. При передаче любой числовой информации приходиться заниматься их конвертацией в строковое представление и обратно. Больным местом является передача бинарных данных (и хорошо, что без них бывает можно обойтись, но в ряде случаев это невозможно). Составители протоколов обычно выкручиваются применением Base64 , или даже просто передачей бинарной строки в её hex-овом представлении, по два символа на байт.
Также хочется отметить, что полная спецификация того же XML крайне обширна, и стандартные парсеры, при всей их полноте возможностей, достаточно громоздки и медлительны, поэтому распространена практика, когда отдел или контора в итоге пишет и пользуется собственным парсером.

Конечно, для определенных задач , символьные протоколы являются, если не наиболее эффективным, то по крайней мере вполне приемлимым вариантом, но мы с вами идём дальше.

Теперь бинарные протоколы. Сразу же надо вспомнить о Гулливерских войнах тупоконечников и остроконечников . Лично я симпатизирую big-endian, т.к. не считаю неявную типизацию little-endian «чем-то хорошим», да и в моей среде разработки big-endian является нативным.
Бинарные протоколы (не все, но те, которые я отношу к грамотным) можно разделить на два уровня: уровень контейнера и уровень данных. На плечи первого уровня ложится ответственность за целостность и достоверность передачи данных, а так же за доступность обнаружения сообщения в байтовом потоке, и, само собой, за хранение в себе сообщения уровня данных. Второй уровень должен содержать информацию, ради которой всё сетевое взаимодействие и затевалось, в удобном для обработки формате. Его структура в основном зависит от решаемых задач, но и по нему есть общие рекомендации (о которых ниже).

Размеры сообщений (дискретных пакетов байт, которые можно обрабатывать независимо от предыдущих и последующих принимаемых данных) бывают фиксированными и переменными . Понятно, что с фиксированным размером сообщений всё проще - вычитается, начиная с заголовка (о нём позже), определенное количество байт и отправляется на обработку. Зачастую, для обеспечения гибкости, составители таких протоколов включают в сообщение область фиксированного размера (иногда до 80% от общего объема), зарезервированное под модификации нынешнего протокола. На мой взгляд, это не самый эффективный путь обеспечения гибкости, зато избыточность появляется еще какая.
Рассмотрим сообщения переменной длины.
Тут уже можно подробней поговорить о непременном атрибуте бинарного сообщения в любом протоколе - о заголовке (Это вышеупомянутый уровень контейнера).
Обычно заголовки начинаются с константной части, позволяющей, с определенной вероятностью обнаружить начало сообщения в непрерывном байтовом потоке. Очевидно, что имеется риск появления такой константы в произвольном потоке байт, и, хотя увеличение объема этот риск снижает (я встречал константы вида 0123456789VASIA9876543210), целесообразней использовать проверки на основе подсчета контрольной суммы .
За константой обычно следует номер версии протокола, который дает нам понять, в каком формате должно происходить дальнейшее считывание (и имеем ли мы вообще возможность обработать это сообщение - вдруг такая версия нам неизвестна). Следующая важная часть заголовка: информация о самом содержимом контейнера. Указывается тип содержимого (по факту, тот же номер версии протокола для уровня данных), его длина и контрольная сумма. Имея эту информацию, можно уже без проблем и опасений считать содержимое и приступить к его разбору.
Но не прямо сразу! Заголовок должна заключать контрольная сумма его самого (исключая из расчета конечно саму контрольную сумму) - только так мы можем быть уверены в том, что считали только что не белиберду, а валидный заголовок, за которым следуют предназначенные нам данные. Не совпала контрольная сумма? Придётся искать следующее начало нового заголовка дальше по потоку…

Представим, что мы дошли до этапа, что получили наконец неискаженное сообщение уровня данных. Его структура зависит от той области задач той системы, в которой реализован ваш сетевой обмен, однако в общем виде у сообщения тоже бывает быть свой заголовочек , содержащий информацию о типе сообщения. Можно различить как общую специфику сообщения, (например «Запрос Set», «Утвердительный Ответ на Set», «Отрицательный Ответ на Set», «Запрос Get», «Ответ Get», «Потоковое сообщение»), так и конкретную область применение сообщения. Попробую привести пример с потолка:
Тип запроса: Запрос Set (0x01)
Идентификатор модуля-адресата сообщения: PowerSupplyModule (0x0A)
Идентификатор группы сообщений: UPS Management (0x02)
Идентификатор типа сообщения: Reboot (0x01)
Дальше тело сообщения может содержать информацию об адресе ИБП, который Модуль управления энергообеспечением должен перезагрузить, через сколько секунд это сделать и т.п.
На это сообщение мы рассчитываем получить ответное сообщение с типом запроса «Утвердительный Ответ» и последующими 0x0A0201 в заголовке.
Конечно, такое подробное описание типа сообщения может быть избыточным когда межсетевое взаимодействие не предусматривает большого числа команд, так что формировать структуру сообщения надо исходя из требований ТЗ.
Так же будет полезно, если сообщение с «Отрицательным Ответом» будет содержать код ошибки, из-за которой не удалось ответить на команду утвердительно.

Заканчивая своё повествование, добавлю, что тема взаимодействия приложений весьма обширна и порою холиворна(что по факту означает, что в ней нет технологии «серебряной пули»), и отмечу, что те взгляды, что я излагаю, являются лишь компиляцией из опыта по работе с отечественными и зарубежными коллегами. Спасибо за внимание!

upd.
Имел удовольствие пообщаться с критиком своей статьи, и теперь прихожу к осознанию, что я осветил вопрос со своей если можно так выразиться, «байтолюбской», точки зрения. Конечно, раз идет курс на универсальность обработки хранения и передачи данных, то в таком ключе символьные протоколы (в первую очередь говорю об XML) могут дать фору любым другим решениям. Но относительно попытки повсеместного их применения позволю себе процитировать Вирта:
Инструмент должен соответствовать задаче. Если инструмент не соответствует задаче, нужно придумать новый, который бы ей соответствовал, а не пытаться приспособить уже имеющийся.

Немного теории. Протоколы передачи данных — это наборы соглашений (считай, стандарты), которые регулируют обмен данными между различными программами. Смысл протоколов передачи данных в том, чтобы эту самую передачу упорядочить и сделать независимой от аппаратной платформы (т.е. от какой-то одной конкретной «железяки»).

Протокол не следует путать с интерфейсом подключения и вообще с физическим уровнем (хотя такой термин и встретится нам в рассматриваемой далее модели). Протокол это уровень логический .

Сетевые протоколы

Сетевые протоколы регулируют обмен связи между двумя соединенными в сеть устройствами. Вообще, что мы в данном случае подразумеваем под сетью? Соединение компьютера и монитора это сеть? Нет, поскольку в данном случае монитор — это устройства вывода. Происходит вывод информации на экран, но не обмен ею. Соответственно, под сетью мы подразумеваем связь двух и более устройств, способных хранить и обрабатывать информацию.

Чаще всего сетевые протоколы классифицируют по модели OSI (Open Systems Interconnection Basic Reference Model). Модель состоит из семи уровней и упрощает понимание функционирования сети. Уровни располагаются вертикально друг над другом. Уровни взаимодействуют друг с другом по вертикали через интерфейсы, и могут взаимодействовать с параллельным уровнем другой системы по горизонтали с помощью протоколов. Каждый уровень может взаимодействовать только со своими соседями и с себе подобным.

Нетрудно догадаться, что прикладной уровень является самым верхним (седьмым), а физический лежит в основе основ (первый уровень).

Пойдем снизу вверх.

1. Физический уровень — на этом уровне работают хабы и ретрасляторы сигнала. Здесь осуществляется передача данных по проводам или беспроводным путём. Происходит кодировка сигнала. Осуществляется стандартизация сетевого интерфейса (пример, разъем RJ-45).

2. Канальный уровень — уровень коммутаторов, мостов и драйверов сетевых карт. Данные упаковываются во фреймы, проверяются ошибки и данные отправляются на сетевой уровень.

Протоколы: Ethernet, FDDI, PPP, PPTP, L2TP, xDSL и др.

3. Сетевой уровень — здесь определяется путь передачи данных, определяется кратчайший маршрут, происходит контроль неисправностей сетей. Это уровень маршрутизаторов.

Протоколы: IPv4, IPv6, ARP, ICMP.

4. Транспортный уровень отвечает за механизм передачи. Блоки данных разбиваются на фрагменты, избегаются потери и дублирование.

Протоколы: TCP, UDP, RDP, SPX, SCTP и др.

5. Сеансовый уровень отвечает за поддержание сеанс связи. Создание и завершение сеанса, права передачи данных и поддержание сеанса в момент неактивности приложений — всё происходит на этом уровне.

Протоколы: SSL, NetBIOS.

6. Уровень представления занимается кодированием и декодированием данных. Данные из приложения преобразуются в формат для транспортировки по сети, а пришедшие из сети в формат, понятный приложению.

Протоколы: FTP, SMTP, Telnet, NCP, ASN.1 и др.

7. Прикладной уровень — это уровень взаимодействия сети и пользователя. На этом уровне различные программы, которыми пользуется человек, получают доступ к сети.

Протоколы: , HTTPS, FTP, POP3, XMPP, DNS, SIP, Gnutella и др.

Популярные протоколы

HTTP, HTTPS — протоколы передачи гипертекста. Используется при пересылке web-страниц.

FTP — протокол передачи файлов. Используется для обмена данными между компьютерами, некоторые из них играют роль специальных хранилищ файлов — файловых серверов.

POP — протокол почтового соединения. Предназначен для обработки запросов на получение почты от пользовательских почтовых программ.

SMTP — почтовый протокол, отвечающий за правила передачи сообщений.

Telnet — протокол удаленного доступа.

TCP — сетевой протокол, отвечающий за передачу данных в сети Интернет.

Ethernet — протокол, определяющий стандарты сети на физическом и канальном уровнях.

Протоколы передачи данных

Связь компьютеров и сетей через Интернет обеспечи­вается благодаря использованию единого протокола ком­муникации TCP/IP (читается ти-си-пи-ай-пи).

Протокол TCP/IP - это совмещение двух протоколов, определяющих различные аспекты передачи данных в сети:

протокол TCP (Transmission Control Protocol) - про­токол управления передачей данных. Этот протокол отвечает за разбиение передаваемой информации на пакеты и правильное восстановление информации из пакетов получателем; в случае обнаружения ошибки протокол выполняет автоматическую повторную пере­дачу пакета;

протокол IP (Internet Protocol) - протокол межсете­вого взаимодействия, отвечающий за доставку пакета по указанному адресу. Он позволяет пакету на пути к конечному пункту назначения проходить по многим сетям.

Схема передачи информации по протоколу TCP/IP та­кова: протокол TCP разбивает информацию на пакеты и нумерует все пакеты; далее с помощью протокола IP все па­кеты независимо друг от друга перемещаются по сети к по­лучателю, где протокол TCP проверяет, все ли пакеты полу­чены; после получения всех пакетов протокол TCP распо­лагает их в нужном порядке и собирает в единое целое.

Адресация в интернете

Каждый компьютер, подключенный к Интернету, име­ет два равноценных уникальных адреса: цифровой IP-ад­рес и символический доменный адрес. Присваивание ад­ресов происходит по следующей схеме: международная организация Сетевой информационный центр выдает ад­реса владельцам локальных сетей, а последние распреде­ляют конкретные адреса по своему усмотрению.

IP-адрес компьютера имеет длину 4 байта. Обычно пер­вый и второй байты определяют адрес сети, третий байт определяет адрес подсети, а четвертый - адрес компьюте­ра в подсети. Для удобства IP-адрес записывают в виде че­тырех чисел со значениями от 0 до 255, разделенных точ­ками, например 145.37.5.150, где адрес сети - 145.37; ад­рес подсети - 5; адрес компьютера в подсети - 150.

На практике используется так называемый доменный адрес (англ. domain - область), являющийся символиче­ским дублером числового IP-адреса. Пример доменного адреса: dom.ulitsa.gorod.ru. Здесь домен dom - имя реаль­ного компьютера, обладающего IP-адресом, домен ulitsa - имя группы, присвоившей имя этому компьютеру, домен gorod - имя более крупной группы, присвоившей имя до­мену ulitsa, и т. д. Старший домен занимает крайнее пра­вое положение.

В процессе передачи данных указываемый пользовате­лем доменный адрес преобразуется в числовой IP-адрес.

СЕРВИСЫ ИНТЕРНЕТА

В настоящее время сеть Интернет предоставляет своим пользователям семь видов основных услуг.

Первый вид услуг, который уже стал основным сер­висом Интернета, - WWW (англ. World Wide Web - Все­мирная паутина). WWW - это информационная систе­ма доступа к информационным ресурсам, разбросанным по всему миру. Среду WWW составляют WWW-узлы, на­зываемые также Web-сайтами (англ. site - местополо­жение). Обмен данными между Web-сайтами построен на протоколе передачи данных, который называется протоколом передачи гипертекста HTTP - HyperText Trans­fer Protocol.

Дело в том, что страницы Web-сайта представляют собой гипертекстовые и гипермедийные документы, кото­рые создаются с помощью специального языка разметки гипертекста HTML - HyperText Markup Language.

Гипертекст - это документ, в который вставлены так называемые гиперссылки на другие документы, располо­женные на других компьютерах Web-cemu. Щелкая мышью по гиперссылке (обычно это подчеркнутое и окрашенное слово) можно легко перейти к связанному с ней документу. Этот документ может находиться на другом компьютере Web-сети, в том числе в другой части планеты.

Гипермедиа - гипертекстовые документы, содержа­щие гиперссылки на мультимедийные объекты (звук, гра­фика, видео и т. д.) в Web-сети. При этом гиперссылки сами могут быть мультимедийными объектами.

Язык HTML добавляет к текстовым документам специ­альные командные фрагменты - тэги (англ. tag - ярлык, этикетка) - таким образом, что становится возможным раз­делять текст на абзацы, задавать заголовки различных уров­ней, строить таблицы, связывать с этими документами дру­гие тексты, графику, звук и видео и т. д.

Для доступа к связанным Web-документам использу­ется URL-адресация (Uniform Resource Locator). Все Web-документы в сети имеют URL-адреса. URL-адрес имеет до­менную структуру и состоит из двух частей: типа связи (http:), собственно адреса узла, имени каталога и файла на этом узле:

http://www.pogoda.ru/index.html

Web-сайт обычно содержит гипермедийные докумен­ты, связанные по смыслу, переплетенные взаимными ссыл­ками и физически размещенные на одном сервере. Каж­дый документ Web-страницы может содержать несколько экранных страниц текста и иллюстраций.

Каждый Web-сайт имеет свою начальную страницу (англ. homepage -домашняя страница) - гипермедийный документ, содержащий ссылки на составные части узла.

Адрес начальной страницы Web-сайта распространяется в Интернете в качестве адреса WWW-узла.

Пользователи работают с системой WWW с помощью программ-клиентов системы, называемых браузерами (англ. brows - листать, просматривать) и предназначенных для организации диалога с системой WWW. Пользователь просматривает Web-страницы, взаимодействуя с WWW-cep-верами и другими ресурсами в Интернете. Наиболее попу­лярен в настоящее время браузер Microsoft Internet Ex­plorer - MS IE. Браузеры WWW взаимодействуют с любы­ми типами серверов. Информацию, полученную от любого сервера, браузер WWW выводит на экран в форме, учиты­вающей возможности видеосистемы компьютера.

Гипертекстовая технология предоставляет пользовате­лям диалоговый доступ к информационному содержимо­му гипертекстовой среды и поддерживает форму персональ­ного общения в данной среде.

Второй вид услуг - FTP-серверы. Компьютеры, на ко­торых размещаются файлы для общего пользования, назы­ваются FTP-серверами. В Интернете имеется более 10 Тбайт бесплатных файлов, в том числе программных. Эти файлы можно скопировать с помощью программ пересылки фай­лов FTP, которые перемещают копии файлов с одного узла Интернета на другой в соответствии с протоколом FTP (File Transfer Protocol - протокол передачи файлов).

Третий вид услуг - электронная почта {Electronic mail, англ. mail - почта, сокращенно e-mail, читается и-мэйл). Служит для передачи текстовых сообщений в пре­делах Интернета и между другими сетями электронной почты. К тексту письма можно прикрепить программные, звуковые и графические файлы, которые обрабатываются с помощью протоколов SMTP (Simple Mail Transfer Proto­col) на почтовом сервере и POP (Post Office Protocol) для получения сообщений. Каждому абоненту, использующе­му электронную почту, присваивается уникальный домен­ный почтовый адрес, формат которого имеет вид <имя пользователя> @ <имя почтового сервера>

Например, [email protected].

Здесь bender - имя пользователя, vasjuky.ru - имя компьютера, @ - разделительный символ, его смысловое значение - предлог «на».

Сообщения, поступающие по e-mail, хранятся на спе­циальном почтовом сервере в выделенной для получателя области дисковой памяти - его электронном почтовом ящике, откуда их можно выгрузить и прочитать в любое удобное время. Для отправки сообщения нужно знать элек­тронный адрес абонента. При качественной связи элек­тронное письмо доходит в любую точку мира в течение не­скольких минут.

Самыми популярными почтовыми программами в Рос­сии являются MS Outlook Express и The Bat!. Первая по­ставляется в составе операционной системы Windows, a вторая - продукт молдавской компании RITLabs.

Четвертый вид услуг - система телеконференций, или группы новостей Usenet (от Users Network). Эта систе­ма организует коллективные обсуждения по различным направлениям, которые называются телеконференциями. В каждой телеконференции проводится ряд дискуссий по конкретным темам. Сегодня Usenet имеет около двадцати тысяч дискуссионных групп (NewsGroups), разбитых на несколько категорий:

news - вопросы, касающиеся системы телеконферен­ций;

сотр - компьютеры и программное обеспечение;

sci - научно-исследовательская деятельность;

soc - социальные вопросы;

talk - дебаты по различным спорным вопросам;

misc - все остальное.

Внутри каждой из этих категорий существует своя ие­рархия с выделением тематических групп.

Группы новостей - это специальные серверы, кото­рые быстро обмениваются информацией друг с другом и передают периодически обновляемые новости на компью­теры клиентов. Пользователь может стать таким клиен­том, подписавшись на получение новостей определенной группы у своего провайдера или у любого сервера, предос­тавляющего новостные услуги.

Пятый вид услуг - электронная доска объявлений BBS (Bulletin Board System). Пользователи имеют возмож­ность оставлять на ней сообщения. Многие электронные доски объявлений требуют регистрации.

Шестой вид услуг - Справочная служба Интернета. Примером является справочная служба RFC (Request for Comments), которая содержит сведения по разнообразной тематике для интернет-пользователя.

Седьмой вид услуг - служба управления удаленным компьютером Telnet. Подключившись к удаленному ком­пьютеру, с помощью этой службы можно распоряжаться его ресурсами. В частности, на удаленной супер-ЭВМ мож­но выполнить сложные расчеты, которые потребовали бы большой затраты времени, если бы проводились на обыч­ном персональном компьютере.

Протоколы связи в АСУ ТП

В современных системах автоматизации, в результате постоянной модернизации производства, все чаще встречаются задачи построения распределенных промышленных сетей с использованием гибких протоколов передачи данных.


Прошли те времена, когда где-нибудь в аппаратной ставился огромный шкаф с оборудованием, к нему тянулись километры толстых пучков кабелей, ведущих к датчикам и исполнительным механизмам. Сегодня, в подавляющем большинстве случаев, на много выгоднее установить несколько локальных контроллеров, объединенных в единую сеть, тем самым сэкономив на установке, тестировании, вводе в эксплуатацию и техническом обслуживании по сравнению с централизованной системой.


Для организации промышленных сетей используется множество интерфейсов и протоколов передачи данных, например Modbus, Ethernet, CAN, HART, PROFIBUS и пр. Они необходимы для передачи данных между датчиками, контроллерами и исполнительными механизмами (ИМ); калибровки датчиков; питания датчиков и ИМ; связи нижнего и верхнего уровней АСУ ТП. Протоколы разрабатываются с учетом особенностей производства и технических систем, обеспечивая надежное соединение и высокую точность передачи данных между различными устройствами. Наряду с надежностью работы в жестких условиях все более важными требованиями в системах АСУ ТП становятся функциональные возможности, гибкость в построении, простота интеграции и обслуживания, соответствие промышленным стандартам.


Наиболее распространённой системой классификации сетевых протоколов является теоретическая модель OSI (базовая эталонная модель взаимодействия открытых систем, англ. Open Systems Interconnection Basic Reference Model ). Спецификация этой модели была окончательно принята в 1984 году Международной Организацией по Стандартизации (ISO). В соответствии с моделью OSI протоколы делятся на 7 уровней, расположенных друг над другом, по своему назначению — от физического (формирование и распознавание электрических или других сигналов) до прикладного (API для передачи информации приложениями). Взаимодействие между уровнями может осуществляться, как вертикально, так и горизонтально (Рис. 1). В горизонтальном взаимодействии программам требуется общий протокол для обмена данными. В вертикальном - посредством интерфейсов.


Рис. 1. Теоретическая модель OSI.


Прикладной уровень

Прикладной уровень - уровень приложений (англ. Application layer ). Обеспечивает взаимодействие сети и приложений пользователя, выходящих за рамки модели OSI. На этом уровне используются следующие протоколы: HTTP, gopher, Telnet, DNS, SMTP, SNMP, CMIP, FTP, TFTP, SSH, IRC, AIM, NFS, NNTP, NTP, SNTP, XMPP, FTAM, APPC, X.400, X.500, AFP, LDAP, SIP, ITMS, Modbus TCP, BACnet IP, IMAP, POP3, SMB, MFTP, BitTorrent, eD2k, PROFIBUS.


Представительский уровень

Представительский уровень (англ. Presentation layer ) - уровень представления данных. На этом уровне может осуществляться преобразование протоколов и сжатие/распаковка или кодирование/декодирование данных, а также перенаправление запросов другому сетевому ресурсу, если они не могут быть обработаны локально. Запросы приложений, полученные с уровня приложений, он преобразует в формат для передачи по сети, а полученные из сети данные преобразует в формат, понятный приложениям. К этому уровню традиционно относят следующие протоколы: HTTP, ASN.1, XML-RPC, TDI, XDR, SNMP, FTP, Telnet, SMTP, NCP, AFP.


Сеансовый уровень

Сеансовый уровень (англ. Session layer ) управляет созданием/завершением сеанса связи, обменом информацией, синхронизацией задач, определением права на передачу данных и поддержанием сеанса в периоды неактивности приложений. Синхронизация передачи обеспечивается помещением в поток данных контрольных точек, начиная с которых возобновляется процесс при нарушении взаимодействия. Используемые протоколы: ASP, ADSP, DLC, Named Pipes, NBT, NetBIOS, NWLink, Printer Access Protocol, Zone Information Protocol, SSL, TLS, SOCKS.


Транспортный уровень

Транспортный уровень (англ. Transport layer ) организует доставку данных без ошибок, потерь и дублирования в той последовательности, как они были переданы. Разделяет данные на фрагменты равной величины, объединяя короткие и разбивая длинные (размер фрагмента зависит от используемого протокола). Используемые протоколы: TCP, UDP, NetBEUI, AEP, ATP, IL, NBP, RTMP, SMB, SPX, SCTP, DCCP, RTP, TFTP.


Сетевой уровень

Сетевой уровень (англ. Network layer ) определяет пути передачи данных. Отвечает за трансляцию логических адресов и имён в физические, за определение кратчайших маршрутов, коммутацию и маршрутизацию, за отслеживание неполадок и заторов в сети. Используемые протоколы: IP, IPv6, ICMP, IGMP, IPX, NWLink, NetBEUI, DDP, IPSec, ARP, RARP, DHCP, BootP, SKIP, RIP.


Канальный уровень

Канальный уровень (англ. Data link layer ) предназначен для обеспечения взаимодействия сетей на физическом уровне. Полученные с физического уровня данные проверяет на ошибки, если нужно исправляет, упаковывает во фреймы, проверяет на целостность, и отправляет на сетевой уровень. Канальный уровень может взаимодействовать с одним или несколькими физическими уровнями. Спецификация IEEE 802 разделяет этот уровень на 2 подуровня — MAC (Media Access Control) регулирует доступ к разделяемой физической среде, LLC (Logical Link Control) обеспечивает обслуживание сетевого уровня. Используемые протоколы: STP, ARCnet, ATM, DTM, SLIP, SMDS, Ethernet, FDDI, Frame Relay, LocalTalk, Token ring, StarLan, L2F, L2TP, PPTP, PPP, PPPoE, PROFIBUS.


Физический уровень

Физический уровень (англ. Physical layer ) предназначен непосредственно для передачи потока данных. Осуществляет передачу электрических или оптических сигналов в кабель или в радиоэфир и, соответственно, их приём и преобразование в биты данных в соответствии с методами кодирования цифровых сигналов. Используемые протоколы: RS-232, RS-422, RS-423, RS-449, RS-485, ITU-T, xDSL, ISDN, T1, E1, 10BASE-T, 10BASE2, 10BASE5, 100BASE-T, 1000BASE-T, 1000BASE-TX, 1000BASE-SX.


Как вы могли заметить, многие протоколы упоминаются сразу на нескольких уровнях. Это говорит о недоработанности и отдаленности теоретической модели от реальных сетевых протоколов, поэтому привязка некоторых из них к уровням OSI является условной.


В мировой практике, среди сетей общего применения, наиболее широко распространен протокол HTTP (англ. HyperText Transfer Protocol — «протокол передачи гипертекста» ). Относится к прикладному и представительскому уровням теоретической модели OSI. HTTP базируется на технологии «клиент-сервер», то есть существует потребитель (клиент), который инициирует соединение и посылает запрос, и поставщик (сервер), который ожидает соединения для получения запроса, производит необходимые действия и возвращает обратно сообщение с результатом. Основным типом НТТР-клиента является браузер, например Mozilla Firefox, Opera или Microsoft Internet Explorer. HTTP в настоящее время повсеместно используется во Всемирной паутине для получения информации с веб-сайтов.


Рис. 2. Технология клиент сервер.


На базе HTTP разработаны расширенные протоколы: HTTPS (англ. Hypertext Transfer Protocol Secure ), поддерживающий шифрование, и HTTP-NG (англ. HTTP Next Generation ), увеличивающий быстродействие Web и расширяющий возможности промышленного применения.


Положительные стороны: простота разработки клиентских приложений, возможность расширения протокола путем добавления собственных заголовков, распространенность протокола.


Отрицательные стороны: большой размер сообщений, по сравнению с двоичными данными, отсутствие навигации в ресурсах сервера, невозможность использования распределенных вычислений.


создание удаленных диспетчерских пунктов, Web-приложения для SCADA систем, программное обеспечение промышленных контроллеров, организация видеонаблюдения.


На сегодняшний день протокол HTTP и его модификации поддерживаются оборудованием и программным обеспечением большинства производителей. Рассмотрим некоторые из них.


В оборудовании компании Korenix серий JetNet, JetRock, JetPort, JetI/O, JetBox (построение сетей на базе промышленного Ethernet), JetWave (беспроводные решения) протоколы семейства HTTP используются для организации доступа, конфигурирования и управления устройствами.


Компания ICPDAS для работы с протоколом HTTP предлагает следующее оборудование и программное обеспечение. Контроллеры серии ХРАК, WinPAC, WinCon, LinPAC, ViewPAC работают под управлением операционных систем Windows и Linux, с встроенным HTTP-сервером. Программные пакеты InduSoft (SCADA), ISaGRAF, Web HMI, VXCOMM, MiniOS7 Studio, также используют HTTP-сервер для связи и взаимодействия с устройствами.


Управляемые коммутаторы, встраиваемые компьютеры, оборудование промышленных беспроводных сетей, производства компании Моха, не обходятся без использования протоколов семейства HTTP.


Рис. 3. Совместимость протоколов семейства Modbus.


Для организации взаимодействия между элементами автоматизации в промышленных сетях передачи данных широко применяется коммуникационный протокол Modbus. Существуют три основные реализации протокола Modbus, две для передачи данных по последовательным линиям связи, как медным EIA/TIA-232-E (RS-232), EIA-422, EIA/TIA-485-A (RS-485), так и оптическим и радио: Modbus RTU и Modbus ASCII, и для передачи данных по сетям Ethernet поверх TCP/IP: Modbus TCP.


Различие между протоколами Modbus ASCII и Modbus RTU заключается в способе кодирования символов. В режиме ASCII данные кодируются при помощи таблицы ASCII, где каждому символу соответствует два байта данных. В режиме RTU данные передаются в виде 8-ми разрядных двоичных символов, что обеспечивает более высокую скорость передачи данных. ASCII допускает задержку до 1 секунды в отличии от RTU, где сообщения должны быть непрерывны. Также режим ASCII имеет упрощенную систему декодирования и управления данными.


Протоколы семейства Modbus (Modbus ASCII, Modbus RTU и Modbus TCP/IP) используют один прикладной протокол, что позволяет обеспечить их совместимость. Максимальное количество сетевых узлов в сети Modbus - 31. Протяженность линий связи и скорость передачи данных зависит от физической реализации интерфейса. Элементы сети Modbus взаимодействуют, используя клиент-серверную модель, основанную на транзакциях, состоящих из запроса и ответа.


Обычно в сети есть только один клиент, так называемое, «главное» (англ. master) устройство, и несколько серверов — «подчиненных» (slaves) устройств. Главное устройство инициирует транзакции (передаёт запросы). Подчиненные устройства передают запрашиваемые главным устройством данные, или производят запрашиваемые действия. Главный может адресоваться индивидуально к подчиненному или инициировать передачу широковещательного сообщения для всех подчиненных устройств. Подчиненное устройство формирует сообщение и возвращает его в ответ на запрос, адресованный именно ему.


Области промышленного применения:


Простота применения протоколов семейства Modbus в промышленности обусловило его широкое распространение. На сегодняшний день, оборудование практически всех производителей поддерживает протоколы Modbus.


Компания ICPDAS предлагает широкий спектр коммуникационного оборудования для организации сетей на базе протоколов семейства Modbus: серия I-7000 (шлюзы DeviceNet, серверы Modbus, адресуемые коммуникационные контроллеры); программируемые контроллеры серий ХРАК, WinPAC, WinCon, LinPAC, ViewPAC.


Операторские панели производства компании Weintek, частотные преобразователи Control Techniques для связи с контроллерами также используют протокол Modbus.


Традиционно протоколы семейства Modbus поддерживаются OPC серверами SCADA систем (Clear SCADA, компании Control Microsystems, InTouch Wonderware, TRACE MODE)для связи с элементами управления (контроллерами, ЧРП, регуляторами и др.).


Рис. 4. Сеть Profibus.


В Европе широкое распространение получила открытая промышленная сеть PROFIBUS (PROcess FIeld BUS). Изначально, прототип этой сети был разработан компанией Siemens для своих промышленных контроллеров.


PROFIBUS объединяет технологические и функциональные особенности последовательной связи полевого уровня. Она позволяет объединять разрозненные устройства автоматизации в единую систему на уровне датчиков и приводов. Сеть PROFIBUS основывается на нескольких стандартах и протоколах, использует обмен данными между ведущим и ведомыми устройствами (протоколы DP и PA) или между несколькими ведущими устройствами (протоколы FDL и FMS).


Сеть PROFIBUS можно ассоциировать с тремя уровнями модели OSI: физический, канальный и уровень приложений.


Единым протоколом для доступа к шине для всех версий PROFIBUS является реализованный на втором уровне модели OSI протокол PROFIBUS-FDL. Данный протокол использует процедуру доступа с помощью маркера (token). Так же, как и сети на базе протоколов Modbus, сеть PROFIBUS состоит из ведущих (master) и ведомых (slave) устройств. Ведущее устройство может управлять шиной. Когда у ведущего (master) устройства есть право доступа к шине, оно может передавать сообщения без удаленного запроса. Ведомые устройства - это обычные периферийные устройства, не имеют прав доступа к шине, то есть они могут только подтверждать принимаемые сообщения или передавать сообщения ведущему устройству по его запросу. В минимальной конфигурации сеть может состоять либо из двух ведущих, либо из одного ведущего и одного ведомого устройства.


Одни и те же каналы связи сети PROFIBUS допускают одновременное использование нескольких протоколов передачи данных. Рассмотрим каждый из них.


PROFIBUS DP (Decentralized Peripheral - Распределенная периферия) — протокол, ориентированный на обеспечение скоростного обмена данными между ведущими DP-устройствами и устройствами распределённого ввода-вывода. Протокол характеризуется минимальным временем реакции и высокой стойкостью к воздействию внешних электромагнитных полей. Оптимизирован для высокоскоростных и недорогих систем.


PROFIBUS PA (Process Automation - Автоматизация процесса) — протокол обмена данными с оборудованием полевого уровня, расположенным в обычных или взрывоопасных зонах. Протокол позволяет подключать датчики и приводы на одну линейную шину или кольцевую шину.


PROFIBUS FMS (Fieldbus Message Specification - Спецификация сообщений полевого уровня) - универсальный протокол для решения задач по обмену данными между интеллектуальными сетевыми устройствами (контроллерами, компьютерами/программаторами, системами человеко-машинного интерфейса) на полевом уровне. Некоторый аналог промышленного Ethernet, обычно используется для высокоскоростной связи между контроллерами и компьютерами верхнего уровня.


Все протоколы используют одинаковые технологии передачи данных и общий метод доступа к шине, поэтому они могут функционировать на одной шине.


Положительные стороны: открытость, независимость от поставщика, распространенность.


Области промышленного применения: организация связи датчиков и исполнительных механизмов с контроллером, связь контроллеров и управляющих компьютеров, связь с датчиками, контроллерами и корпоративными сетями, в SCADA системах.


Основную массу оборудования использующего протокол PROFIBUS составляет оборудование компании SIEMENS. Но в последнее время этот протокол получил применение у большинства производителей. Во многом это обусловлено распространенностью систем управления на базе контроллеров Siemens.


Рис. 5. Сеть Profibus на базе оборудования ICP DAS.


Компания ICPDAS для реализации проектов на базе PROFIBUS предлагает ряд ведомых устройств: шлюзы PROFIBUS/Modbus серии GW, преобразователи PROFIBUS в RS-232/485/422 серии I-7000, модули и каркасы удаленного ввода/вывода PROFIBUS серии PROFI-8000. В настоящие время инженерами компании ICPDAS ведутся интенсивные разработки в области создания PROFIBUS ведущего устройства.