Чи всі підключені до Інтернету речі використовують один і той же стек "Програма - TCP - IP - обладнання" для спілкування?


15

Я не особливо підкований до Інтернету, а технології IoT особливо бентежать мене. Я читав цю Стенфордську білу книгу про структуру Інтернету. На діаграмі 2 показано подання програмного "стека", який комп'ютер (ПК) використовував би для створення, обробки та відправки повідомлення через Інтернет на інший комп'ютер.

  • Чи використовують усі види комп'ютерів - смартфони / телевізори / ігрові консолі тощо?

  • Чи має значення ОС?

  • (У зв'язку з цим) чи є різниця між стільниковим інтернетом та Wifi / Ethernet?

  • А що з однофункціональними пристроями, які, здається, не мають шару "Application" - наприклад, підключена до Інтернету камера, вимикачі світла або термостати.



3
Набагато краще поставити лише одне запитання на кожне питання - однак це дуже важко для цих дуже основних питань. Якщо у вас є подальші запитання, не забудьте спробувати зробити їх більш конкретними.
Шон Хуліхане

Усі пристрої мають рівень програми. Прикладний шар для підключеного до Інтернету світлодіодного перемикача - це програмне забезпечення, яке вмикає та вимикає світло, коли отримує команду.
користувач253751

@immibis це буде звучати жахливо педантично, але шари стеків протоколів - це не властивості, якими може володіти пристрій. У TCP / IP прикладний рівень містить протоколи зв’язку та методи інтерфейсу, що використовуються для комунікації між процесами в IP-комп'ютерній мережі. Пристрій може розміщувати систему, і ця система може виконувати програми, але пристрій не має рівня додатків. TCP / IP сама по собі є концептуальною моделлю.
липень

@SYS_V Коли я кажу: "у пристрої є рівень програми" я маю на увазі "пристрій має деякий програмний компонент, який реалізує те, що TCP / IP визначає як прикладний рівень"
користувач253751

Відповіді:


26

У питанні, яке буде вирішено в цій публікації, є деякі потенційні помилки чи непорозуміння.

  • На діаграмі 2 показано подання програмного "стека", який комп'ютер (ПК) використовуватиме для створення, обробки та відправки повідомлення через Інтернет на інший комп'ютер

  • Чи використовують усі види комп'ютерів - смартфони / телевізори / ігрові консолі тощо ?

  • (У зв'язку з цим) чи є якась різниця між стільниковим інтернетом та Wifi / Ethernet?

  • А що з однофункціональними пристроями, які, здається, не мають шару "Додатки" - наприклад, підключена до Інтернету камера, світлодіодні перемикачі або термостати.

Наявність цих помилок потребує включення пояснення наступного (щоб забезпечити контекст для подальшого обговорення):

  • Що таке Інтернет
  • Що таке набір протоколів TCP / IP
  • Що таке додаток

Тоді питання буде вирішено безпосередньо.

Зауважте, що, враховуючи їх важливість та складність, ціла серія книг написана у наборі протоколів TCP / IP. Визначення та пояснення тут будемо брати насамперед із Вікіпедії, TCP / IP Illustrated Volume 1 Друге видання: Протоколи Стівенса і Падіння, а також з підручника та технічного огляду IBM TCP / IP .

1. Інтернет

Інтернет є технічно глобальної мережі (WAN) , але більш корисний спосіб думати це як свого роду supernetwork (мережі мереж) або сукупність різних взаємопов'язаних з'єднаних чистих робіт. Ось малюнок маршрутів маршрутів через частину Інтернету:

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

  • Інтернет складається з багатьох підключених мереж
  • Мережа може складатися з 1 або більше систем ( хост )
  • Підключена система зазвичай працює на якійсь апаратній платформі
  • є значна розбіжність у типах систем, підключених до мереж, та апаратному забезпеченні, яке вони працюють

Про цікаве читання про те, як працює Інтернет, можна знайти у статті Arstechnica Як працює Інтернет: волокно підводного човна, мізки в банках та коаксіальні кабелі .

Отже, як різні системи, що працюють на різних апаратних платформах, підключених до різних мереж, можуть спілкуватися один з одним? Як можливий зв’язок між таким великим, неоднорідним масивом систем і мереж? Як все це може відбуватися одночасно?

2. Набір Інтернет-протоколів

Відповідь надається набором протоколів Інтернет, також набором протоколів TCP / IP. Ці питання були розглянуті в процесі проектування архітектури Інтернету (TCP / IP Illustrated, розділ 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. Є всі види комп'ютерів - смартфони , комунікатори / телевізор / gameconsoles і т.д. використовувати цей формат ?

Набір протоколів TCP / IP - це специфікація зв'язку, що не залежить від апаратної та операційної системи, а не формат . Якщо процес, що працює на одній апаратній платформі, потребує зв'язку з процесом, який працює у віддаленій системі, на іншій апаратній платформі, і спілкування відбувається через Інтернет, то системи повинні

  • правильно реалізувати набір протоколів TCP / IP і
  • відповідні протоколи в цьому пакеті повинні використовуватися для здійснення міжпроцесорної комунікації

  1. (У зв'язку з цим) чи є якась різниця між стільниковим інтернетом та Wifi / Ethernet?

Моє тлумачення цього питання: "Чи є різниця в способі підключення мобільного пристрою до мережі GSM і в тому, як мобільний пристрій підключається до мережі WiFi?"

Різниця полягає в рівні мережевого інтерфейсу.

Це питання розкриває неякісне відображення набору протоколів TCP / IP на схемі в статті, пов'язаній із запитанням. Для довідки, ось схема:

Shitty TCP / IP діаграма

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

З IBM "Підручник і технічний огляд TCP / IP" на сторінці 34:

Рівень мережевого інтерфейсу, який також називають шаром зв'язку або рівнем зв'язку даних, є інтерфейсом до фактичного мережевого обладнання. Цей інтерфейс може або не забезпечує надійну доставку і може бути орієнтований на пакет або потік. Насправді TCP / IP тут не вказує жодного протоколу, але може використовувати практично будь-який доступний мережевий інтерфейс, що ілюструє гнучкість рівня IP. Прикладами є IEEE 802.2, X.25 (що надійно саме по собі), банкомат, FDDI і навіть СНР.

Ось правильне та чудове зображення (з керівництва по TCP / IP ):

Покращена діаграма стеку TCP / IP

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

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

  • при підключенні до точки бездротового доступу Wi-Fi (WAP), використовуваний протокол визначається стандартом IEEE 802.11 .


  1. А що з однофункціональними пристроями, які, схоже, не мають шару "Application" - наприклад, підключена до Інтернету камера, вимикачі світла або термостати

Як описано раніше, протоколи в прикладному рівні пакету протоколів TCP / IP забезпечують стандарт для обміну даними програми між процесами.

Шари концептуальні. Вони не проживають в системі або на апаратній платформі.

Підключені до Інтернету камери, вимикачі світла та термостати можуть мати в них процеси, які спілкуються через Інтернет з процесами, що працюють на віддалених системах (перевірка оновлень мікропрограмного забезпечення, обмін даними з сервером тощо). Ці процеси або додатки використовуватимуть реалізацію набору протоколів TCP / IP для здійснення цього міжпроцесорного зв'язку.

Набір протоколів TCP / IP та вбудовані системи ("IoT")

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

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

IoT і TCP / IP 1

IoT і TCP / IP 2

Для отримання додаткової інформації дивіться ці статті:

Розуміння протоколів, що стоять за Інтернетом речей

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

Посібник з технологій IoT


На цьому рівні деталей моєї нетадмінної сторони сумно, що немає жодного слова про TCP / IP, що означає TCP для IP, TCP взагалі не пов'язаний з IP, це також було реалізовано в мережах IPX (де, навіть якщо сигл поряд, у них було 2 дуже різні протоколи)
Тенсібай

1
@Tensibai Чи не буде TCP в IPX здебільшого таким же, як SPX (тобто надійна транспортна версія на портах)? - Але це нагадує мені, що твердження про те, що два хости, які хочуть спілкуватися через Інтернет (тобто через різні мережі), повинні реалізовувати TCP / IP, не є суворою правдою: Хост A в мережі 1 та хост B в мережі 3 можуть говорити наприклад, IPX / SPX evenif, що з'єднувальна мережа 2 є чистою TCP / IP, за умови наявності тунельних шлюзів у
сітках

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

@Tensibai Якщо я зробив помилку чи помилки, будь ласка, повідомте мене, і я зроблю все можливе, щоб їх виправити
julian

@SYS_V насправді не помилка, деякі ярлики мене трохи турбують. скажімо, це нормально з точки зору зв'язку TCP :) Є вся необхідна інформація для того, хто бажає перекопати проблему. Я відчуваю, що ти трохи грубий щодо ОП у своєму першому абзаці, я спробую запропонувати змінити завтра (з комп’ютера), щоб вирішити мої проблеми :)
Тенсібай

12

Чи використовують усі види комп'ютерів - смартфони / телевізори / ігрові консолі тощо?

Для обміну в Інтернеті доведеться десь пройти через стек IP.

Чи має значення ОС?

IP-протокол визначається RFC 791 , тому ОС / вбудована програма повинна відповідати йому, яким би він не був.

(У зв'язку з цим) чи є різниця між стільниковим інтернетом та Wifi / Ethernet?

Дещо спростивши, різниця тут буде у шарі 1 (Фізичний) радіосигналу проти електричного сигналу на проводах. Детальніше на сторінці Вікіпедія моделі взаємозв’язку Open Systems (модель OSI) .

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

А що з однофункціональними пристроями, які, здається, не мають шару "Додатки" - наприклад, підключена до Інтернету камера, світлодіодні перемикачі або термостати.

Шар програми стосується конкретного протоколу зв'язку (HTTP, SSH тощо), він не повинен бути додатком, наприклад, Chrome або Firefox.
Зазвичай ці протоколи будуть реалізовуватися поверх TCP , деякі - понад UDP, коли є бажання не блокувати очікування підтвердження або отримання застарілого пакету не має сенсу (голосові дзвінки, потокове передавання). Існують інші протоколи 4 рівня, але зазвичай для конкретних звичаїв, як ICMP для ping. TCP - це протокол вибору, коли ви хочете переконатися, що деякі дані надійшли до місця призначення.

Для "віддаленого пристрою", як терморегулятор у вашому прикладі, він може використовувати вже наявні протоколи, як HTTP, або використовувати власний, щоб надсилати свої дані, які як і раніше будуть знаходитись на рівні програми, оскільки це не буде лише транспортом протокол.
Це може бути зроблено лише на рівні 4, але це потребує створення нового протоколу, а накладні витрати, як правило, не варті того, а система робить несумісною з іншими, використовуючи відкриті стандарти, на мою скромну думку кращий підхід.


3
Можливо, варто уточнити, що TCP-IP є досить поширеним "must have" в будь-якій ОС (від mbed / arduino до MC Windows та Linux).
Шон Хуліхане

Дійсно, звуки так натякані на мене для протоколів вищого рівня, що я це забуваю.
Тенсібай

відповіді 1 і відповідь 2 - це невідповіді, а відповідь 3 пояснюється за допомогою еталонної моделі OSI, а не набору протоколів TCP / IP. Жодна з відповідей у ​​цій публікації не стосується концептуальних помилок, які допущені у питанні.
липень

2
@Sys_v Мені не було можливості писати Novell :)
Тенсібай

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 у двошаровому стеку; фізичні компоненти не співпадають з чотирма логічними шарами, описаними в ОП.
фірфокс
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.