Все ли вещи, подключенные к Интернету, используют один и тот же стек «Приложение - TCP - IP - Оборудование» для связи?


15

Я не особо разбираюсь в Интернете, и технологии IoT особенно сбивают меня с толку. Я читал эту статью из Стэнфорда о структуре Интернета. На диаграмме 2 показано представление «стека» программного обеспечения, которое компьютер (ПК) будет использовать для создания, обработки и отправки сообщения через Интернет на другой компьютер.

  • Все ли типы компьютеров - смартфоны / телевизоры / игровые приставки и т. Д. Используют этот формат?

  • Имеет ли значение ОС?

  • (В связи с этим) есть ли разница между сотовым интернетом и Wifi / Ethernet?

  • А как насчет однофункциональных устройств, которые, по-видимому, не имеют слоя «Приложения» - например, веб-камера, выключатели света или термостаты?



3
Гораздо лучше задавать только один вопрос на вопрос - однако это довольно сложно для этих самых основных вопросов. Если у вас есть дополнительные вопросы, постарайтесь сделать их более конкретными.
Шон

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

@immibis это будет звучать ужасно педантично, но слои стека протоколов не являются свойствами, которыми может обладать устройство. В TCP / IP прикладной уровень содержит протоколы связи и методы интерфейса, используемые при межпроцессном взаимодействии через компьютерную сеть IP. Устройство может содержать систему, и эта система может выполнять приложения, но устройство не имеет прикладного уровня. Сам TCP / IP является концептуальной моделью.
Джулиан

@SYS_V Когда я говорю «устройство имеет прикладной уровень», я имею в виду «устройство имеет некоторый программный компонент, который реализует то, что TCP / IP описывает как прикладной уровень»
user253751

Ответы:


26

В этом вопросе будут рассмотрены некоторые потенциальные заблуждения или недоразумения.

  • На диаграмме 2 показано представление «стека» программного обеспечения, которое компьютер (ПК) будет использовать для создания, обработки и отправки сообщения через Интернет на другой компьютер.

  • Все ли типы компьютеров - смартфоны / телевизоры / игровые приставки и т. Д. Используют этот формат?

  • (В связи с этим) есть ли разница между сотовым интернетом и Wifi / Ethernet?

  • А как насчет однофункциональных устройств, которые, по-видимому, не имеют слоя «Application» - например, веб-камера, световые переключатели или термостаты?

Наличие этих заблуждений требует включения объяснения следующего (чтобы обеспечить контекст для последующего обсуждения):

  • Что такое интернет
  • Что такое набор протоколов TCP / IP
  • Что такое приложение

Тогда вопросы будут адресованы напрямую.

Обратите внимание, что с учетом их важности и сложности, целый ряд книг был написан на основе набора протоколов TCP / IP. Определения и пояснения здесь будут взяты в основном из Википедии, Иллюстрированного тома TCP / IP, том 1, второе издание: «Протоколы » Стивенса и Фолла, а также Учебное и техническое руководство IBM по TCP / IP .

1. Интернет

Интернет является технически глобальной сети (WAN) , но более полезный способ думать это как своего рода supernetwork (сети сетей) или совокупность различных взаимосвязанных соединенных чистых работ. Вот изображение путей маршрутизации через часть Интернета:

Визуализация маршрута

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

Интересное прочтение о том, как работает Интернет, можно найти в статье Arstechnica. Как работает Интернет: подводное волокно, мозги в банках и коаксиальные кабели .

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

2. Интернет-протокол

Ответ предоставляется набором протоколов Интернета, также известным как набор протоколов TCP / IP. Эти вопросы были рассмотрены в процессе проектирования архитектуры Интернета (Иллюстрированный TCP / IP, раздел 1.1: Архитектурные принципы):

Несколько целей руководствовались созданием интернет-архитектуры. В [C88] Кларк рассказывает, что основная цель состояла в том, чтобы «разработать эффективный метод для мультиплексного использования существующих взаимосвязанных сетей». Суть этого утверждения заключается в том, что архитектура Интернета должна быть способна соединять несколько различных сетей, и что несколько действий должны иметь возможность работать одновременно в полученной взаимосвязанной сети .

Из пакета интернет-протокола (Википедия):

Набор протоколов Интернета - это концептуальная модель и набор протоколов связи, используемых в Интернете и аналогичных компьютерных сетях.

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

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

Любая система, которая правильно реализует набор протоколов TCP / IP, может использовать предоставляемые ею функциональные возможности, чтобы позволить своим процессам обмениваться данными через Интернет. Фактически, чтобы процессы могли обмениваться данными через Интернет с другими процессами, запущенными на удаленных системах в других сетях, система должна использовать совместимые со стандартами протоколы набора TCP / IP.

Набор протоколов TCP / IP

3. Приложения

Из прикладного программного обеспечения (Википедия):

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

Программное обеспечение

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

Когда приложение передает и получает данные через Интернет, оно должно использовать реализацию пакета протоколов TCP / IP своей хост-системы. Из прикладного уровня (Википедия):

В TCP / IP прикладной уровень содержит протоколы связи и методы интерфейса, используемые при межпроцессном обмене данными по компьютерной сети Интернет-протокола (IP). Прикладной уровень только стандартизирует связь и зависит от базовых протоколов транспортного уровня для установления каналов передачи данных между хостами и управления обменом данными в модели клиент-сервер или одноранговой сети.

Прикладной уровень набора протоколов TCP / IP включает в себя такие протоколы, как протокол передачи файлов (FTP), система доменных имен (DNS) и, возможно, наиболее известный протокол передачи гипертекста (HTTP).

Например, протокол HTTP уровня приложения указывает, как данные передаются между двумя процессами, работающими (обычно) в разных системах: клиентском приложении, веб-браузере и серверном приложении, процесс веб-сервера.

Разъяснение потенциальных заблуждений

  1. На диаграмме 2 показано представление «стека» программного обеспечения, которое компьютер (ПК) будет использовать для создания, обработки и отправки сообщения через Интернет на другой компьютер.

Набор протоколов TCP / IP не является программным стеком. Из Технопедии :

Программный стек - это группа программ, которые работают в тандеме для получения результата или достижения общей цели. Программный стек также относится к любому набору приложений, которые работают в определенном и определенном порядке для достижения общей цели, или к любой группе утилит или рутинных приложений, которые работают как набор. Устанавливаемые файлы, программные определения продуктов и исправлений могут быть включены в программный стек. Одним из популярных программных стеков на основе Linux является LAMP (Linux, Apache, MYSQL, Perl или PHP или Python). WINS (Windows Server, Internet Explorer, .NET, SQL Server) - это популярный программный стек на базе Windows.

Скорее, это стек протоколов, обычно реализуемый ядром (также из Technopedia ):

Стек протоколов относится к группе протоколов, которые выполняются одновременно и которые используются для реализации набора сетевых протоколов.

Протоколы в стеке определяют правила взаимодействия для многоуровневой сетевой модели, например, в моделях OSI или TCP / IP. Чтобы стать стеком, протоколы должны быть совместимыми и иметь возможность соединяться как вертикально между уровнями сети, так и горизонтально между конечными точками каждого сегмента передачи.


  1. Все ли типы компьютеров - смартфоны / телевизоры / игровые приставки и т. Д. Используют этот формат ?

Набор протоколов TCP / IP - это независимая от оборудования и операционной системы спецификация связи, а не формат . Если процесс, работающий на одной аппаратной платформе, должен взаимодействовать с процессом, работающим в удаленной системе на другой аппаратной платформе, и связь осуществляется через Интернет, то системы должны

  • правильно реализовать набор протоколов TCP / IP и
  • соответствующие протоколы в этом наборе должны использоваться для обеспечения межпроцессного взаимодействия

  1. (В связи с этим) есть ли разница между сотовым интернетом и Wifi / Ethernet?

Моя интерпретация этого вопроса такова: «Есть ли разница в том, как мобильное устройство подключается к сети GSM, и в способе, которым мобильное устройство подключается к сети WiFi?»

Разница заключается в уровне сетевого интерфейса.

Этот вопрос показывает плохое описание набора протоколов TCP / IP на диаграмме в статье, на которую ссылается этот вопрос. Для справки вот схема:

Дерьмовая схема TCP / IP

Самый нижний уровень, называемый «аппаратным обеспечением», должен называться канальным уровнем , уровнем управления доступом к среде (MAC) или уровнем сетевого интерфейса .

Из IBM "Учебное пособие и технический обзор по TCP / IP" стр. 34:

Уровень сетевого интерфейса, также называемый канальным уровнем или канальным уровнем, является интерфейсом для реального сетевого оборудования. Этот интерфейс может обеспечивать или не обеспечивать надежную доставку и может быть ориентирован на пакет или поток. Фактически, TCP / IP не определяет здесь какой-либо протокол, но может использовать практически любой доступный сетевой интерфейс, что иллюстрирует гибкость уровня IP. Примерами являются IEEE 802.2, X.25 (который сам по себе надежен), ATM, FDDI и даже SNA.

Вот правильное и превосходное изображение (из Руководства по TCP / IP ):

Превосходная схема стека TCP / IP

Причина, по которой обсуждение уровня сетевого интерфейса является релевантным, заключается в том, что именно на этом уровне существует различие в способе подключения сотового / мобильного устройства к сети GSM по сравнению с сетью WiFi.

  • при подключении к сети GSM протокол уровня сетевого интерфейса, используемый для обработки соединения между мобильным устройством и базовой приемопередающей станцией (BTS), обычно определяется 3G

  • при подключении к беспроводной точке доступа WiFi (WAP) используемый протокол определяется стандартом IEEE 802.11 .


  1. А как насчет однофункциональных устройств, которые, по-видимому, не имеют слоя «Приложения» - например, веб-камера, выключатели света или термостаты?

Как описано ранее, протоколы на уровне приложений набора протоколов TCP / IP обеспечивают стандарт для обмена данными приложений между процессами.

Слои являются концептуальными. Они не находятся в системе или на аппаратной платформе.

На подключенных к сети камерах, выключателях освещения и термостатах могут быть запущены процессы, которые обмениваются данными через Интернет с процессами, запущенными в удаленных системах (проверка обновлений прошивки, обмен данными с сервером и т. Д.). Эти процессы или приложения будут использовать реализацию набора протоколов TCP / IP для осуществления этого межпроцессного взаимодействия.

Набор протоколов TCP / IP и встроенные системы («IoT»)

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

Ситуация несколько иная, когда речь идет о большом разнообразии встроенных систем, которые взаимодействуют через TCP / IP. Вот иллюстрация этого (из Postscapes ):

IoT и TCP / IP 1

IoT и TCP / IP 2

Для получения дополнительной информации см. Эти статьи:

Понимание протоколов в интернете вещей

Стандарты и протоколы IoT

Руководство по технологии IoT


На этом уровне деталей моя сторона netadmin печальна, что нет ни слова о TCP / IP, означающем TCP на IP, TCP вообще не привязан к IP, он также был реализован в сетях IPX (и даже если сигл рядом было 2 очень разных протокола)
Tensibai

1
@ Tensibai Разве TCP на IPX будет в основном таким же, как SPX (т. Е. Надежная и основанная на портах транспортная версия)? - Но это напоминает мне, что утверждение о том, что два хоста, которые хотят общаться через Интернет (т.е. через разные сети), должны реализовывать TCP / IP, не совсем верно: хост A в сети 1 и хост B в сети 3 могут говорить например, IPX / SPX, даже если соединительная сеть 2 является чистым TCP / IP, при условии, что в сети 1 и 3 есть туннельные шлюзы ...
Хаген фон

2
@hagen nope, SPX был эквивалентом TCP, но абсолютно не связывался с системой TCP, поэтому был разработан протокол TCP поверх IPX, чтобы обеспечить сквозную связь TCP для систем на IP и IPX с простым маршрутизатором уровня 3 между , И да, Интернет в основном полагаются на IP, MPLS и протоколы маршрутизации (я, вероятно, забыл некоторые), TCP ничего не играет в общей маршрутизации, он просто циркулирует по нему ateotd.
Тенсибай

@ Тенсибай Если я допустил ошибку или ошибки, пожалуйста, дайте мне знать, и я сделаю все возможное, чтобы исправить их
Джулиан

@SYS_V на самом деле не ошибка, некоторые ярлыки меня немного беспокоят. скажем, все нормально с точки зрения связи по протоколу TCP. Есть все необходимые сведения для тех, кто хочет разобраться в проблеме. Я чувствую, что вы немного грубоваты по поводу ОП в своем первом абзаце, я попытаюсь предложить редактирование завтра (с компьютера) для решения моих проблем :)
Tensibai

12

Все ли типы компьютеров - смартфоны / телевизоры / игровые приставки и т. Д. Используют этот формат?

Чтобы что-то обмениваться в интернете, ему нужно будет где-то пройти через стек IP.

Имеет ли значение ОС?

Протокол IP определяется RFC 791 , поэтому ОС / прошивка должна ему соответствовать, какой бы она ни была.

(В связи с этим) есть ли разница между сотовым интернетом и Wifi / Ethernet?

Если немного упростить, то здесь разница будет в радиосигнале 1-го уровня (физическом) по сравнению с электрическим сигналом на проводах. Больше подробностей на странице википедии по модели взаимодействия открытых систем (модель OSI) .

Все они служат для переноса уровня 3 (сеть), IP в данном случае, на их конкретные носители.

А как насчет однофункциональных устройств, которые, по-видимому, не имеют слоя «Application» - например, веб-камера, световые переключатели или термостаты?

Уровень приложений относится к определенному протоколу связи (HTTP, SSH и т. Д.), Он не должен быть таким приложением, как, например, Chrome или Firefox.
Обычно эти протоколы будут реализованы поверх TCP , некоторые - поверх UDP, когда есть желание не блокировать ожидание подтверждения или когда получение устаревшего пакета не имеет смысла (голосовые вызовы, потоковая передача). Существуют другие протоколы уровня 4, но обычно для определенных целей, например ICMP ping. TCP - это протокол выбора, когда вы хотите, чтобы некоторые данные были доставлены в пункт назначения.

Для «удаленного устройства», такого как термостат в вашем примере, оно может использовать уже существующие протоколы, такие как HTTP, или использовать проприетарный протокол для отправки своих данных, которые обычно будут на уровне приложений, поскольку это не будет только транспорт. протокол.
Это может быть сделано только на уровне 4, но это требует создания нового протокола, а накладные расходы обычно не стоят этого и делают систему несовместимой с другими, на мой взгляд, использование открытых стандартов - лучший подход.


3
Возможно, стоит пояснить, что TCP-IP является довольно распространенным «обязательным условием» в любой ОС (от mbed / arduino до MC Windows и Linux).
Шон

Действительно, звучит так для меня, как протоколы более высокого уровня, что я забываю это.
Тенсибай

ответ 1 и ответ 2 не являются ответами, а ответ 3 объясняется с использованием эталонной модели OSI, а не набора протоколов TCP / IP. Ни один из ответов в этом посте не касается концептуальных ошибок, допущенных в вопросе.
Джулиан

2
@Sys_v Я не собирался писать Novell :)
Tensibai

5

Хотя это правда, что любое устройство, подключенное к Интернету, будет использовать TCP / IP (или UDP) для связи, это действительно следующий уровень в стеке, где все становится интересным.

Любое современное устройство IoT будет использовать TLS для обеспечения шифрования и аутентификации. Это предотвращает (теоретически), что кто-либо еще может наблюдать или вмешиваться в передаваемые сообщения. Важным соображением стека TCP / IP является то, что большую часть передаваемой информации можно наблюдать тривиально - и это часто очень легко приводит к недостаткам безопасности.

Устройствам не нужно подключаться к Интернету «у источника», поэтому нет необходимости реализовывать TCP через Bluetooth (в качестве примера). Вы также можете увидеть устройства IoT, использующие протоколы мобильных телефонов (например, обычные SMS или текстовые сообщения) в качестве последнего перехода. В конечном итоге эти протоколы (выбранные каким-либо образом для установленной среды) могут быть подключены к «Интернету» через концентратор.


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

1
Современное значение, разработанное с использованием лучших современных практик, а не просто то, что легко.
Шон

4

Все устройства, которые хотят использовать TCP через IP, нуждаются в стеке TCP / IP.

Протокол стандартизирован, так что устройства разных производителей или использующие разные операционные системы могут понимать друг друга.

Обратите внимание, что TCP гарантирует, что пакеты данных поступят, или отправитель будет уведомлен об их потере. TCP будет использоваться, когда вы не можете позволить себе потерять какие-либо данные, не зная об этом (например, общение с вашим банком).

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

Важной частью является стандартизация.


2

Сам стек является виртуальной концепцией. Каждый уровень в стеке изменяет последние биты, которые отправляются через физическую среду (радиоволны или другие электронные сигналы). Нет правила, согласно которому каждый уровень в стеке должен быть спроектирован в виде отдельной дискретной единицы кода или аппаратного обеспечения. Например, чипы iEthernet объединяют уровни TCP, IP, MAC и PHY, оставляя разработчикам задачу по внедрению программного обеспечения TLS и прикладного уровня.

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

Теоретически, некоторые небольшие специализированные устройства могут иметь только один процессор со встроенным SoC (Software on Chip), который обрабатывает все уровни сети (приложения, TLS, TCP, IP, PHY) как одну отдельную единицу кода. Я не могу найти никаких конкретных примеров прямо сейчас, но меня не удивит, если некоторые небольшие устройства с низким энергопотреблением или специализированные функции объединят все слои стека в одно устройство, чтобы снизить энергопотребление (продлить срок службы батареи). Большие, более сложные продукты, такие как телевизоры, телефоны и игровые системы, вероятно, имеют как минимум 3 слоя (приложение, операционная система и аппаратные компоненты), в то время как тостер может иметь только 1 или 2 слоя.


Примечание: я не говорю, что конкретный тостер, который я связал, имеет 1 или 2 слоя, просто было бы логично, если бы он был спроектирован таким образом, являясь универсальным устройством.


Как бы тостер мог иметь не все слои? Вы можете подключить сетевой кабель или он реагирует на волны WiFi - следовательно, он реализует уровень PHY. Он может связываться с локальными и удаленными устройствами (такими как ваш iPhone) - следовательно, он реализует уровень IP. Требуется безопасная передача данных (изображение) - следовательно, он лучше реализует TCP. Некоторая часть должна иметь смысл передаваемых данных, поэтому у нас наверняка есть прикладной уровень сверху. --- (Ну, возможно, нет, если вместо работы в сети они используют Bluetooth ...)
Хаген фон

@HagenvonEitzen Протоколы определяют уровни, которые располагаются, но я хочу сказать, что один «слой» в «стеке» TCP / IP не может быть отдельным дискретным «слоем» в программном / аппаратном «стеке». Я привел пример набора микросхем, который сам реализует четыре слоя. С точки зрения аппаратного / программного обеспечения, это всего лишь один «слой» в «стеке», который реализует связность. Использование этого чипа плюс приложение, которое реализует свой собственный TLS, приводит к двухслойному стеку; физические компоненты не совпадают с четырьмя логическими уровнями, описанными в ОП.
phyrfox
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.