- Протоколы передачи данных: что это, какие бывают и в чём различия?
- Авторизуйтесь
- Протоколы передачи данных: что это, какие бывают и в чём различия?
- IP — Internet Protocol
- TCP/IP — Transmission Control Protocol/Internet Protocol
- UDP — User Datagram Protocol
- FTP — File Transfer Protocol
- HTTP — HyperText Transfer Protocol
- NTP — Network Time Protocol
- SSH — Secure SHell
- Обзор сетевых протоколов и протоколов обмена сообщениями для IoT
- IoT-сети
- Протоколы канального уровня
- Сетевой уровень
- Транспортный уровень
- Прикладной уровень и протоколы обмена сообщениями
- Другие протоколы обмена сообщениями
- Обзор Google Trends
- Резюме
- Информационные технологии, интернет, веб программирование, IT, Hi-Tech, …
- Сетевые протоколы и их взаимодействие. Правила, управляющие коммуникациями. Индустриальные стандарты и технологически независимые протоколы
- Правила, Управляющие Коммуникациями
- Использование Слоев Для Описания Коммуникации Лицом к Лицу
- Сетевые Протоколы
- Наборы Протоколов и Индустриальные Стандарты
- Взаимодействие Протоколов
- Технологично Независимые Протоколы
Протоколы передачи данных: что это, какие бывают и в чём различия?
Авторизуйтесь
Протоколы передачи данных: что это, какие бывают и в чём различия?
Интернет очень большой и комплексный. Но на базовом уровне это всего лишь связь между различными компьютерами (не только персональными). Эта связь представляет из себя сетевые протоколы передачи данных — набор правил, который определяет порядок и особенности передачи информации для конкретных случаев.
Протоколов большое множество. Про основные из них рассказано далее.
IP — Internet Protocol
Протокол передачи, который первым объединил отдельные компьютеры в единую сеть. Самый примитивный в этом списке. Он является ненадёжным, т. е. не подтверждает доставку пакетов получателю и не контролирует целостность данных. По протоколу IP передача данных осуществляется без установки соединения.
Основная задача этого протокола — маршрутизация датаграмм, т. е. определение пути следования данных по узлам сети.
Популярная версия на текущий момент — IPv4 с 32-битными адресами. Это значит, что в интернете могут хранится 4.29 млрд адресов IPv4. Число большое, но не бесконечное. Поэтому существует версия IPv6, которая поможет решить проблему переполнения адресов, ведь уникальных IPv6 будет 2 ^ 128 адресов (число с 38 знаками).
TCP/IP — Transmission Control Protocol/Internet Protocol
Это стек протоколов TCP и IP. Первый обеспечивает и контролирует надёжную передачу данных и следит за её целостностью. Второй же отвечает за маршрутизацию для отправки данных. Протокол TCP часто используется более комплексными протоколами.
UDP — User Datagram Protocol
Протокол, обеспечивающий передачу данных без предварительного создания соединения между ними. Этот протокол является ненадёжным. В нём пакеты могут не только не дойти, но и прийти не по порядку или вовсе продублироваться.
Основное преимущество UDP протокола заключается в скорости доставки данных. Именно поэтому чувствительные к сетевым задержкам приложения часто используют этот тип передачи данных.
FTP — File Transfer Protocol
Протокол передачи файлов. Его использовали ещё в 1971 году — задолго до появления протокола IP. На текущий момент этим протоколом пользуются при удалённом доступе к хостингам. FTP является надёжным протоколом, поэтому гарантирует передачу данных.
Этот протокол работает по принципу клиент-серверной архитектуры. Пользователь проходит аутентификацию (хотя в отдельных случаях может подключаться анонимно) и получает доступ к файловой системе сервера.
Это не только система доменных имён (Domain Name System), но и протокол, без которого эта система не смогла бы работать. Он позволяет клиентским компьютерам запрашивать у DNS-сервера IP-адрес какого-либо сайта, а также помогает обмениваться базами данных между серверами DNS. В работе этого протокола также используются TCP и UDP.
HTTP — HyperText Transfer Protocol
Изначально протокол передачи HTML-документов. Сейчас же он используется для передачи произвольных данных в интернете. Он является протоколом клиент-серверного взаимодействия без сохранения промежуточного состояния. В роли клиента чаще всего выступает веб-браузер, хотя может быть и, например, поисковый робот. Для обмена информацией протокол HTTP в большинстве случаев использует TCP/IP.
HTTP имеет расширение HTTPS, которое поддерживает шифрование. Данные в нём передаются поверх криптографического протокола TLS.
NTP — Network Time Protocol
Не все протоколы передачи нужны для обмена классического вида информацией. NTP — протокол для синхронизации локальных часов устройства со временем в сети. Он использует алгоритм Марзулло. Благодаря нему протокол выбирает более точный источник времени. NTP работает поверх UDP — поэтому ему удаётся достигать большой скорости передачи данных. Протокол достаточно устойчив к изменениям задержек в сети.
Последняя версия NTPv4 способна достигать точности 10мс в интернете и до 0,2мс в локальных сетях.
SSH — Secure SHell
Протокол для удалённого управления операционной системой с использованием TCP. В SSH шифруется весь трафик, причём с возможностью выбора алгоритма шифрования. В основном это нужно для передачи паролей и другой важной информации.
Также SSH позволяет обрабатывать любые другие протоколы передачи. Это значит, что кроме удалённого управления компьютером, через протокол можно пропускать любые файлы или даже аудио/видео поток.
SSH часто применяется при работе с хостингами, когда клиент может удалённо подключиться к серверу и работать уже оттуда.
Источник
Обзор сетевых протоколов и протоколов обмена сообщениями для IoT
Привет, хабровчане! Первый в России онлайн-курс IoT-разработчик стартует в OTUS уже в октябре. Прямо сейчас открыт набор на курс, в связи с чем мы продолжаем делиться с вами полезными материалами.
Интернет вещей (IoT, Internet of Things) будет построен на базе существующей сетевой инфраструктуры, технологий и протоколов, используемых в настоящее время в домах/офисах и в Интернете, и предложит много другого.
Цель данного руководства — дать краткий обзор сетевых и прикладных протоколов для IoT.
Примечание. У вас должны быть знания основ сетевых технологий.
IoT-сети
IoT будет работать в существующих TCP/IP-сетях.
TCP/IP использует четырехуровневую модель с определенными протоколами на каждом уровне. См. understanding the TCP/IP 4 layer model (разбираемся с четырехуровневой моделью TCP/IP).
На диаграмме ниже показано сравнение протоколов, используемых в настоящее время, и тех что, скорее всего, будут использоваться для IoT.
Примечания к диаграмме:
Размер шрифта отображает степень популярности протокола. Например, слева IPv4 больше, так как он гораздо популярнее в современном Интернете. Однако справа он меньше, поскольку ожидается, что IPv6 будет более популярным в IoT.
Показаны не все протоколы.
Больше всего изменений на канальном (уровни 1 и 2) и прикладном уровнях (уровень 4).
Сетевой и транспортный уровни, скорее всего, останутся неизменными.
Протоколы канального уровня
На канальном уровне (Data Link) вам нужно соединить устройства между собой. Они могут находиться как недалеко, например, в локальных сетях (local networks) так и на большом расстоянии друг от друга: в городских (metropolitan area networks) и глобальных сетях (wide area networks).
В настоящее время на этом уровне в домашних и офисных сетях (LAN) используются Ethernet и Wi-Fi, а в мобильных (WAN) — 3G / 4G. Однако многие IoT-устройства маломощные, например, датчики, и питаются только от батарей. В этих случаях Ethernet не подходит, но можно использовать low powered Wi-Fi и low powered Bluetooth.
Хотя для подключения этих устройств по-прежнему будут использоваться существующие беспроводные технологии (Wi-Fi, Bluetooth, 3G / 4G), стоит также обратить внимание на новые технологии, специально разработанные для IoT-приложений, популярность которых, по всей вероятности, будет расти.
BLE – Bluetooth Low Energy
LoRaWAN – Long Range WAN
Более подробно они описаны в статье An overview of IOT wireless technologies (обзор беспроводных технологий IoT).
Сетевой уровень
На сетевом уровне (Networking) в долгосрочной перспективе будет доминировать протокол IPv6. Маловероятно, что будет использоваться IPv4, но он может играть определенную роль на начальных этапах. Большинство IoT-устройств для дома, например, умные лампочки, в настоящее время используют IPv4.
Транспортный уровень
На транспортном уровне (Transport) в Интернете и вебе доминирует TCP. Он используется как в HTTP, так и во многих других популярных протоколах Интернета (SMTP, POP3, IMAP4 и т. д.).
MQTT, который, как я ожидаю, станет одним из основных протоколов прикладного уровня для обмена сообщениями, в настоящее время использует TCP.
Однако в будущем из-за более низких накладных расходов, я ожидаю, что UDP будет более популярен для IoT. Вероятно, более широкое распространение получит MQTT-SN, работающий поверх UDP. См. статью о сравнении TCP vs UDP .
Прикладной уровень и протоколы обмена сообщениями
Важные характеристики для протоколов IoT:
Скорость — количество передаваемых данных в секунду.
Задержка — время, необходимое для передачи сообщения.
Наличие программных средств.
В настоящее время на этом уровне активно используются два основных протокола: HTTP и MQTT.
HTTP, вероятно, самый известный протокол этого уровня, лежащий в основе веба (WWW). Он по прежнему будет иметь важное значение для IoT, поскольку используется для REST API — основного механизма взаимодействия веб-приложений и сервисов. Однако, из-за высоких накладных расходов, HTTP вряд ли станет основным протоколом IoT, хотя все равно будет широко использоваться в Интернете.
MQTT (Message Queuing Telemetry Transport) стал основным протоколом обмена сообщениями в IoT, благодаря своей легкости и простоте в использовании. См. статью Introduction to MQTT for beginners (Введение в MQTT для начинающих).
Сравнение HTTP и MQTT для IoT
MQTT быстро становится стандартом де-факто для IoT-приложений. Это происходит из-за его легкости и скорости по сравнению с HTTP и того, что он является протоколом «один ко многим», а не «один к одному» (HTTP).
Многие современные веб-приложения, с радостью использовали бы MQTT вместо HTTP, если бы он был доступен на момент их разработки.
Хороший пример — отправка информации множеству клиентов, например, о прибытии и отправлении поездов / автобусов / самолетов. В этом сценарии протокол «один-к-одному», такой как HTTP, имеет большие накладные расходы и создает большую нагрузку на веб-серверы. Масштабирование этих веб-серверов может быть затруднено. С MQTT клиенты подключаются к брокеру, которые легко можно добавлять для балансировки нагрузки. Смотрите об этом туториал с видео Republish HTML Data Over MQTT (Flight Arrivals Example) и статью MQTT vs HTTP for IOT.
Другие протоколы обмена сообщениями
HTTP не был разработан для IoT-приложений, но, как уже упоминалось, он будет широко использоваться в течение какого-то времени благодаря его широкому использованию в API.
Почти все платформы IoT поддерживают как HTTP, так и MQTT.
Однако есть и другие протоколы, которые стоит рассмотреть.
MQTT — (Message Queuing Telemetry Transport). Использует TCP/IP. Для модели «издатель-подписчик» требуется брокер сообщений.
AMQP — (Advanced Message Queuing Protocol). Использует TCP/IP. Модели «издатель-подписчик» и «точка-точка».
COAP — (Constrained Application Protocol). Использует UDP. Разработан специально для IoT, использует модель запроса-ответа как в HTTP. RFC 7252.
DDS — (Data Distribution Service)
В этой статье рассматриваются основные протоколы и их применения. Вывод этой статьи заключается в том, что IoT будет использовать набор протоколов, в зависимости от их предполагаемого применения.
Однако, если оглянуться назад, в первые годы существования Интернета протокол HTTP, впоследствии ставший доминирующим, был всего лишь одним из множества протоколов.
Несмотря на то что HTTP не был изначально задуман для передачи файлов и электронной почты, сегодня он используется и для того и для другого.
Я ожидаю, что в IoT с протоколами обмена сообщениями произойдет то же самое: большинство сервисов будут использовать один преобладающий протокол.
Ниже приведены графики Google Trends, показывающие, как изменялась популярность MQTT, COAP и AMQP за последние несколько лет.
Обзор Google Trends
Поддержка протоколов по платформам
AWS — MQTT, HTTPS, MQTT over websockets
IBM Bluemix – MQTT,HTTPS,MQTT
Резюме
Больше всего изменений на канальном (уровни 1 и 2) и прикладном уровнях (уровень 4).
Сетевой и транспортный уровни, скорее всего, останутся неизменными.
На прикладном уровне компоненты IoT будут использовать протоколы обмена сообщениями. Хотя мы все еще находимся на раннем этапе развития IoT, вполне вероятно, что выделится один или, возможно, два протокола обмена сообщениями.
За последние несколько лет MQTT стал самым популярным, и именно на нем я сейчас фокусируюсь на этом сайте.
HTTP также по-прежнему будет использоваться, так как он уже хорошо встроен в существующие IoT-платформы.
На этом все. Приглашаем вас записаться на бесплатный демо урок по теме «Чат-бот для быстрых команд устройству».
Источник
Информационные технологии, интернет, веб программирование, IT, Hi-Tech, …
Сетевые протоколы и их взаимодействие. Правила, управляющие коммуникациями. Индустриальные стандарты и технологически независимые протоколы
Здравствуйте, уважаемые читатели блога okITgo.ru! Сегодня мы поговорим о сетевых протоколах, определяющих правила, которые управляют коммуникациями по сети, а также о том, как эти протоколы взаимодействуют между собой.
Вы узнаете об использовании слоев или уровней для описания коммуникаций, о том, что такое набор (или стек) протоколов, какие ныне существуют наиболее распространенные наборы протоколов или так называемые индустриальные стандарты. Дочитав до конца, Вы поймете, почему удобно применять многоуровневые стеки протоколов, а также, почему протоколы являются технологично независимыми, что дает возможность различным компаниям на базе разных технологических решений создавать сетевые устройства, которые могут работать совместно.
Правила, Управляющие Коммуникациями
Любая коммуникация, как лицом к лицу между людьми, так и через сеть между устройствами, управляется правилами, которые называются протоколами. Эти протоколы являются специфическими по отношению к характеристикам коммуникации. В нашей повседневных личных и деловых коммуникациях, правила, используемые нами при разговоре, скажем, по телефону, не обязательно будут такими же, как протоколы, применяемые при другом виде коммуникации – например, при отправке письма.
Только подумайте, как много различных правил и протоколов управляют разными способами коммуникации, которые имеют место в мире сегодня.
Успешная коммуникация между хостами в сети требует взаимодействия множества различных протоколов. Группа взаимосвязанных протоколов, которые необходимы для осуществления функции коммуникации, называется набором протоколов. Эти протоколы реализовани на уровне программного обеспечения и оборудования, которое загружается на каждом хосте и сетевом устройстве.
Один из лучших способов представить, как взаимодействуют все протоколы на конкретном хосте – рассматривать его как стек. Стек протоколов показывает, как отдельные протоколы внутри набора выполняются на хосте. Протоколы рассматриваются в виде многоуровневой иерархии, в которой каждый следующий выше уровень (или слой) зависит от функциональности, определяемой протоколами на более низших уровнях. Более низшие уровни стека связаны с перемещением данных по сети и предоставлением служб более высшим уровням, которые сосредоточены на содержимом посланного сообщения, а также на пользовательском интерфейсе.
Использование Слоев Для Описания Коммуникации Лицом к Лицу
Для примера, рассмотрим общение двух людей лицом к лицу. Как показано на рисунке, мы можем использовать три уровня, чтобы описать это занятие. На нижнем уровне, Физическом уровне, есть два человека, каждый из которых может произносить слова вслух. На втором уровне, уровне Правил, мы имеем соглашение говорить на общем языке. На верхнем уровне, уровне Содержания, мы имеем фактически произносимые слова – содержание коммуникации.
Были бы мы свидетелями этой коммуникации, мы бы в действительности не видели “уровни”, плавающие в воздухе. Важно понимать, что использование уровней (или слоев) – это модель и, как таковая, она предоставляет удобный способ разбить сложную задачу на части и описать, как они работают.
Сетевые Протоколы
На человеческом уровне некоторые правила коммуникации формальны, а другие легко понимаемы, или являются неявными, основанными на предпочтениях и опыте. Для устройств же, чтобы успешно общаться, набор сетевых протоколов должен описывать точные требования и взаимодействия.
Наборы сетевых протоколов описывают такие вещи как:
- Формат или структура сообщения
- Метод, посредством которого сетевые устройства обмениваются информацией о маршрутах с другими сетями
- Как и когда сообщения об ошибках и системные сообщения передаются между устройствами
- Установка и завершение сеансов передачи данных
Отдельные протоколы в наборе протоколов могут производиться и принадлежать различным организациям. Принадлежать в данном контексте означает, что одна компания или производитель контролирует определение протокола и того, как он функционирует. Некоторые частные протоколы могут использоваться различными организациями с разрешения владельца. Другие могут быть только реализованы на базе оборудования, производимого частной компанией.
Наборы Протоколов и Индустриальные Стандарты
Часто многие из протоколов, составляющих набор протоколов, ссылаются на другие широко используемые протоколы или индустриальные стандарты. Стандарт – это процесс или протокол, который был одобрен сетевой индустрией и ратифицирован организацией по стандартизации, такой как Сообщество Инженеров Электричества и Электроники (англ. Institute of Electrical and Electronics Engineers или IEEE) или Целевая (Оперативная) Группа Инженерной Поддержки Интернета (англ. Internet Engineering Task Force или IETF).
Использование стандартов в разработке и внедрении протоколов гарантирует, что продукты различных производителей смогут работать совместно, обеспечивая эффективные коммуникации. Если протокол не соблюдается строго конкретным производителем, его оборудование или ПО может оказаться не способным успешно взаимодействовать с продуктами, произведенными другими производителями.
В информационных коммуникациях, к примеру, если собеседник с одной стороны использует протокол для управления односторонней коммуникацией, а собеседник с другой стороны предполагает протокол, описывающий двустороннюю коммуникацию, то, возможно, обмен информацией вообще не состоится.
Взаимодействие Протоколов
Примером использования набора протоколов в сетевых коммуникациях является взаимодействие между
веб сервером и веб браузером. Это взаимодействие использует ряд протоколов и стандартов в процессе обмена информацией между ними. Различные протоколы работают вместе для гарантии того, что обе стороны получают и понимают полученные сообщения. Примерами этих протоколов являются:
Протокол Передачи ГиперТекста (англ. HyperText Transfer Protocol или HTTP) является распространенным протоколом, который управляет процессом взаимодействия веб сервера и веб клиента. HTTP определяет содержимое и форматирование запросов и ответов, которыми обмениваются клиент и сервер. Как клиент, так и веб сервер имеют ПО, реализующее HTTP как часть приложения. Протокол HTTP полагается на другие протоколы, которые управляют транспортировкой сообщений между клиентом и сервером.
Протокол Контроля Передачи (англ. Transmission Control Protocol или TCP) – это транспортный протокол, который управляет отдельными коммуникациями между веб серверами и веб клиентами. TCP разделяет HTTP сообщения на более мелкие части, называемые сегментами, чтобы послать их клиенту – пункту назначения. Также этот протокол ответственен за контроль размера и скорости, с которой сообщения передаются между сервером и клиентом.
Самый распространенный сетевой протокол – это Интернет Протокол ( англ. Internet Protocol или IP). IP несет ответственность за прием отформатированных сегментов от TCP, инкапсуляции их в пакеты, назначения соответствующих адресов и выбора наилучшего маршрута к хосту назначения.
Протоколы Сетевого Доступа:
Протоколы сетевого доступа описывают две основных функции, управлением канала данных и физической передачей данных по соединению. Протоколы управления каналом данных принимают пакеты от IP и форматируют их для передачи по соединению. Стандарты и протоколы для физических соединений управляют тем, как сигналы посылаются по соединению и тем, как они интерпретируются получающими их клиентами. Трансиверы (приемопередатчики) на сетевых картах подчиняются соответствующим стандартам для используемого типа соединения.
Технологично Независимые Протоколы
Сетевые протоколы описывают функции, которые происходят во время сетевых коммуникаций. В примере диалога лицом к лицу, протокол коммуникации мог бы утвердить, что для того, чтобы сигнал реплики считался завершенным, отправитель должен замолчать на две полных секунды. Однако, этот протокол не указывает, каким образом отправитель должен молчать в течении двух секунд.
Протоколы вообще говоря не описывают, как выполнить конкретную функцию. Описывая только, какие функции требуются для специфического правила коммуникации, но не определяя, как они должны выполняться, реализация того или иного протокола может быть технологично независимой.
Рассмотрим к примеру веб сервер, HTTP не указывает, какой язык программирования используется для создания браузера, какое ПО веб сервера следует использовать для обслуживания веб страниц, на какой операционной системе работает это ПО или требования к оборудованию, необходимому для отображения браузера. Также он не описывает, как сервер должен обнаруживать ошибки, хотя он и определяет, что сервер должен делать, если ошибки происходят.
Это означает, что компьютер – и другие устройства, наподобие мобильных телефонов или КПК – могут получить доступ к веб странице, хранимой на любом типе веб сервера, который использует любую разновидность операционной системы, где угодно в Интернете.
Источник