Протокол. Что такое сетевой протокол

  • 07.09.2019

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

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

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

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

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

На современном рынке информационных технологий протоколы используются на самых разных уровнях внедрения коммуникационных интерфейсов. Они постоянно дорабатываются, обновляются. Периодически разрабатываются новые протоколы, отражающие специфику развития коммуникационного рынка. Могут использоваться различные протоколы связи в сетях как бытового, так и промышленного назначения, реализованных на базе инфраструктуры научно-исследовательских центров и т. д. В числе самых распространенных стандартов соответствующего типа — Ethernet, CAN, HART.

Использование протоколов связи осуществляется также в сфере услуг мобильных коммуникаций. В числе таковых — 3G, 4G, GPRS.

Данные протоколы в сетях мобильных операторов различаются, в частности:

По скорости между абонентом и поставщиком коммуникационных услуг;

По диапазонам частот;

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

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

Классификация протоколов компьютерной связи

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

Прикладной;

Представительский;

Сеансовый;

Транспортный;

Сетевой;

Канальный;

Физический.

Изучим их подробнее.

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

Рассматриваемый уровень, в рамках которого может быть классифицирован тот или иной протокол связи, относится, прежде всего, к приложениям. То есть, он обеспечивает коммуникации между и конкретными программами пользователя. Здесь используются такие протоколы, как HTTP, Telnet, DNS, IRC, BitTorrent и многие другие, посредством которых осуществляется поставка современных онлайновых сервисов.

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

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

Конкретные приложения задают определенные запросы в сеть, после чего — преобразуются в язык, понятный серверу. Далее происходит обработка запроса. Затем ответ от сервера преобразуется, в свою очередь, в язык, понятный приложению. В числе популярных протоколов соответствующего типа — ASN, FTP, SMTP. Можно также в определенной степени отнести к таковым и HTTP, FTP.

Сеансовый уровень протоколов связи

На данном уровне протокол связи используется в целях осуществления конкретной операции — например, синхронизации тех или иных задач, создания сеанса связи, отправки или получения файла. В числе распространенных протоколов, что используются в подобных целях — ASP, DLC, SOCKS.

Транспортный уровень протоколов связи

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

Сетевой уровень протоколов

Следующий тип стандартов, на основе которого может функционировать система связи — протоколы сетевого уровня. Они отвечают, прежде всего, за способы передачи данных, трансляцию адресов, коммутацию, мониторинг качества работы инфраструктуры. К таким протоколам можно отнести, в частности, тот же TCP/IP, ICMP. DHCP.

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

Данные стандарты применяются для обеспечения функционирования ключевых аппаратных компонентов сети. Соответствующие протоколы позволяют системе, прежде всего, проверить данные, поступающие с физического уровня, на наличие ошибок. При необходимости также осуществляется их корректировка.В числе таких стандартов — распространенный протокол связи PPP, такие алгоритмы, как SLIP, L2F, PROFIBUS. В принципе, к канальным протоколам можно отнести и Ethernet.

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

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

В случае с проводной передачей могут задействоваться такие стандарты, как RS-232, xDSL, 100BASE-T. Распространенные протоколы беспроводной связи — в частности, реализованной с помощью Wi-Fi-роутеров - те, что относятся к типу IEEE 802.11.

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

Что представляет собой протокол PPP?

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

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

Существует несколько разновидностей соответствующего стандарта — например, PPPoE, PPPoA. При этом структура протокола, о котором идет речь, включает несколько стандартов: LCP, NCP, PAP, CHAP, MLPPP. Еще один распространенный на современном IT-рынке протокол — HTTP.

Что представляет собой протокол HTTP?

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

Стандарт, о котором идет речь, предполагает передачу данных от программно-аппаратного объекта в статусе клиента к серверу и наоборот. Первый направляет второму запросы, а тот отвечает на них по установленному алгоритму. Существует несколько разновидностей рассматриваемого протокола: например, HTTPS, HTTP-NG. Главные преимущества, обуславливающие тот факт, что протокол связи HTTP стал одним из самых популярных:

Универсальность;

Простота реализации;

Возможность расширения;

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

Есть и у него и ряд недостатков, выделяемых экспертами:

Достаточно большая величина отдельных сообщений;

Неприспособленность к распределенным вычислениям;

Отсутствие возможности осуществлять навигацию по ресурсам, размещенным на сервере.

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

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

Если говорить конкретно о сфере промышленности, то к числу самых востребованных протоколов в соответствующем сегменте рынка можно отнести Modbus.

Что представляет собой протокол Modbus?

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

Есть версии Mobdus, адаптированные для передачи данных поверх TCP/IP. Еще одно популярное в среде промышленных предприятий решение — PROFIBUS-FDL.

Что представляет собой протокол PROFIBUS-FDL?

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

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

Так или иначе, рассматриваемый протокол связи дополняется следующими стандартами:

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

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

Стандарт PROFIBUS FMS характеризуется универсальностью. Он предназначен, прежде всего, для организации обмена данными между высокотехнологичными компонентами промышленной инфраструктуры — компьютерами, программаторами, контроллерами.

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

Резюме

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

Фактически речь идет о международных стандартах: современные протоколы сотовой связи, проводных, Wi-Fi-коммуникаций, распространены очень широко, общедоступны, относительно легко масштабируются. Безусловно, в ряде случаев даже на таких глобальных рынках, как оказание услуг сотовой связи возможно применение региональных протоколов, но в интересах крупнейших брендов — внедрять, если это не противоречит интересам бизнеса, а в ряде случаев — и государства, как можно более унифицированные стандарты, что позволит активизировать международные коммуникации.

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

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

Наверное Вы не раз слышали термины ICMP, TCP, UDP и им подобные. В данной статье описаны основные сетевые протоколы. Что они означают, где используются и какая разница между ними. Я попыталась систематизировать данную информацию, чтобы более тщательно разобраться с ней.

В основе функционирования Интернет положена работа нескольких протоколов, которые располагаются один поверх другого. Какие же основные из них и что означают эти аббревиатуры?

MAC (Media Access Control) – это протокол низкого уровня. Его применяют в качестве идентификации устройств в локальной сети. Каждое устройство, которое подключено к Интернету имеет свой уникальный MAC адрес. Этот адрес задан производителем. Это протокол уровня соединения, с которым довольно часто приходится сталкиваться каждому пользователю.

IP (Internet Protocol) по сравнению с MAC, располагается на уровень выше. IP адреса уникальны для каждого устройства и дают возможность компьютерам находить и определять друг друга в сети. IP принадлежит сетевому уровню модели TCP/IP.

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

ICMP (Internet control message protocol) предназначен для того, чтобы устройства могли обмениваться сообщениями. Это к примеру могут быть сообщения об ошибках или информационные оповещения. Данные этот протокол не передает информацию. Этот протокол находится уровнем выше нежели протокол IP.

TCP (Transmission control protocol) – один из основных сетевых протоколов, который находится на одном уровне с предыдущим протоколом ICMP. Он управляет передачей данных. Бывают ситуации, когда пакеты могут приходить не в том порядке или вообще где-то теряться. Но протокол TCP обеспечивает правильный порядок доставки и дает возможность исправить ошибки передачи пакетов. Информация подается в правильном порядке для приложения. Соединение осуществляется с помощью специального алгоритма, который предусматривает отправку запроса и подтверждение открытия соединения двумя компьютерами. Множество приложений используют TCP, сюда относят SSH, WWW, FTP и другие.

UDP (user datagram protocol) – известный протокол, чем-то похожий с TCP, который также функционирует на транспортном уровне. Основное отличие – ненадежная передача данных: данные не проходят проверку при получении. В некоторых случаях этого вполне достаточно. За счет отправки меньшего количества пакетов, UDP работает шустрее чем TCP. Нет необходимости устанавливать соединение и протокол используется для отправки пакетов сразу на несколько устройств или IP телефонии.

Протокол приложения HTTP (hypertext transfer protocol) лежит в основе работы всех сайтов в Сети. HTTP дает возможность запрашивать необходимые ресурсы у удаленной системы, например, веб страницы и файлы.

FTP (file transfer protocol) – используется для передачи данных. Функционирует на уровне приложений, чем обеспечивается передача файла от одного компьютера к другому. FTP по праву считается небезопасным, его не стоит применять для передачи личных данных.

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

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

POP3 (Post Office Protocol) – стандартный протокол, который используется для приема сообщений электронной почты. Протокол почтового соединения предназначен для обработки запросов на получение почты от клиентских почтовых программ.

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

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

4589 раз(а) 10 Сегодня просмотрено раз(а)

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

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

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

Сетевым протоколом называется набор правил, позволяющий осуществлять соединение и обмен данными между двумя и более включёнными в сеть компьютерами. Фактически разные протоколы зачастую описывают лишь разные стороны одного типа связи; взятые вместе, они образуют так называемый стек протоколов. Названия <протокол> и <стек протоколов> также указывают на программное обеспечение, которым реализуется протокол.

  • Прикладной уровень (Application layer). Верхний (7-й) уровень модели, обеспечивает взаимодействие сети и пользователя. Уровень разрешает приложениям пользователя доступ к сетевым службам, таким как обработчик запросов к базам данных, доступ к файлам, пересылке электронной почты. Также отвечает за передачу служебной информации, предоставляет приложениям информацию об ошибках и формирует запросы к уровню представления. Пример: HTTP, POP3, SMTP.
  • Уровень представления (Presentation layer). 6-й уровень отвечает за преобразование протоколов и кодирование/декодирование данных. Запросы приложений, полученные с уровня приложений, он преобразует в формат для передачи по сети, а полученные из сети данные преобразует в формат, понятный приложениям. На уровне представления может осуществляться сжатие/распаковка или кодирование/декодирование данных, а также перенаправление запросов другому сетевому ресурсу, если они не могут быть обработаны локально.
  • Сеансовый уровень (Session layer). 5-й уровень модели отвечает за поддержание сеанса связи, что позволяет приложениям взаимодействовать между собой длительное время. Сеансовый уровень управляет созданием/завершением сеанса, обменом информацией, синхронизацией задач, определением права на передачу данных и поддержанием сеанса в периоды неактивности приложений. Синхронизация передачи обеспечивается помещением в поток данных контрольных точек, начиная с которых возобновляется процесс при нарушении взаимодействия.
  • Транспортный уровень (Transport layer). 4-й уровень модели, предназначен для доставки данных без ошибок, потерь и дублирования в той последовательности, как они были переданы. При этом неважно, какие данные передаются, откуда и куда, то есть он предоставляет сам механизм передачи. Блоки данных он разделяет на фрагменты, размер которых зависит от протокола, короткие объединяет в один, а длинные разбивает. Протоколы этого уровня предназначены для взаимодействия типа точка-точка. Пример: TCP, UDP
  • Сетевой уровень (Network layer). 3-й уровень сетевой модели OSI, предназначен для определения пути передачи данных. Отвечает за трансляцию логических адресов и имён в физические, определение кратчайших маршрутов, коммутацию и маршрутизацию, отслеживание неполадок и заторов в сети. На этом уровне работает такое сетевое устройство, как маршрутизатор.
  • Уровень звена данных (Data Link layer). Часто это уровень называется канальным. Этот уровень предназначен для обеспечения взаимодействия сетей на физическом уровне и контроля за ошибками, которые могут возникнуть. Данные, полученные с физического уровня, он упаковывает во фреймы, проверяет на целостность, если нужно исправляет ошибки и отправляет на сетевой уровень. Канальный уровень может взаимодействовать с одним или несколькими физическими уровнями, контролируя и управляя этим взаимодействием. Спецификация IEEE 802 разделяет этот уровень на 2 подуровня - MAC (Media Access Control) регулирует доступ к разделяемой физической среде, LLC (Logical Link Control) обеспечивает обслуживание сетевого уровня. На этом уровне работают коммутаторы, мосты. В программировании этот уровень представляет драйвер сетевой платы, в операционных системах имеется программный интерфейс взаимодействия канального и сетевого уровней между собой, это не новый уровень, а просто реализация модели для конкретной ОС. Примеры таких интерфейсов: ODI, NDIS
  • Физический уровень (Physical layer). Самый нижний уровень модели, предназначен непосредственно для передачи потока данных. Осуществляет передачу электрических или оптических сигналов в кабель или в радиоэфир и соответственно их приём и преобразование в биты данных в соответствии с методами кодирования цифровых сигналов. Другими словами, осуществляет интерфейс между сетевым носителем и сетевым устройством. На этом уровне работают концентраторы (хабы), повторители (ретрансляторы) сигнала и медиаконверторы. Функции физического уровня реализуются на всех устройствах, подключенных к сети. Со стороны компьютера функции физического уровня выполняются сетевым адаптером или последовательным портом.

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

  • TCP/IP
  • IMAP4
  • Gorpher

КЛАССИФИКАЦИЯ КС ПО РАЗМЕРУ. НАЗВАНИЕ ТИПОВ КС, ИХ ПРИМЕРНАЯ ПРОТЯЖЕННОСТЬ И ПРИМЕНЕНИЕ .

Локальная сеть

Локальная сеть – это компьютерная сеть небольшой протяженности: в пределах комнаты, этажа, здания. Обычно такие сети действуют в пределах одного учреждения и имеют небольшой радиус действия: 1-10 км. Она сеть всегда является ведомственной. В настоящее время не существует четких ограничений на территориальный разброс абонентов локальной вычислительной сети. Обычно такая сеть привязана к конкретному месту. К классу локальных сетей относятся сети отдельных предприятий, фирм, банков, офисов и т.д. Локальная сеть обеспечивает высокие скорости передачи данных. А так как в этих сетях среда обычно контролируема, линии связи короткие, элементы структуры однородные, то частота ошибок в них низкая и протоколы обмена упрощены. В локальных сетях обычно не используются средства коммуникации общего назначения (телефонные линии) для организации обмена информацией. Дополнительное преимущество такой сети заключается в значительной экономии ресурсов. Так, вместо того, чтобы иметь принтер для каждого компьютера, можно иметь только один принтер. Любой компьютер в сети мог послать информацию для печати на этот принтер

Основные компоненты локальной сети: несколько ПК, снабженных сетевым адаптером, или сетевой картой; среда передачи, объединяющая необходимые узлы; сетевое программное обеспечение. Для объединения компьютеров в локальную сеть требуется вставить в каждый подключаемый к сети компьютер сетевой адаптер (контроллер), который позволяет компьютеру получать информацию из локальной сети и передавать данные в сеть, а также соединить компьютеры кабелями, по которым происходит передача данных между компьютерами и другими подключенными к сети устройствами (принтерами, сканерами и т.д.). В некоторых типах сетей кабели соединяют компьютеры непосредственно, в других соединение кабелей осуществляется через специальные устройства-концентраторы (или hub), коммутаторы и др. В небольших сетях обычно компьютеры соединяются кабелями с концентратором, который и передает сигналы от одних подключенных к нему компьютеров к другим. Технические средства определяют лишь потенциальные возможности компьютерных сетей. Истинные же ее возможности определяет программное обеспечение. Что же дают локальные сети? экономию места в памяти, т.к. многие пользователи применяют одни и те же программные продукты; хорошую систему защиты при записи информации; обеспечение связи между отдельными пользователями через компьютерную почту.

Региональные сети

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

Глобальные сети

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