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

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

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


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


Для организации промышленных сетей используется множество интерфейсов и протоколов передачи данных, например 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 ведущего устройства.

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

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

Сетевые протоколы предписывают правила работы компьютерам, которые подключены к сети. Οʜᴎ строятся по многоуровневому принципу. Протокол некоторого уровня определяет одно из технических правил связи. Сегодня для сетевых протоколов используется модель OSI.

Модель OSI- ϶ᴛᴏ семиуровневая логическая модель работы сети. Модель OSI реализуется группой протоколов и правил связи, организованных в несколько уровней.

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

На канальном уровне определяются правила использования физического уровня узлами сети.

Сетевой уровень отвечает за адресацию и доставку сообщений.

Транспортный уровень контролирует очередность прохождения компонент сообщения.

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

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

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

Протокол TCP/IP - это два протокола нижнего уровня, являющиеся основой связи в Интернет. Протокол TCP (Transmission Control Protocol) разбивает передаваемую информацию на порции и нумерует всœе порции. С помощью протокола IP (Internet Protocol) всœе части передаются получателю. Далее с помощью протокола TCP проверяется, всœе ли части получены. При получении всœех порций TCP располагает их в нужном порядке и собирает в единое целое.

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

HTTP (Hyper Text Transfer Protocol) - ϶ᴛᴏ протокол передачи гипертекста. Протокол HTTP используется при пересылке Web-страниц с одного компьютера на другой.

FTP (File Transfer Protocol)- это протокол передачи файлов со специального файлового сервера на компьютер пользователя. FTP дает возможность абоненту обмениваться двоичными и текстовыми файлами с любым компьютером сети. Установив связь с удаленным компьютером, пользователь может скопировать файл с удаленного компьютера на свой или скопировать файл со своего компьютера на удаленный.

POP (Post Office Protocol) - это стандартный протокол почтового соединœения. Серверы POP обрабатывают входящую почту, а протокол POP предназначен для обработки запросов на получение почты от клиентских почтовых программ.

Стандарт SMTP (Simple Mail Transfer Protocol) задает набор правил для передачи почты. Сервер SMTP возвращает либо подтверждение о приеме, либо сообщение об ошибке, либо запрашивает дополнительную информацию.

UUCP (Unix to Unix Copy Protocol) - это ныне устаревший, но всœе еще применяемый протокол передачи данных, в т.ч. для электронной почты. Этот протокол предполагает использование пакетного способа передачи информации, при котором сначала устанавливается соединœение клиент- сервер и передается пакет данных, а затем автономно происходит его обработка, просмотр или подготовка писем.

TELNET - ϶ᴛᴏ протокол удаленного доступа. TELNET дает возможность абоненту работать на любой ЭВМ сети Интернет, как на своей собственной, то есть запускать программы, менять режим работы и т.д. На практике возможности лимитируются тем уровнем доступа, который задан администратором удаленной машины.

Протоколы передачи данных - понятие и виды. Классификация и особенности категории "Протоколы передачи данных" 2017, 2018.

  • - Методы доступа и протоколы передачи данных в локальных сетях

    В различных сетях существуют различные процедуры обмена данными между рабочими станциями. Эти процедуры называют протоколами передачи данных. Международный институт инженеров по электротехнике и радиоэлектронике (Institute of Electronics Engineers-IEEE) разработал стандарты для... .


  • - Виды процессов и протоколы передачи данных

    Различают три вида процессов, протекающих в сети: информационные, транспортные и коммуникационные. На Рис. 5 представлена схема стека протоколов передачи данных в сети и их место в уровневой модели сети OSI/ISO. Рис. 5 схема стека протоколов передачи данных в сети... .


  • - Многоуровневый подход. Протоколы передачи данных

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


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

    Что будет представлять из себя сеть через 10 лет, не возьмется предсказать ни один аналитик. Но ясно одно: если сейчас WWW, о которой никто не знал еще 15 лет назад, изучают в школе, (несмотря на то, что школьное образование всегда отличалось консерватизмом), то скоро умение пользоваться браузером станет столь же необходимым, школьном образовании, как умение читать и писать.

    Как ни прискорбно, об этом сообщать, но Интернет стал таким же детищем военных технологий, как и сам компьютер. В безумной гонке ядерных испытаний, которой были отмечены пятидесятые годы прошлого века, Соединенные Штаты произвели вроде бы не очень мощный взрыв на высоте 20 километров. Но последствия его были поистине ужасающими. Порожденный взрывом электромагнитный импульс вывел из строя не только телефонные и телеграфные линии, но и погрузил в темноту на несколько дней целый штат – Гавайи расположенный в тысяче миль от места взрыва. Мораль истории была достаточно грустной для американских военных: высотный ядерный взрыв не очень большой мощности, произведенный в центре страны, полностью лишает ее систем связи, а значит, и управления. Единственным вариантом решения проблемы являлось создание сверхзащищенной системы связи, способной передавать огромное количество информации во все точки страны.

    Историю Интернета можно разделить на несколько этапов:

    1945-1960.
    Теоретические работы по интерактивному взаимодействию человека с машиной, появление первых интерактивных устройств и вычислительных машин, на которых реализован режим разделения времени.

    Одной из важных дат в истории Интернета можно считать 1957 год, когда в рамках Министерства обороны США выделилась отдельная структура - Агентство передовых исследовательских проектов (DARPA). В 60-х годах основные работы DARPA были посвящены разработке метода соединений компьютеров друг с другом.

    Возглавлял первую исследовательскую программу, посвященную системе глобальной коммуникации, Дж. Ликлайдер (J.C.R. Licklider), который опубликовал работу "Galactic Network". В ней он предсказывал возможность существования в будущем глобальной компьютерной связи между людьми, имеющими мгновенный доступ к программам и базам данных из любой точки земного шара. Его предвидение отражает современное устройство международной сети Интернет. Ликлайдер сумел убедить в реальности своей концепции группу ученых, среди которых был будущий его преемник - исследователь Массачусетского Технологического Института (MIT) Лоренс Робертс (Lawrence G.Roberts.). Вновь создаваемая сеть должна была обеспечивать управление огромной страной в условиях полного отсутствия других средств связи, и поэтому ее пропускная способность имела очень важное значение.

    С этой точки зрения большое значение имела теория о коммутации пакетов для передачи данных, которую Леонард Клейнрок (Leonard Kleinrock) разработал в 1961 году и впервые опубликовал в июле 1964 года. При коммутации пакетов необходимые для передачи данные разбиваются на части и передаются различными путями через сеть. К каждой части присоединяется заголовок, содержащий полную информацию о доставке пакета по назначению. Коммутация пакетов обеспечивает большие пропускную способность канала и надежность системы. Достаточно сказать, что использование пакетной технологии позволило увеличить предлагаемую скорость передачи по каналам проектируемой сети ARPANET с 2.4 Кбит/с до 50 Кбит/с.

    1961-1970.
    Разработка технических принципов коммутации пакетов, ввод в действие ARPANet.

    В 1966 году DARPA пригласило Ларри Робертса для реализации проекта компьютерной сети ARPANET. Цели проекта было изучение способов поддержания связи в условиях ядерного нападения и разработка концепции децентрализованного управления военными и гражданскими объектами в период ведения войн. Децентрализация была принципиально важна, поскольку позволяла сети функционировать даже при уничтожении нескольких узлов. Для решения задачи на первом этапе предполагалось объединить несколько крупных исследовательских учреждений (университетов) и провести эксперименты в области компьютерных коммуникаций.

    Роберт Кэн представил общую архитектуру сети ARPANET, Лоренс Робертс разработал топологию и экономические вопросы, Леонард Клейнрок (Network Measurement Center, UCLA) представил все средства измерений и анализа сети.

    В 1968 году контракт на реализацию проекта был предоставлен компании Bolt Beranek and Newman (BBN), которая завершила его к концу 1969 года подключением в одну компьютерную сеть четырех исследовательских центров: UCLA, SRI, UCSB и University of Utah.
    В 1969 году ARPANET заработал. 20 октября 1969 года профессор Кленройк передал сообщение своему коллеге в университет Сан-Франциско. Сообщение - слово "LOG" (подключиться) - профессор разбил на 3 этапа - по одной букве в каждом. "Мы передали одну букву и спросили, прошла ли она. Когда получили положительный ответ, отправили вторую с тем же вопросом. Выяснили, что прошло и это сообщение, передали третью букву, но внезапно наш компьютер завис и связь прервалась,"- вспоминал г. Клейнрок в интервью ВВС.

    20 октября 1969 года считается первым днем существования интернета.

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

    1971-1980.
    Число узлов ARPANet возросло до нескольких десятков, проложены специальные кабельные линии, соединяющие некоторые узлы, начинает функционировать электронная почта, о результатах работ ученые докладывают на международных научных конференциях.

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

    DARPA, вдохновленная успехом ARPANET, пригласила Роберта Кэна для разработки новой программы “Internetting Project” с целью изучения методов соединения различных сетей между собой.

    В октябре 1972 года Роберт Кан организовал большую, весьма успешную демонстрацию ARPANET на Международной конференции по компьютерным коммуникациям. Это был первый показ на публике новой сетевой технологии.

    Также в 1972 году появилось первое "горячее" приложение - электронная почта

    В марте Рэй Томлинсон (Ray Tomlinson), движимый необходимостью создания для разработчиков ARPANET простых средств координации, написал базовые программы пересылки и чтения электронных сообщений. В июле Робертс добавил к этим программам возможности выдачи списка сообщений, выборочного чтения, сохранения в файле, пересылки и подготовки ответа. С тех пор более чем на десять лет электронная почта стала крупнейшим сетевым приложением. Для своего времени электронная почта стала тем же, чем в наши дни является Всемирная паутина - исключительно мощным катализатором роста всех видов межперсональных потоков данных.

    Интересные факты

      1971: Написана первая программа для эл.почты

      1972: Придуман знак @

      1973: Первая международная связь по эл. почте между Англией и Норвегией

      1974: Открыта первая коммерческая версия ARPANET - сеть Telnet

      1976: Роберт Меткалф, сотрудник исследовательской лаборатории компании Xerox, создает Ethernet - первую локальную компьютерную сеть.

      1979: Придуманы "смайлики" - изображения перевернутой набок физиономии, для придания посланиям эмоциональной окраски. Например, так: :-)

    1981-1990.
    Принят протокол TCP/ IP, Министерство обороны решает построить собственную сеть на основе ARPANet, происходит разделение на ARPANet и MILNet, вводится система доменных имен Domain Name System (DNS), число хостов доходит до 100 000.

    В 1974 году Internet Network Working Group (INWG), созданная DARPA и руководимая Винтоном Серфом разработала универсальный протокол передачи данных и объединения сетей Transmission Control Protocol/Internet Protocol (TCP/IP) - сердце Internet.

    В 1980 году INWG под руководством Винтона Серфа объявила TCP/IP стандартом и представила план объединения существующих сетей, сформулировав основные его принципы:

      Сети взаимодействуют между собой по протоколу TCP/IP.

      Объединение сетей производится через специальные “шлюзы” (gateway).

      Все подключаемые компьютеры используют единые методы адресации.

    В 1983 году DARPA обязала использовать на всех компьютерах ARPANET протокол TCP/IP, на базе которого Министерство обороны США разделило сеть на две части: отдельно для военных целей - MILNET, и научных исследований - сеть ARPANET.

    Для объединения имеющихся 6 крупных компьютерных центров и поддержания глобального академического и исследовательского сообществ в 1985 году Национальный Научный Фонд США (NSF) начал разработку программы построения межрегиональной сети NSFNET. Для руководства проектом в 1986 году был приглашен Стив Вульф.

    1991-2000.
    Новейшая история.

      1991: Европейская физическая лаборатория CERN создала известный всем протокол WWW - World Wide Web. Эта разработка была выполнена, прежде всего, для обмена информацией среди физиков. Появляются первые компьютерные вирусы, распространяемые через Интернет.

      1993: Создан первый Интернет-браузер Mosaic Марком Андреесеном в Университете штата Иллинойс. Число интернет-хостов превысило 2 млн. В сети действует 600 сайтов.

      1996: Началось соревнование между браузером Netscape, созданным под руководством Марка Андреесена, и Internet Explorer, разработанным компанией Microsoft. В мире уже существует 12,8 млн. хостов и 500 тыс. сайтов.

      2002: Сеть Интернет связывает 689 млн. человек и 172 млн. хостов.

    Основные понятия сети Интернет

    Интернет - это всемирная компьютерная сеть, объединяющая в единое целое десятки тысяч разнородных локальных и глобальных компьютерных сетей, связанных определенными соглашениями (протоколами). Ее назначение – обеспечить любому желающему постоянный доступ к информации. Благодаря сети стал доступен огромный объем информации. Так, пользователь в любой стране может связаться с людьми, разделяющими его интересы, или получить ценные сведения в электронных библиотеках, даже если они находятся на другом конце света. Нужная информация окажется в его компьютере за считанные секунды, пройдя путь по длинной цепочке промежуточных компьютеров, по кабелям и радио, через горы и моря, по дну океанов и через спутники..

    Интернет финансируется правительствами, научными и образовательными учреждениями, коммерческими структурами и миллионами частных лиц во всех частях света, но никто конкретно не является ее владельцем. Техническую сторону организации сети контролирует Федеральный сетевой совет (FNC),формируемый из приглашенных добровольцев, который 24 октября 1995 года принял определение того, что же мы подразумеваем под термином "Интернет":

    Internet – это глобальная компьютерная система, которая:

    Логически взаимосвязана пространством глобальных уникальных адресов (каждый компьютер, подключаемый к сети имеет свой уникальный адрес);

    Способна поддерживать коммуникации (обмен информацией);

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

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

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

    Компьютер сервер предоставляет услуги другим компьютерам, запрашивающим информацию, которые называют клиентами (пользователями, абонентами). Таким образом, работа в Internet предполагает наличие передатчика информации, приемника и канала связи между ними. Когда мы «входим» в Internet, наш компьютер выступает в качестве клиента, он запрашивает необходимую нам информацию на выбранном нами сервере.

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

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

    Набор соглашений о правилах формирования и форматах сообщений называется протоколом.

    Передаваемые данные разбиваются на небольшие порции, называемые пакетами. Каждый пакет перемещается в сети, независимо от других пакетов. Они переходят с одного узла на другой и далее пересылаются на другой узел, находящийся "ближе" к адресату. Если пакет передан неудачно, передача повторяется. Теоретически возможно, что разные сообщения пройдут разными путями, но все равно достигнут адресата и будут собраны в полный документ. Возможно, что некоторые документы, отправленные из Англии в Австралию, обогнут земной шар с востока на запад, а другие - с запада на восток.

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

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

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

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

    Схема передачи информации по протоколу TCP / IP такова:

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

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

    Протокол передачи гипертекста

    File Transfer Protocol

    SMTP

    Post Office Protocol 3

    Протокол получения электронных писем

    NNTP

    Протокол телеконференций

    Название протокола

    Расшифровка

    Назначение

    HTTP

    Hyper Text Transfer Protocol

    FTP

    Протокол передачи файлов

    Simple Mail Transfer Protocol

    Простой протокол отправки электронных писем

    POP3

    News Net Transfer Protocol

    Система адресации

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

    Итак, каждый компьютер, подключенный к сети Internet, имеет физический адрес (IP-адрес).

    IP-адрес - это уникальный номер, однозначно идентифицирующий компьютер в Internet. IP-адрес представляет собой четыре десятичных числа (от 0 до 255), разделенных точками, например, 194.67.67.97 (после последнего числа точка не ставится). Каждое число соответствует информационному объему в 1 байт или 8 бит.

    Расшифровка такого адреса ведется слева направо. Обычно первый и второй байты - это адрес сети, третий байт определяет адрес подсети, а четвертый - адрес компьютера в подсети.

    IP-адреса соединенных компьютеров.

    Таким образом, IP-адрес – это 4 байта или 32 бита. Если с помощью одного байта можно передать 2 8 = 256 вариантов, то с помощью 4-х байтов можно передать 2 32 = 4 млрд. вариантов. Таким образом, к сети Internet может быть максимально подключено 4 млрд. пользователей. Поскольку в настоящее время наблюдается стремительный рост пользователей Internet, а кроме того, современные технические достижения позволяют подключать к сети Internet не только компьютеры, но и сотовые телефоны, телевизоры, и даже холодильники, то это пространство адресов становится очень тесным. Для его расширения предполагается перевести Internet на 128-битный IP-адрес (максимум пользователей 2 128).

    В какой-то мере физический адрес аналогичен обычному телефонному номеру, однако, человеку пользоваться им неудобно. Поэтому в Интернет была введена Доменная Система Имен (DNS - Domain Name System).

    Доменная система имен ставит в соответствие числовому IP-адресу компьютера уникальное доменное имя

    Доменные имена и IP-адреса распределяются международным координационным центром доменных имен и IP-адресов (ICANN), в который входят по 5 представителей от каждого континента.

    Как же строится доменная система имен?

    Основным преимуществом этой системы является наглядность. Адрес разбивается на несколько полей, причем ни количество полей, ни их размер не ограничены.

    Доменная система имен имеет иерархическую структуру: домены верхнего уровня - домены второго уровня - домены третьего уровня. Домены верхнего уровня бывают двух типов: географические (двухбуквенные - каждой стране соответствует двухбуквенный код) и административные (трехбуквенные).

    России принадлежит географический домен ru. Давно существующие серверы могут относиться к домену su (СССР).

    Административные

    Тип организации

    Географические

    Страны

    com

    коммерческие

    ca

    Канада

    edu

    образовательные

    de

    Германия

    gov

    Правительственная США

    jp

    Япония

    int

    Международная

    ru

    Россия

    mil

    Военная США

    su

    СССР

    net

    Компьютерная сеть

    uk

    Англия

    org

    Некоммерческая

    us

    США

    Доменные имена читаются справа налево. Домен верхнего уровня расположен в крайнем справа поле. Все остальные поля адреса отдаются на усмотрение страны, за которой закреплен домен верхнего уровня. Например левее индекса страны может стоять сокращенное название города: spb - Санкт-Петербург , e-burg - Екатеринбург и т.д. Затем может идти название организации, имеющей локальную сеть. Например, et - электротехнический университет. Далее может идти название подразделения: ok - отдел кадров.

    Рассмотрим конкретный адрес: sch458.spb.ru . Домен высшего уровня ru означает, что компьютер с этим именем находится в Российской Федерации, затем идет домен второго уровня spb, что означает – в Санкт-Петербурге, и лишь домен третьего уровня - sch458 – реальный компьютер – соответствует организации, за которой числится данный доменный адрес – это имя в Интернете принадлежит нашей школе.

    Все DNS-адреса преобразуются в IP-адреса с помощью специальных DNS-серверов , которые на узлах сети извлекают из баз данных символические имена и заменяют их физическими адресами компьютеров. На базе DNS-адресов строятся также адреса электронной почты и адреса информационных ресурсов Интернета.

    IP-адрес или соответствующее ему доменное имя позволяют однозначно идентифицировать компьютер в сети Internet, но дело в том, что на компьютере может присутствовать множество различной информации в различных форматах, например, в виде файлов, электронных сообщений, страниц и т.п. Для того, чтобы можно было безошибочно получать нужную информацию и в нужном формате используется строка символов, которую называют универсальный указатель ресурса. Эта строка однозначно идентифицирует любой ресурс в сети Internet. Именно такая строка отображается в поле «Адрес» обозревателя Internet Explorer, когда мы «гуляем» по Internet

    Универсальный указатель ресурса или URL (Universal Resource Locator)
    включает в себя протокол доступа к документу, доменное имя или IP-адрес сервера, на котором находится документ, а также путь к файлу и имя файла:
    protocol://domain_name/path/file_name

    В данном примере использован наиболее часто используемый протокол http:// – протокол передачи гипертекста.

    Примечание: если имя файла не указано, то используется имя файла по умолчанию index.htm (index.html), либо default.htm (default.html).

    Вопросы.
  • Какой факт из истории Интернет показался вам наиболее значимым?
  • Что такое Интернет?
  • Кто является владельцем сети Интернет?
  • В чем разница между клиентом и сервером?
  • Что такое протокол?
  • Каким образом происходит передача данных в сети Интернет?
  • Какой протокол является базовым в Интернете?
  • В чем заключаются функции протокола TCP и IP?
  • Какие еще протоколы существуют в Интернете и каковы их функции?
  • Что такое URL?
  • Из каких частей состоит URL?
  • Предлагаемый вам тест содержит тринадцать вопросов, на каждый из которых дается три варианта ответа. Вопросы выводятся в отдельном окне. Отвечая на вопрос, установите курсор мышки на выбранном варианте ответа (он отобразится белым цветом) и щелкните на нем. По результатам выполнения теста будет выведено число верных ответов, повторных попыток ответа и оценка.

    Для начала теста нажмите на кнопку

    Различают два типа протоколов: базовые и прикладные. Базовые протоколы отвечают за физическую пересылку сообщений между компьютерами в сети Internet. Это протоколы IP и TCP. Прикладными называют протоколы более высокого уровня, они отвечают за функционирование специализированных служб. Например, протокол HTTP служит для передачи гипертекстовых сообщений, протокол FTP - для передачи файлов, SMTP - для передачи электронной почты.

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

    На нижнем уровне используются два основных протокола: IP (Internet Protocol - протокол Интернет) и TCP (Transmission Control Protocol - протокол управления передачей). Архитектура протоколов TCP/IP предназначена для объединения сетей. В их качестве могут выступать разные ЛВС (Token Ring, Ethernet и др.), различные национальные, региональные и глобальные сети. К этим сетям могут подключаться машины разных типов. Каждая из сетей работает в соответствии со своими принципами и типом связи. При этом каждая сеть может принять пакет информации и доставить его по указанному адресу. Таким образом, требуется, чтобы каждая сеть имела некий сквозной протокол для передачи сообщений между двумя внешними сетями.

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

    Обычно длина одного пакета не превышает 1500 байт. Поэтому одно электронное письмо может состоять из нескольких сотен таких пакетов. Малая длина пакета не приводит к блокировке линий свя-зи и не позволяет отдельным пользователям надолго захватывать канал связи.

    К каждому полученному TCP -пакету протокол IP добавляет информацию, по которой можно определить адреса отправителя и получателя. Это аналогично помещению адреса на конверт. Для каждого поступающего пакета маршрутизатор, через который проходит пакет, по данным IP -адреса определяет, кому из ближайших соседей необходимо переслать данный пакет, чтобы он быстрее оказался у получателя, т.е. принимает решение об оптимальном пути следования очередного пакета. При этом географически самый короткий путь не всегда оказывается оптимальным (быстрый канал на другой континент может быть лучше медленного в соседний город). Очевидно, что скорость и пути прохождения разных пакетов могут быть различными. Взаимосвязанные пакеты данных могут передаваться различными путями. Возможно, что пакеты будут путешествовать через разные континенты с различной скоростью. При этом пакеты, отправленные позже, могут дойти раньше. Независимо от длины пути в результате конечного числа пересылок TCP -пакеты достигают адресата.

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

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

    Необходимо подчеркнуть основное различие передачи информации по телефонной сети и по Интернету. Телефонная система при звонке по телефону в другой регион или даже на другой континент устанавливает канал между вашим телефоном и тем, на который вы звоните. Канал может состоять из десятков участков разной физической природы - медные провода, волоконно-оптические линии, беспроводные участки, спутниковая связь и т.д. Эти участки неизменны на протяжении всего сеанса связи. Это означает, что линия между вами и тем, кому вы звоните, постоянна в течение всего разговора, поэтому повреждения на любом участке линии способны прервать ваш разговор. При этом выделенная вам часть сети для других уже недоступна. Речь идет о сети с коммутацией каналов. Интернет же является сетью с коммутацией пакетов. Процесс пересылки электронной почты принципиально иной.

    Итак, Internet -данные в любой форме - электронное письмо, Web -страница или скачиваемый файл - путешествуют в виде группы пакетов. Каждый пакет посылается на место назначения по оптимальному из доступных путей. Поэтому даже если какой-то участок Интернет окажется нарушенным, то это не повлияет на доставку пакета, который будет направлен по альтернативному пути. Таким образом, во время доставки данных нет необходимости в фиксированной линии связи между двумя пользователями. Принцип пакетной коммутации обеспечивает основное преимущество Internet - надежность. Сеть может распределять нагрузку по различным участкам за тысячные доли секунды. Если какой-то участок оборудования сети поврежден, пакет может обойти это место и пройти по другому пути, обеспечив доставку всего послания. Прототип Интернет - сеть
    ARPAnet, разработанная по заказу Минобороны США, задумывалась именно как сеть, устойчивая к повреждениям (например, в случае военных действий), способная продолжать нормальное функционирование при выходе из строя любой ее части.

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

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

    В идеале, протокол должен быть абстрагирован от более нижнего уровня взаимодействия, будь то передача по 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) могут дать фору любым другим решениям. Но относительно попытки повсеместного их применения позволю себе процитировать Вирта:
    Инструмент должен соответствовать задаче. Если инструмент не соответствует задаче, нужно придумать новый, который бы ей соответствовал, а не пытаться приспособить уже имеющийся.