Привет, хабровчане! Первый в России онлайн-курс IoT-разработчик стартует в OTUS уже в октябре. Прямо сейчас открыт набор на курс, в связи с чем мы продолжаем делиться с вами полезными материалами. Интернет вещей (IoT, Internet of Things) будет построен на базе существующей сетевой инфраструктуры, технологий и протоколов, используемых в настоящее время в домах/офисах и в Интернете, и предложит много другого. Цель данного руководства — дать краткий обзор сетевых и прикладных протоколов для 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 SigFox LTE-M Более подробно они описаны в статье 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 за последние несколько лет. Поддержка протоколов по платформам Microsoft Azure — MQTT, AMQP, HTTP и HTTPS AWS — MQTT, HTTPS, MQTT over websockets IBM Bluemix – MQTT,HTTPS,MQTT Thingworx — MQTT,HTTPS,MQTT,AMQP Больше всего изменений на канальном (уровни 1 и 2) и прикладном уровнях (уровень 4). Сетевой и транспортный уровни, скорее всего, останутся неизменными. На прикладном уровне компоненты IoT будут использовать протоколы обмена сообщениями. Хотя мы все еще находимся на раннем этапе развития IoT, вполне вероятно, что выделится один или, возможно, два протокола обмена сообщениями. За последние несколько лет MQTT стал самым популярным, и именно на нем я сейчас фокусируюсь на этом сайте. HTTP также по-прежнему будет использоваться, так как он уже хорошо встроен в существующие IoT-платформы. На этом все. Приглашаем вас записаться на бесплатный демо урок по теме "Чат-бот для быстрых команд устройству". Почему незащищенные потребительские системы интернета вещей теперь представляет собой серьезную бизнес-проблему  Редактор