Nie przepadam za internetem, a technologie IoT są dla mnie szczególnie mylące. Czytałem tę białą księgę Stanforda na temat struktury Internetu. Na schemacie 2 pokazano reprezentację „stosu” oprogramowania, którego komputer (PC) użyłby do stworzenia, przetworzenia i wysłania wiadomości przez Internet na inny komputer.
Czy wszystkie rodzaje komputerów - smartfony / telewizory / konsole do gier itp. Używają tego formatu?
Czy system operacyjny ma znaczenie?
(Pod tym względem) czy jest jakaś różnica między internetem komórkowym a Wi-Fi / Ethernet?
Co z urządzeniami jednofunkcyjnymi, które nie wydają się mieć warstwy „aplikacji” - np. Kamera internetowa, przełączniki światła lub termostaty.
networking
wifi
protocols
BestMillimeter
źródło
źródło
Odpowiedzi:
Istnieje kilka potencjalnych nieporozumień lub nieporozumień w pytaniu, które zostanie omówione w tym poście.
Obecność tych nieporozumień wymaga włączenia wyjaśnienia następujących kwestii (w celu zapewnienia kontekstu do dalszej dyskusji):
Następnie pytania zostaną skierowane bezpośrednio.
Zauważ, że biorąc pod uwagę ich wagę i złożoność, cała seria książek została napisana w pakiecie protokołów TCP / IP. Definicje i wyjaśnienia tutaj zostaną zaczerpnięte przede wszystkim z Wikipedii, TCP / IP Illustrated Volume 1 Second edition: The Protocols by Stevens and Fall, a także IBM TCP / IP Tutorial and Technical Overview .
1. Internet
Internet jest technicznie siecią rozległą (WAN) , ale bardziej pomocnym sposobem myślenia o tym jest rodzaj supernetwork (sieć sieci) lub agregat wielu różnych powiązanych ze sobą sieci . Oto zdjęcie ścieżek routingu przez część Internetu:
Zabawną lekturę na temat działania Internetu można znaleźć w artykule Arstechnica Jak działa Internet: Światłowód podwodny, mózg w słoikach i kable koncentryczne .
Jak więc różne systemy działające na różnych platformach sprzętowych podłączone do różnych sieci mogą się ze sobą komunikować? Jak możliwa jest komunikacja między tak ogromnym, heterogenicznym zestawem systemów i sieci? Jak to wszystko może odbywać się jednocześnie?
2. Pakiet protokołu internetowego
Odpowiedzi udziela pakiet protokołów internetowych, inaczej pakiet protokołów TCP / IP. Te pytania zostały rozważone podczas procesu projektowania architektury Internetu (ilustrowany protokół TCP / IP, sekcja 1.1: Zasady architektury):
Z pakietu protokołu internetowego (Wikipedia):
Jednym ze sposobów myślenia o pakiecie protokołów TCP / IP jest specyfikacja sposobu, w jaki procesy działające w różnych systemach i różnych sieciach mogą się ze sobą komunikować. Zasadniczo pakiet protokołów TCP / IP zapewnia standard komunikacji między procesami.
Każdy system, który poprawnie implementuje pakiet protokołów TCP / IP, może korzystać z funkcji, które udostępnia, aby umożliwić swoim procesom komunikację przez Internet. W rzeczywistości, aby procesy mogły komunikować się przez Internet z innymi procesami działającymi na zdalnych systemach w innych sieciach, system musi korzystać ze zgodnych ze standardami protokołów pakietu TCP / IP.
3. Aplikacje
Z oprogramowania aplikacyjnego (Wikipedia):
Aplikację można traktować jako proces przestrzeni użytkownika działający w systemie. Oprócz wymienionych powyżej przykładów może to obejmować programy, takie jak (w trybie innym niż jądro) wirusy komputerowe, serwery sieciowe, aplikacje do kamer i programy do gromadzenia danych z czujników.
Gdy aplikacja przesyła i odbiera dane przez Internet, musi wykorzystać implementację pakietu protokołów TCP / IP swojego systemu hosta. Z warstwy aplikacji (Wikipedia):
Warstwa aplikacji pakietu protokołów TCP / IP zawiera protokoły takie jak File Transfer Protocol (FTP), Domain Name System (DNS) i prawdopodobnie najbardziej znany, Hypertext Transfer Protocol (HTTP).
Na przykład protokół warstwy aplikacji HTTP HTTP określa sposób przesyłania danych między 2 procesami działającymi w (zwykle) różnych systemach: aplikacji klienckiej, przeglądarce internetowej i aplikacji serwerowej, procesie serwera WWW.
Wyjaśnienie potencjalnych nieporozumień
Pakiet protokołów TCP / IP nie jest stosem oprogramowania. Z Technopedia :
Jest to raczej stos protokołów, zwykle implementowany przez jądro (również z Technopedia ):
Pakiet protokołów TCP / IP jest specyfikacją komunikacji niezależną od sprzętu i systemu operacyjnego, a nie formatem . Jeśli proces działający na jednej platformie sprzętowej musi komunikować się z procesem działającym w systemie zdalnym na innej platformie sprzętowej, a komunikacja odbywa się przez Internet, systemy muszą
Moja interpretacja tego pytania brzmi: „Czy istnieje różnica w sposobie, w jaki urządzenie mobilne łączy się z siecią GSM i w jaki sposób urządzenie mobilne łączy się z siecią WiFi?”
Różnica polega na warstwie interfejsu sieciowego.
To pytanie pokazuje słabe przedstawienie pakietu protokołów TCP / IP na schemacie w artykule, do którego odnośnik zawiera pytanie. Dla porównania, oto schemat:
Najniższa warstwa, zwana „hardware”, powinna być określana jako warstwa łącza , kontroli dostępu do medium (MAC) warstwa lub warstwy sieciowej .
Ze strony IBM „Samouczek TCP / IP i przegląd techniczny” na stronie 34:
Oto poprawne i lepsze przedstawienie (z Przewodnika TCP / IP ):
Powodem, dla którego dyskusja na temat warstwy interfejsu sieciowego jest istotna, jest to, że na tej warstwie istnieje różnica w sposobie, w jaki urządzenie komórkowe / mobilne łączy się z siecią GSM w porównaniu z siecią WiFi.
podczas łączenia się z siecią GSM protokół warstwy interfejsu sieciowego wykorzystywany do obsługi połączenia między urządzeniem mobilnym a podstawową stacją nadawczo-odbiorczą (BTS) jest zazwyczaj określany przez 3G
podczas łączenia się z bezprzewodowym punktem dostępowym WiFi (WAP), używany protokół jest określony przez standard IEEE 802.11 .
Jak opisano wcześniej, protokoły w warstwie aplikacji pakietu protokołów TCP / IP zapewniają standard wymiany danych aplikacji między procesami.
Warstwy są koncepcyjne. Nie rezydują w systemie ani na platformie sprzętowej.
Kamery, przełączniki światła i termostaty podłączone do Internetu mogą mieć uruchomione procesy, które komunikują się przez Internet z procesami uruchomionymi w systemach zdalnych (sprawdzanie aktualizacji oprogramowania układowego, wymianę danych z serwerem itp.). Te procesy lub aplikacje będą wykorzystywać implementację pakietu protokołów TCP / IP do realizacji tej komunikacji między procesami.
Pakiet protokołów TCP / IP i systemy wbudowane („IoT”)
Chociaż istnieje wiele różnych aplikacji wykorzystujących różne protokoły warstwy aplikacji działających na tradycyjnych komputerach PC lub serwerach, nie ma aż tak dużej różnicy pod względem sposobu łączenia platform sprzętowych z ich odpowiednimi punktami dostępu (warstwa interfejsu sieciowego / warstwa łącza danych). Jest to realizowane przede wszystkim przewodowo lub bezprzewodowo przez Ethernet.
Sytuacja jest nieco inna, jeśli chodzi o szeroką gamę systemów wbudowanych komunikujących się przez TCP / IP. Oto ilustracja tego (z Postscapes ):
Aby uzyskać więcej informacji, zobacz następujące artykuły:
Zrozumienie protokołów za Internetem rzeczy
Standardy i protokoły IoT
Przewodnik po technologiach IoT
źródło
Aby coś wymienić w Internecie, będzie musiał gdzieś przejść przez stos IP.
Protokół IP jest zdefiniowany przez RFC 791 , więc OS / Firmware musi się z nim zgadzać, cokolwiek to jest.
Upraszczając nieco, różnica będzie dotyczyła sygnału radiowego warstwy 1 (fizycznej) w porównaniu z sygnałem elektrycznym na drutach. Więcej szczegółów na stronie Wikipedii w modelu Open Systems Interconnection model (model OSI) .
Wszystkie służą do transponowania warstwy 3 (sieci), w tym przypadku adresu IP, na ich określonych nośnikach.
Warstwa aplikacji odnosi się do określonego protokołu komunikacyjnego (HTTP, SSH itp.), Nie musi to być na przykład aplikacja Chrome lub Firefox.
Zwykle protokoły te są implementowane na TCP , niektóre na UDP, gdy nie chcesz blokować oczekiwania na potwierdzenie lub gdy uzyskanie przestarzałego pakietu nie ma sensu (połączenia głosowe, streaming). Istnieją inne protokoły warstwy 4, ale zwykle dla określonych zastosowań, np. Dla ICMP
ping
. TCP jest protokołem z wyboru, gdy chcesz mieć pewność, że pewne dane dotrą do miejsca docelowego.W przypadku „urządzenia zdalnego”, takiego jak termostat w twoim przykładzie, może on wykorzystywać już istniejące protokoły, takie jak HTTP, lub użyć zastrzeżonego, aby wysłać swoje dane, które nadal będą w warstwie aplikacji zwykle, ponieważ nie będzie to tylko transport protokół.
Można to zrobić tylko na warstwie 4, ale to wymaga stworzenia nowego protokołu, a narzut zwykle nie jest tego wart i sprawia, że system jest niezgodny z innymi, używanie otwartych standardów jest moim zdaniem lepszym podejściem.
źródło
Chociaż prawdą jest, że każde urządzenie podłączone do Internetu będzie wykorzystywać do komunikacji protokół TCP / IP (lub UDP), to naprawdę jest wyższy poziom w stosie, w którym wszystko staje się interesujące.
Każde nowoczesne urządzenie IoT będzie używać TLS do szyfrowania i uwierzytelniania. Zapobiega to (teoretycznie) komukolwiek innemu obserwowaniu lub zakłócaniu przekazywanych wiadomości. Ważną kwestią dotyczącą stosu TCP / IP jest to, że większość przesyłanych informacji można obserwować w sposób trywialny - co często prowadzi bardzo łatwo do wad bezpieczeństwa.
Urządzenia nie muszą łączyć się z Internetem „u źródła”, więc nie trzeba implementować TCP przez bluetooth (na przykład). Możesz także zobaczyć urządzenia IoT wykorzystujące protokoły telefonów komórkowych (takie jak zwykłe SMS-y lub SMS-y) jako ostatni przeskok. Ostatecznie te protokoły (wybrane w jakiś sposób dla zainstalowanego środowiska) prawdopodobnie zostaną zmostkowane z „Internetem” przez urządzenie koncentrujące.
źródło
Wszystkie urządzenia, które chcą korzystać z TCP przez IP, wymagają stosu TCP / IP.
Protokół jest znormalizowany, aby urządzenia różnych producentów lub korzystające z różnych systemów operacyjnych mogły się nawzajem rozumieć.
Zauważ, że TCP zapewnia, że pakiety danych dotrą, w przeciwnym razie nadawca zostanie powiadomiony o ich utracie. TCP byłby używany, gdy nie możesz sobie pozwolić na utratę jakichkolwiek danych bez wiedzy o nich (np. Komunikacja z bankiem).
Istnieje również UDP, który wysyła pakiety i „ma nadzieję, że tam dotrą”. Można to wykorzystać na przykład do przesyłania strumieniowego muzyki lub wideo, gdzie utrata kilku klatek nie jest śmiertelna.
Ważną częścią jest normalizacja.
źródło
Sam stos jest koncepcją wirtualną. Każda warstwa w stosie modyfikuje końcowe bity, które są wysyłane przez medium fizyczne (fale radiowe lub inne sygnały elektroniczne). Nie ma reguły, która mówi, że każda warstwa w stosie musi być zaprojektowana w pojedynczej dyskretnej jednostce kodu lub sprzętu. Na przykład chipy iEthernet łączą warstwy TCP, IP, MAC i PHY, pozostawiając programistom zadanie implementacji oprogramowania TLS i warstwy aplikacji.
To powiedziawszy, wszystkie bity muszą być zgodne z różnymi zaangażowanymi protokołami iz tego powodu zazwyczaj łatwiej jest zaprojektować każdą warstwę jako oddzielną całość, aby można je było niezależnie przetestować i zweryfikować. Większość urządzeń, w tym smartfony, inteligentne telewizory i konsole do gier, zazwyczaj kupuje układy od stron trzecich, które specjalizują się w niektórych obszarach. Na przykład większość telefonów używa tylko jednego z kilku różnych układów Bluetooth; oznacza to, że producent nie musi martwić się o wymyślenie koła z każdym nowym produktem.
Teoretycznie niektóre małe, wyspecjalizowane urządzenia mogą mieć tylko jeden procesor z wbudowanym SoC (Software on Chip), który obsługuje wszystkie warstwy sieciowe (aplikacje, TLS, TCP, IP, PHY) jako pojedynczą dyskretną jednostkę kodu. Nie mogę teraz znaleźć żadnych konkretnych przykładów, ale nie zdziwiłbym mnie, gdyby niektóre małe urządzenia o niskiej mocy lub dedykowane funkcje łączyły wszystkie warstwy stosu w jedno urządzenie, aby zmniejszyć zużycie energii (przedłużyć żywotność baterii). Większe, bardziej skomplikowane produkty, takie jak telewizory, telefony i systemy gier prawdopodobnie mają co najmniej 3 warstwy (aplikacja, system operacyjny i elementy sprzętowe), podczas gdy toster może mieć tylko 1 lub 2 warstwy.
Uwaga: nie twierdzę, że konkretny toster, który podłączyłem, ma 1 lub 2 warstwy, po prostu logiczne byłoby, gdyby został zaprojektowany w ten sposób, ponieważ jest urządzeniem przeznaczonym do jednego celu.
źródło