Почему вы должны знать HTTP и
HTTP и HTTPS являются двумя наиболее широко используемыми протоколами уровня приложения в Интернете. Каждый раз, когда вы просматриваете веб-сайт, используется один из двух протоколов, но несколько интернет-сетей Things используют HTTP (S) для обмена данными между машинами.
HTTP и
Протокол HTTP или HyperText Transport Protocol - это протокол уровня приложения, который перемещает значительную часть данных в Интернете. HTTPS - это в основном тот же протокол, но с добавлением к нему уровня аутентификации и шифрования (S означает безопасное). Есть много прекрасных статей и много документации, описывающих детали HTTP и HTTPS; целью этой статьи является обсуждение того, как HTTP и HTTPS можно использовать в Internet of Things и, в частности, с машинной связью. Для целей этой статьи я буду ссылаться на HTTP, но, если не указано иное, те же идеи применимы к
Как следует из названия, транспортный протокол HyperText был разработан для перемещения гипертекста (обычно HTML) по всему Интернету. Всякий раз, когда вы просматриваете сайт, ваш браузер создает и отправляет HTTP-запрос на сервер веб-сайта. Веб-сайт принимает запрос и создает ответ, который включает в себя HTML, который ваш браузер принимает, и преобразует в хороший веб-сайт, который вы можете просмотреть. Это описание относится к большей части использования HTTP и HTTPS в Интернете.
Одна из замечательных особенностей протоколов HTTP и HTTPS заключается в том, что они довольно общие и, следовательно, легко расширяемы. Протокол - это тип запроса / ответа протокола, в котором клиент создает запрос, и сервер отправляет ответ. Запрос состоит из типа запроса, конкретного ресурса, который он запрашивает, и набора заголовков, который содержит дополнительную информацию о запросе, например, какой конкретный домен запрашивает запрос, какое устройство выполняет запрос и как для обработки соединения клиент-сервер после завершения запроса. Ответ состоит из кода, указывающего на результат запроса, заголовков, которые содержат дополнительную информацию об ответе (например, тип сервера, делающего ответ, и последний раз, когда был обновлен ресурс) и запрошенная информация.
На следующих двух рисунках показан пример HTTP-запроса и ответа с некоторыми указанными деталями. Вот типичный запрос:

Рисунок 1. Основной
Вот типичный ответ:

Рисунок 2. Основной
HTTP (S) и Интернет вещей
В HTTP-протоколе нет ничего, что говорит, что запрошенные данные должны быть гипертекстовым документом, и несколько облачных служб баз данных IoT используют это для использования HTTP в качестве интерфейса к своей базе данных. Эти базы данных IoT работают так (хотя специфическая терминология изменяется от службы к сервису): служба предоставляет пользователям канал, к которому они могут отправлять данные. Эти данные обычно принимают формат потока данных от какого-либо датчика, который периодически отправляет данные в службу. Служба организует и регистрирует данные, которые затем становятся доступными из любого места в Интернете. Эта услуга является прототипом взаимодействия между машинами, потому что в потоке данных не требуется участие человека. Многие службы также включают возможность запуска действий на основе данных, соответствующих определенным критериям.
На рисунке 3 показан пример использования HTTP в Internet of Things.

Рисунок 3. ThingSpeak сенсорная система с использованием HTTP для перемещения данных через Интернет Изображение предоставлено ThingSpeak
На рисунке 3 Arduino представляет собой датчик (или сенсорную систему), который собирает данные и отправляет их в базу данных IoT, основанную на облаке. В этом примере база данных IoT - ThingSpeak, но есть ряд других сервисов, таких как Exosite, Xively, Carriots и Nimbits, которые также используют HTTP (S) в качестве своего интерфейса. Затем данные можно просматривать с любого компьютера в Интернете.
HTTP появляется в изображении, поскольку данные перемещаются в этой системе через HTTP-запросы. Услуга, выделенная на этом рисунке (ThingSpeak), требует от пользователей отправки HTTP-запроса на свой канал для отправки его данных и запроса HTTP-запроса для получения данных с канала. Конкретные запросы выглядят следующим образом:

Рисунок 4. Примеры запросов POST и GET для ThingSpeak. Используется любезно ThingSpeak
Взаимодействия ThingSpeak, показанные выше, легко реализуются как сообщения от машины к машине, поскольку легко программировать встроенное устройство для отправки HTTP-запросов и управления простыми ответами, которые он получает. В этих сообщениях стоит отметить api_key. Этот ключ, по сути, является паролем для чтения и / или записи на канал, и если HTTP-запросы используются для отправки ключа, это означает, что любой, кто подслушивает ваши сообщения, получит этот ключ.
Очевидным решением является использование HTTPS, который добавляет уровень аутентификации и шифрования в HTTP. Помимо аутентификации и шифрования, сообщения HTTP и HTTPS одинаковы, поэтому, если нет веских причин не использовать его, HTTPS должен быть протоколом выбора для связи с платформой IoT. В некоторых случаях убедительная причина заключается в том, что встроенный микроконтроллер, отправляющий данные в ThingSpeak, не имеет вычислительной мощности, чтобы эффективно обрабатывать аутентификацию и шифрование, необходимые для использования HTTPS. Обходным решением было бы добавить прокси или шлюз между сенсорной системой и облаком. Например, в беспроводной сенсорной сети, где каждый датчик использует очень простой микропроцессор, прокси-сервер может собирать данные от датчиков по локальной беспроводной сети (например, Zigbee), а затем шифровать данные перед их отправкой по
HTTP и HTTPS являются достаточно хорошими протоколами для взаимодействия между машинами, такими как описанные здесь. Это открытые стандарты, которые работают через TCP / IP и позволяют настраивать их через заголовки и данные. Однако они не оптимизированы для всех ситуаций. У них много накладных расходов, поэтому они не работают хорошо в условиях ограниченной полосы пропускания и используют больше мощности по сравнению с протоколами с оптимизацией полосы пропускания. Однако эти два протокола имеют некоторые большие преимущества. Во-первых, их легко понять и реализовать из-за их удобочитаемости. Во-вторых, они общедоступны; другими словами, независимо от того, где вы обращаетесь в Интернет, вы сможете использовать HTTP и
Вывод
Хотя HTTP и HTTPS могут быть не идеальными протоколами для связи между машинами в IoT, они достаточно хороши, чтобы вы начали. Многие службы поддержки IoT, поддерживающие протокол HTTP (S), и его простота использования означает, что вы можете быстро и быстро работать с системой IoT.
Рекомендуемое изображение, используемое любезностью Rock1997 (собственная работа) (CC BY-SA 4.0-3.0-2.5-2.0-1.0)