Я не особо разбираюсь в Интернете, и технологии IoT особенно сбивают меня с толку. Я читал эту статью из Стэнфорда о структуре Интернета. На диаграмме 2 показано представление «стека» программного обеспечения, которое компьютер (ПК) будет использовать для создания, обработки и отправки сообщения через Интернет на другой компьютер.
Все ли типы компьютеров - смартфоны / телевизоры / игровые приставки и т. Д. Используют этот формат?
Имеет ли значение ОС?
(В связи с этим) есть ли разница между сотовым интернетом и Wifi / Ethernet?
А как насчет однофункциональных устройств, которые, по-видимому, не имеют слоя «Приложения» - например, веб-камера, выключатели света или термостаты?
networking
wifi
protocols
BestMillimeter
источник
источник
Ответы:
В этом вопросе будут рассмотрены некоторые потенциальные заблуждения или недоразумения.
Наличие этих заблуждений требует включения объяснения следующего (чтобы обеспечить контекст для последующего обсуждения):
Тогда вопросы будут адресованы напрямую.
Обратите внимание, что с учетом их важности и сложности, целый ряд книг был написан на основе набора протоколов TCP / IP. Определения и пояснения здесь будут взяты в основном из Википедии, Иллюстрированного тома TCP / IP, том 1, второе издание: «Протоколы » Стивенса и Фолла, а также Учебное и техническое руководство IBM по TCP / IP .
1. Интернет
Интернет является технически глобальной сети (WAN) , но более полезный способ думать это как своего рода supernetwork (сети сетей) или совокупность различных взаимосвязанных соединенных чистых работ. Вот изображение путей маршрутизации через часть Интернета:
Интересное прочтение о том, как работает Интернет, можно найти в статье Arstechnica. Как работает Интернет: подводное волокно, мозги в банках и коаксиальные кабели .
Итак, как разные системы, работающие на разных аппаратных платформах, подключенных к разным сетям, могут взаимодействовать друг с другом? Как возможна связь между таким огромным, неоднородным набором систем и сетей? Как все это может происходить одновременно?
2. Интернет-протокол
Ответ предоставляется набором протоколов Интернета, также известным как набор протоколов TCP / IP. Эти вопросы были рассмотрены в процессе проектирования архитектуры Интернета (Иллюстрированный TCP / IP, раздел 1.1: Архитектурные принципы):
Из пакета интернет-протокола (Википедия):
Один из способов представить набор протоколов TCP / IP - это спецификация того, как процессы, работающие в разных системах и в разных сетях, могут взаимодействовать друг с другом. По сути, набор протоколов TCP / IP обеспечивает стандарт для межпроцессного взаимодействия.
Любая система, которая правильно реализует набор протоколов TCP / IP, может использовать предоставляемые ею функциональные возможности, чтобы позволить своим процессам обмениваться данными через Интернет. Фактически, чтобы процессы могли обмениваться данными через Интернет с другими процессами, запущенными на удаленных системах в других сетях, система должна использовать совместимые со стандартами протоколы набора TCP / IP.
3. Приложения
Из прикладного программного обеспечения (Википедия):
Приложение может рассматриваться как процесс пользовательского пространства, работающий в системе. В дополнение к приведенным выше примерам это может включать такие программы, как (не в режиме ядра) компьютерные вирусы, веб-серверы, приложения для камер и программы агрегации данных датчиков.
Когда приложение передает и получает данные через Интернет, оно должно использовать реализацию пакета протоколов TCP / IP своей хост-системы. Из прикладного уровня (Википедия):
Прикладной уровень набора протоколов TCP / IP включает в себя такие протоколы, как протокол передачи файлов (FTP), система доменных имен (DNS) и, возможно, наиболее известный протокол передачи гипертекста (HTTP).
Например, протокол HTTP уровня приложения указывает, как данные передаются между двумя процессами, работающими (обычно) в разных системах: клиентском приложении, веб-браузере и серверном приложении, процесс веб-сервера.
Разъяснение потенциальных заблуждений
Набор протоколов TCP / IP не является программным стеком. Из Технопедии :
Скорее, это стек протоколов, обычно реализуемый ядром (также из Technopedia ):
Набор протоколов TCP / IP - это независимая от оборудования и операционной системы спецификация связи, а не формат . Если процесс, работающий на одной аппаратной платформе, должен взаимодействовать с процессом, работающим в удаленной системе на другой аппаратной платформе, и связь осуществляется через Интернет, то системы должны
Моя интерпретация этого вопроса такова: «Есть ли разница в том, как мобильное устройство подключается к сети GSM, и в способе, которым мобильное устройство подключается к сети WiFi?»
Разница заключается в уровне сетевого интерфейса.
Этот вопрос показывает плохое описание набора протоколов TCP / IP на диаграмме в статье, на которую ссылается этот вопрос. Для справки вот схема:
Самый нижний уровень, называемый «аппаратным обеспечением», должен называться канальным уровнем , уровнем управления доступом к среде (MAC) или уровнем сетевого интерфейса .
Из IBM "Учебное пособие и технический обзор по TCP / IP" стр. 34:
Вот правильное и превосходное изображение (из Руководства по TCP / IP ):
Причина, по которой обсуждение уровня сетевого интерфейса является релевантным, заключается в том, что именно на этом уровне существует различие в способе подключения сотового / мобильного устройства к сети GSM по сравнению с сетью WiFi.
при подключении к сети GSM протокол уровня сетевого интерфейса, используемый для обработки соединения между мобильным устройством и базовой приемопередающей станцией (BTS), обычно определяется 3G
при подключении к беспроводной точке доступа WiFi (WAP) используемый протокол определяется стандартом IEEE 802.11 .
Как описано ранее, протоколы на уровне приложений набора протоколов TCP / IP обеспечивают стандарт для обмена данными приложений между процессами.
Слои являются концептуальными. Они не находятся в системе или на аппаратной платформе.
На подключенных к сети камерах, выключателях освещения и термостатах могут быть запущены процессы, которые обмениваются данными через Интернет с процессами, запущенными в удаленных системах (проверка обновлений прошивки, обмен данными с сервером и т. Д.). Эти процессы или приложения будут использовать реализацию набора протоколов TCP / IP для осуществления этого межпроцессного взаимодействия.
Набор протоколов TCP / IP и встроенные системы («IoT»)
Хотя существует множество различных приложений, использующих разные протоколы прикладного уровня, работающие на традиционных ПК или серверах, не так много различий в том, как аппаратные платформы подключаются к своим соответствующим точкам доступа (сетевой интерфейс / канальный уровень). Это в основном выполняется проводной или беспроводной через Ethernet.
Ситуация несколько иная, когда речь идет о большом разнообразии встроенных систем, которые взаимодействуют через TCP / IP. Вот иллюстрация этого (из Postscapes ):
Для получения дополнительной информации см. Эти статьи:
Понимание протоколов в интернете вещей
Стандарты и протоколы IoT
Руководство по технологии IoT
источник
Чтобы что-то обмениваться в интернете, ему нужно будет где-то пройти через стек IP.
Протокол IP определяется RFC 791 , поэтому ОС / прошивка должна ему соответствовать, какой бы она ни была.
Если немного упростить, то здесь разница будет в радиосигнале 1-го уровня (физическом) по сравнению с электрическим сигналом на проводах. Больше подробностей на странице википедии по модели взаимодействия открытых систем (модель OSI) .
Все они служат для переноса уровня 3 (сеть), IP в данном случае, на их конкретные носители.
Уровень приложений относится к определенному протоколу связи (HTTP, SSH и т. Д.), Он не должен быть таким приложением, как, например, Chrome или Firefox.
Обычно эти протоколы будут реализованы поверх TCP , некоторые - поверх UDP, когда есть желание не блокировать ожидание подтверждения или когда получение устаревшего пакета не имеет смысла (голосовые вызовы, потоковая передача). Существуют другие протоколы уровня 4, но обычно для определенных целей, например ICMP
ping
. TCP - это протокол выбора, когда вы хотите, чтобы некоторые данные были доставлены в пункт назначения.Для «удаленного устройства», такого как термостат в вашем примере, оно может использовать уже существующие протоколы, такие как HTTP, или использовать проприетарный протокол для отправки своих данных, которые обычно будут на уровне приложений, поскольку это не будет только транспорт. протокол.
Это может быть сделано только на уровне 4, но это требует создания нового протокола, а накладные расходы обычно не стоят этого и делают систему несовместимой с другими, на мой взгляд, использование открытых стандартов - лучший подход.
источник
Хотя это правда, что любое устройство, подключенное к Интернету, будет использовать TCP / IP (или UDP) для связи, это действительно следующий уровень в стеке, где все становится интересным.
Любое современное устройство IoT будет использовать TLS для обеспечения шифрования и аутентификации. Это предотвращает (теоретически), что кто-либо еще может наблюдать или вмешиваться в передаваемые сообщения. Важным соображением стека TCP / IP является то, что большую часть передаваемой информации можно наблюдать тривиально - и это часто очень легко приводит к недостаткам безопасности.
Устройствам не нужно подключаться к Интернету «у источника», поэтому нет необходимости реализовывать TCP через Bluetooth (в качестве примера). Вы также можете увидеть устройства IoT, использующие протоколы мобильных телефонов (например, обычные SMS или текстовые сообщения) в качестве последнего перехода. В конечном итоге эти протоколы (выбранные каким-либо образом для установленной среды) могут быть подключены к «Интернету» через концентратор.
источник
Все устройства, которые хотят использовать TCP через IP, нуждаются в стеке TCP / IP.
Протокол стандартизирован, так что устройства разных производителей или использующие разные операционные системы могут понимать друг друга.
Обратите внимание, что TCP гарантирует, что пакеты данных поступят, или отправитель будет уведомлен об их потере. TCP будет использоваться, когда вы не можете позволить себе потерять какие-либо данные, не зная об этом (например, общение с вашим банком).
Существует также UDP, который отправляет пакеты и «надеется, что они туда попадут». Это может быть использовано, например, для потоковой передачи музыки или видео, где потеря нескольких кадров не является фатальной.
Важной частью является стандартизация.
источник
Сам стек является виртуальной концепцией. Каждый уровень в стеке изменяет последние биты, которые отправляются через физическую среду (радиоволны или другие электронные сигналы). Нет правила, согласно которому каждый уровень в стеке должен быть спроектирован в виде отдельной дискретной единицы кода или аппаратного обеспечения. Например, чипы iEthernet объединяют уровни TCP, IP, MAC и PHY, оставляя разработчикам задачу по внедрению программного обеспечения TLS и прикладного уровня.
При этом все биты должны соответствовать различным задействованным протоколам, и по этой причине обычно проще спроектировать каждый уровень как отдельный объект, чтобы их можно было независимо тестировать и проверять. Большинство устройств, включая смартфоны, умные телевизоры и игровые приставки, обычно покупают свои чипы у третьих лиц, специализирующихся в какой-либо области. Например, большинство телефонов используют только один из нескольких различных чипов Bluetooth; это означает, что изготовителю не нужно беспокоиться об изобретении колеса с каждым новым продуктом.
Теоретически, некоторые небольшие специализированные устройства могут иметь только один процессор со встроенным SoC (Software on Chip), который обрабатывает все уровни сети (приложения, TLS, TCP, IP, PHY) как одну отдельную единицу кода. Я не могу найти никаких конкретных примеров прямо сейчас, но меня не удивит, если некоторые небольшие устройства с низким энергопотреблением или специализированные функции объединят все слои стека в одно устройство, чтобы снизить энергопотребление (продлить срок службы батареи). Большие, более сложные продукты, такие как телевизоры, телефоны и игровые системы, вероятно, имеют как минимум 3 слоя (приложение, операционная система и аппаратные компоненты), в то время как тостер может иметь только 1 или 2 слоя.
Примечание: я не говорю, что конкретный тостер, который я связал, имеет 1 или 2 слоя, просто было бы логично, если бы он был спроектирован таким образом, являясь универсальным устройством.
источник