Ich bin nicht besonders Internet-versiert und IoT-Technologien sind für mich besonders verwirrend. Ich habe dieses Stanford-Whitepaper zur Internetstruktur gelesen . In Abbildung 2 ist eine Darstellung des Software- "Stacks" dargestellt, den ein Computer (PC) verwenden würde, um eine Nachricht über das Internet zu erstellen, zu verarbeiten und an einen anderen Computer zu senden.
Verwenden alle Arten von Computern - Smartphones / Fernseher / Spielkonsolen usw. dieses Format?
Ist das Betriebssystem wichtig?
Gibt es (in dieser Hinsicht) einen Unterschied zwischen dem zellularen Internet und Wifi / Ethernet?
Was ist mit Einzelfunktionsgeräten, die anscheinend keine Anwendungsebene haben - z. B. mit dem Internet verbundene Kameras, Lichtschalter oder Thermostate?
quelle
Antworten:
Es gibt einige mögliche Missverständnisse oder Missverständnisse in der Frage, die in diesem Beitrag behandelt werden.
Das Vorhandensein dieser Missverständnisse erfordert die Aufnahme einer Erläuterung der folgenden Punkte (um den Kontext für die nachfolgende Diskussion bereitzustellen):
Dann werden die Fragen direkt beantwortet.
Beachten Sie, dass aufgrund ihrer Wichtigkeit und Komplexität eine ganze Reihe von Büchern über die TCP / IP-Protokollsuite geschrieben wurde. Die Definitionen und Erklärungen hier stammen hauptsächlich aus Wikipedia, TCP / IP Illustrated Volume 1, 2. Auflage: The Protocols by Stevens and Fall, sowie dem TCP / IP Tutorial und Technical Overview von IBM .
1. Das Internet
Das Internet ist technisch gesehen ein Wide Area Network (WAN) , aber hilfreicher ist es, es als eine Art Supernetz (ein Netzwerk von Netzwerken) oder als eine Ansammlung vieler verschiedener miteinander verbundener Netzwerke zu betrachten . Hier ist ein Bild von Routing-Pfaden durch einen Teil des Internets:
Eine unterhaltsame Lektüre zur Funktionsweise des Internets finden Sie im Arstechnica-Artikel Funktionsweise des Internets: U-Boot-Glasfaser, Gehirn in Gläsern und Koaxialkabel .
Wie können verschiedene Systeme auf verschiedenen Hardwareplattformen, die mit verschiedenen Netzwerken verbunden sind, miteinander kommunizieren? Wie ist die Kommunikation zwischen einer derart großen, heterogenen Anzahl von Systemen und Netzwerken möglich? Wie kann das alles gleichzeitig geschehen?
2. Die Internet Protocol Suite
Die Antwort liefert die Internet-Protokollsuite, auch bekannt als TCP / IP-Protokollsuite. Diese Fragen wurden während des Entwurfsprozesses der Internetarchitektur (TCP / IP Illustrated, Abschnitt 1.1: Architekturprinzipien) berücksichtigt:
Aus der Internet Protocol Suite (Wikipedia):
Eine Möglichkeit, sich die TCP / IP-Protokollsuite vorzustellen, besteht darin, anzugeben, wie Prozesse, die auf verschiedenen Systemen und in verschiedenen Netzwerken ausgeführt werden, miteinander kommunizieren können. Im Wesentlichen bietet die TCP / IP-Protokollsuite einen Standard für die Kommunikation zwischen Prozessen.
Jedes System, das die TCP / IP-Protokollsuite ordnungsgemäß implementiert, kann die bereitgestellten Funktionen verwenden, um die Kommunikation seiner Prozesse über das Internet zu ermöglichen. Tatsächlich muss ein System standardkonforme TCP / IP-Suite-Protokolle verwenden , damit Prozesse über das Internet mit anderen Prozessen kommunizieren können, die auf Remotesystemen in anderen Netzwerken ausgeführt werden .
3. Anwendungen
Aus der Anwendungssoftware (Wikipedia):
Eine Anwendung kann als User-Space- Prozess auf einem System betrachtet werden. Zusätzlich zu den oben aufgeführten Beispielen kann dies Programme wie Computerviren (ohne Kernelmodus), Webserver, Kameraanwendungen und Programme zur Aggregation von Sensordaten umfassen.
Wenn eine Anwendung Daten über das Internet überträgt und empfängt, muss sie die Implementierung der TCP / IP-Protokollsuite ihres Hostsystems verwenden. Aus der Anwendungsschicht (Wikipedia):
Die Anwendungsschicht der TCP / IP-Protokollsuite umfasst Protokolle wie FTP (File Transfer Protocol), DNS (Domain Name System) und möglicherweise HTTP (Hypertext Transfer Protocol).
Das HTTP-Protokoll der Anwendungsschicht gibt beispielsweise an, wie Daten zwischen zwei Prozessen übertragen werden, die auf (normalerweise) verschiedenen Systemen ausgeführt werden: der Clientanwendung, einem Webbrowser und der Serveranwendung, dem Webserverprozess.
Klärung möglicher Missverständnisse
Die TCP / IP-Protokollsuite ist kein Software-Stack. Aus Technopedia :
Es handelt sich vielmehr um einen Protokollstack, der normalerweise vom Kernel (ebenfalls von Technopedia ) implementiert wird :
Die TCP / IP-Protokollsuite ist eine hardware- und betriebssystemunabhängige Kommunikationsspezifikation, kein Format . Wenn ein Prozess, der auf einer Hardwareplattform ausgeführt wird, mit einem Prozess kommunizieren muss, der auf einem Remote-System auf einer anderen Hardwareplattform ausgeführt wird, und die Kommunikation über das Internet erfolgt, müssen die Systeme
Meine Interpretation dieser Frage lautet: "Gibt es einen Unterschied in der Art und Weise, wie ein mobiles Gerät eine Verbindung zu einem GSM-Netzwerk herstellt, und in der Art und Weise, wie ein mobiles Gerät eine Verbindung zu einem WiFi-Netzwerk herstellt?"
Der Unterschied liegt in der Netzwerkschnittstellenschicht.
Diese Frage enthüllt die schlechte Darstellung der TCP / IP-Protokollsuite im Diagramm des Artikels, auf den in der Frage verwiesen wird. Als Referenz ist hier das Diagramm:
Die unterste Schicht, die als "Hardware" bezeichnet wird, sollte als Verbindungsschicht , MAC- Schicht ( Media Access Control) oder Netzwerkschnittstellenschicht bezeichnet werden .
In IBMs "TCP / IP-Lernprogramm und technischer Überblick" Seite 34:
Hier ist eine korrekte und überlegene Darstellung (aus dem TCP / IP-Handbuch ):
Der Grund, warum die Diskussion der Netzwerkschnittstellenschicht relevant ist, besteht darin, dass es auf dieser Schicht einen Unterschied in der Art und Weise gibt, wie ein Mobiltelefon / Mobilgerät eine Verbindung zu einem GSM-Netzwerk herstellt, im Vergleich zu einem WiFi-Netzwerk.
Wenn eine Verbindung zu einem GSM-Netzwerk hergestellt wird, wird das Netzwerkschnittstellen-Schichtprotokoll, das verwendet wird, um die Verbindung zwischen dem mobilen Gerät und der Basis-Transceiver-Station (BTS) zu handhaben, typischerweise durch 3G spezifiziert
Bei der Verbindung mit einem drahtlosen WiFi-Zugangspunkt (WAP) wird das verwendete Protokoll durch den Standard IEEE 802.11 festgelegt .
Wie bereits beschrieben, bieten Protokolle in der Anwendungsschicht der TCP / IP-Protokollsuite einen Standard für den Austausch von Anwendungsdaten zwischen Prozessen.
Die Ebenen sind konzeptionell. Sie befinden sich nicht in einem System oder auf einer Hardwareplattform.
Auf mit dem Internet verbundenen Kameras, Lichtschaltern und Thermostaten können Prozesse ausgeführt werden, die über das Internet mit Prozessen kommunizieren, die auf Remote-Systemen ausgeführt werden (Überprüfung auf Firmware-Updates, Datenaustausch mit einem Server usw.). Diese Prozesse oder Anwendungen verwenden die Implementierung der TCP / IP-Protokollsuite, um diese prozessübergreifende Kommunikation durchzuführen.
Die TCP / IP-Protokollsuite und eingebettete Systeme ("IoT")
Zwar gibt es eine Vielzahl unterschiedlicher Anwendungen, die unterschiedliche Protokolle der Anwendungsschicht verwenden, die auf herkömmlichen PCs oder Servern ausgeführt werden, jedoch gibt es keine allzu großen Unterschiede hinsichtlich der Art und Weise, wie die Hardwareplattformen mit ihren jeweiligen Zugriffspunkten (Netzwerkschnittstelle / Datenverbindungsschicht) verbunden sind. Dies erfolgt hauptsächlich drahtgebunden oder drahtlos über Ethernet.
Die Situation ist etwas anders, wenn es um die Vielzahl eingebetteter Systeme geht, die über TCP / IP kommunizieren. Hier ist eine Illustration davon (aus Postscapes ):
Weitere Informationen finden Sie in diesen Artikeln:
Die Protokolle hinter dem Internet der Dinge verstehen
IoT-Standards und -Protokolle
IoT-Technologiehandbuch
quelle
Damit etwas im Internet ausgetauscht werden kann, muss es irgendwo einen IP-Stack durchlaufen.
Das IP-Protokoll wird vom RFC 791 definiert , daher muss das Betriebssystem / die Firmware dem Protokoll entsprechen, unabhängig davon, um welches Protokoll es sich handelt.
Vereinfacht gesagt, liegt der Unterschied hier bei dem (physikalischen) Funksignal der Schicht 1 gegenüber dem elektrischen Signal auf den Kabeln. Weitere Informationen finden Sie auf der Wikipedia-Seite zum Open Systems Interconnection-Modell (OSI-Modell) .
Sie alle dienen dazu, die Schicht 3 (Netzwerk), hier IP, auf ihre spezifischen Medien zu transponieren.
Die Application Layer beziehen sich auf ein bestimmtes Kommunikationsprotokoll (HTTP, SSH usw.), es muss sich beispielsweise nicht um eine Anwendung wie Chrome oder Firefox handeln.
Normalerweise werden diese Protokolle über TCP implementiert , einige über UDP, wenn das Warten auf die Bestätigung nicht blockiert werden soll oder wenn das Abrufen eines veralteten Pakets keinen Sinn ergibt (Sprachanrufe, Streaming). Es gibt andere Layer-4-Protokolle, aber normalerweise für bestimmte Verwendungszwecke, wie ICMP für
ping
. TCP ist das Protokoll der Wahl, wenn Sie sicherstellen möchten, dass einige Daten am Ziel angekommen sind.Bei einem "entfernten Gerät", wie dem Thermostat in Ihrem Beispiel, werden möglicherweise bereits vorhandene Protokolle wie HTTP verwendet oder es werden proprietäre Protokolle zum Senden der Daten verwendet, die sich in der Regel immer noch auf der Anwendungsebene befinden, da es sich nicht nur um einen Transport handelt Protokoll.
Es kann nur auf Schicht 4 erfolgen, aber dies erfordert die Erstellung eines neuen Protokolls, und der Overhead lohnt sich normalerweise nicht und macht das System mit anderen inkompatibel. Die Verwendung offener Standards ist meiner bescheidenen Meinung nach ein besserer Ansatz.
quelle
Obwohl es stimmt, dass jedes mit dem Internet verbundene Gerät TCP / IP (oder UDP) für die Kommunikation verwendet, ist es wirklich die nächste Stufe im Stapel, auf der die Dinge interessant werden.
Jedes moderne IoT-Gerät verwendet TLS zur Verschlüsselung und Authentifizierung. Dies verhindert (theoretisch), dass andere Personen die weitergegebenen Nachrichten beobachten oder stören. Eine wichtige Überlegung des TCP / IP-Stacks ist, dass ein Großteil der übertragenen Informationen trivial beobachtet werden kann - und dies führt oft sehr leicht zu Sicherheitslücken.
Geräte müssen keine Verbindung zum Internet "an der Quelle" herstellen, daher ist es nicht erforderlich , TCP über Bluetooth (als Beispiel) zu implementieren. Möglicherweise sehen Sie auch IoT-Geräte, die Mobiltelefonprotokolle (z. B. normale SMS oder Texte) als Endpunkt verwenden. Letztendlich werden diese Protokolle (die in gewisser Weise für die installierte Umgebung ausgewählt wurden) wahrscheinlich von einem Hub-Gerät mit dem Internet verbunden.
quelle
Alle Geräte, die TCP over IP verwenden möchten, benötigen einen TCP / IP-Stack.
Das Protokoll ist standardisiert, sodass Geräte verschiedener Hersteller oder mit unterschiedlichen Betriebssystemen sich gegenseitig verstehen können.
Beachten Sie, dass TCP dafür sorgt, dass Datenpakete ankommen, oder dass der Absender über deren Verlust informiert wird. TCP wird verwendet, wenn Sie es sich nicht leisten können, Daten zu verlieren, ohne sich dessen bewusst zu sein (z. B. Kommunikation mit Ihrer Bank).
Es gibt auch UDP, das Pakete sendet und "hofft, dass sie dort ankommen". Dies kann zum Beispiel zum Streamen von Musik oder Videos verwendet werden, bei denen der Verlust einiger Frames nicht fatal ist.
Der wichtige Teil ist die Standardisierung.
quelle
Der Stack selbst ist ein virtuelles Konzept. Jede Schicht im Stapel verändert die letzten Bits, die über das physikalische Medium gesendet werden (Funkwellen oder andere elektronische Signale). Es gibt keine Regel, die besagt, dass jede Schicht im Stapel in einer einzelnen diskreten Code- oder Hardwareeinheit erstellt werden muss. Beispielsweise kombinieren iEthernet-Chips TCP-, IP-, MAC- und PHY-Schichten und überlassen den Entwicklern die Implementierung von TLS- und Anwendungsschichtsoftware.
Das heißt, alle Bits müssen den verschiedenen beteiligten Protokollen entsprechen. Aus diesem Grund ist es normalerweise einfacher, jede Schicht als separate Einheit zu entwerfen, damit sie unabhängig getestet und verifiziert werden können. Die meisten Geräte, einschließlich Smartphones, Smart-TVs und Spielekonsolen, beziehen ihre Chips normalerweise von Drittanbietern, die sich auf bestimmte Bereiche spezialisiert haben. Beispielsweise verwenden die meisten Telefone nur einen von wenigen verschiedenen Bluetooth-Chips. Dies bedeutet, dass sich der Hersteller nicht um die Neuerfindung des Rads bei jedem neuen Produkt kümmern muss.
In der Theorie verfügen einige kleine, spezialisierte Geräte möglicherweise nur über einen einzelnen Prozessor mit integriertem SoC (Software on Chip), der alle Netzwerkebenen (Anwendung, TLS, TCP, IP, PHY) als einzelne Codeeinheit verarbeitet. Ich kann im Moment keine konkreten Beispiele finden, aber es würde mich nicht überraschen, wenn einige kleine, stromsparende oder dedizierte Funktionsgeräte alle Schichten des Stapels zu einer einzigen Einheit zusammenfassen, um den Stromverbrauch zu senken (Verlängerung der Batterielebensdauer). Größere, kompliziertere Produkte wie Fernseher, Telefone und Spielesysteme haben wahrscheinlich mindestens drei Schichten (Anwendung, Betriebssystem und Hardware), während ein Toaster möglicherweise nur ein oder zwei Schichten hat.
Hinweis: Ich sage nicht, dass der bestimmte Toaster, den ich verknüpft habe, 1 oder 2 Schichten hat, nur dass es logisch wäre, wenn er so konzipiert wäre, dass er ein Einzweckgerät ist.
quelle