wake-up-neo.com

HTTP vs. TCP/IP, Daten an einen Webserver senden

Ich arbeite gerade an einem Projekt, bei dem ich einen Arduino Nano ( http://arduino.cc/de/Main/arduinoBoardNano ) verwenden muss, um Daten von einem Temperatursensor an einen Webserver zu senden.

Zuerst dachte ich, es wäre einfach, da es so viele großartige Bibliotheken gibt, die bei POST/GET usw. helfen. Mein Professor hat mir jedoch gerade gesagt, dass ich Daten über TCP/IP an den Server senden muss Verstehen Sie es POST und GET sind HTTP-Methoden.

Könnte mir jemand den Unterschied zwischen HTTP und TCP/IP erklären? Speziell für das Senden von Daten an einen Webserver. Ich suche nach einer Antwort, die nicht zu technisch ist (ich bin bei all dem ziemlich neu).

Wenn es jemanden gibt, der Erfahrung damit hat, dass ein Arduino das tut, was ich oben beschrieben habe, würde ich wirklich einige Hinweise schätzen.

Vielen Dank!

44
Adam

HTTP ist ein Protokoll, das hauptsächlich zum Surfen im Internet (IE, Firefox usw.) verwendet wird. Es basiert auf TCP, das eine zuverlässige Verbindung zwischen zwei Computern bietet (wenn Pakete verloren gehen - es wird erneut übertragen). TCP selbst basiert auf IP, wodurch eine vereinheitlichte Adressierung für die Kommunikation zwischen Computern bereitgestellt wird. TCP/IP ist eine Basis für das Internet und 99% der anderen Netzwerke.

Im Grunde bedeutet das, wenn Sie über HTTP kommunizieren, tun Sie dies mit TCP/IP darunter (aber ich bin sicher, dass dies nicht Ihre Professor meinte).

Arduino Nano unterstützt nicht alle diese Funktionen, sodass Sie etwas dazwischen benötigen, das Nano-Signale in TCP/HTTP-Kommunikation übersetzt.

Einige von Ihnen Optionen sind:

  1. Kommunizieren Sie mit Nano über serielle Daten und lassen Sie Ihr serielles Protokoll vom PC in HTTP/TCP übersetzen
  2. Wechseln Sie den Nano mit einer anderen Arduino-Karte, die die Ethernet/Wifi-Shield-Erweiterung (Uno/Mega) unterstützt, oder wählen Sie eine benutzerdefinierte Karte, die selbst Ethernet enthält
  3. Verwendung eines anderen Arduino (Uno/Mega) mit Ethernet-Abschirmung als zusätzliche Karte, die mit Nano über Serial oder mithilfe von RF -Modulen kommuniziert (diese Option habe ich in der Vergangenheit persönlich implementiert)
  4. Eine andere ungewöhnliche Option besteht darin, Nano über ein Audiokabel an Ihr Android-Smartphone anzuschließen und die Softmodem-Bibliothek ( https://code.google.com/p/arms22/issues/detail?id=2 ) zu verwenden enthält die Implementierung für Android und schreibt eine Anwendung für Android

Der von Ihnen erwähnte Webserver unterstützt HTTP nur per Definition. Wenn Sie also über TCP kommunizieren möchten, müssen Sie einen TCP Server verwenden. 

Einer der vorhandenen Web-Services zum Bereitstellen von Diagrammen zur Visualisierung von Sensordaten ist https://xively.com/ . Die API basiert auf REST, das auf HTTP basiert. Aber es ist nicht der einzige.

58
Miro

Kurz gesagt: TCP ist ein Transportschichtprotokoll und HTTP ist ein Protokoll auf Anwendungsebene, das über TCP ausgeführt wird.

Detail: Um den Unterschied (und viele andere Netzwerkthemen) zu verstehen, müssen Sie die Idee eines mehrschichtigen Netzwerkmodells verstehen. Im Wesentlichen gibt es verschiedene Protokolle, die einen Computer in unterschiedlichen Entfernungen und auf verschiedenen Abstraktionsebenen sprechen lassen.

Ganz unten im Netzwerkstapel befindet sich die physikalische Schicht. Hier übertragen elektrische Signale oder Lichtimpulse oder Radiowellen tatsächlich Informationen von Ort zu Ort. Die physikalische Schicht verfügt nicht wirklich über Protokolle, sondern über Standards für Spannungen, Frequenzen und andere physikalische Eigenschaften. Sie können Informationen direkt auf diese Weise übertragen, aber Sie benötigen viel Strom oder eine Standleitung, und ohne höhere Schichten können Sie die Bandbreite nicht gemeinsam nutzen.

Die nächste Ebene ist die Verbindungsschicht. Diese Schicht deckt die Kommunikation mit Geräten ab, die sich ein physisches Kommunikationsmedium teilen. Protokolle wie Ethernet, 802.11a/b/g/n und Token Ring legen hier fest, wie mit mehreren gleichzeitigen Zugriffen auf das physische Medium umgegangen werden soll und wie der Datenverkehr auf ein Gerät anstatt auf ein anderes gerichtet wird. In einem typischen Heimnetzwerk spricht Ihr Computer so mit Ihrem Heimrouter.

Die dritte Schicht ist die Netzwerkschicht. In den meisten Fällen wird dies durch das Internet Protocol (IP) dominiert. Hier findet die Magie des Internets statt, und Sie können mit einem Computer auf der ganzen Welt sprechen, ohne wissen zu müssen, wo es ist. Router übernehmen die Weiterleitung Ihres Datenverkehrs von Ihrem lokalen Netzwerk zu dem Netzwerk, in dem sich der andere Computer befindet, wo seine eigene Verbindungsschicht die Pakete an den richtigen Computer weiterleitet.

Jetzt kommen wir irgendwo hin. Wir können irgendwo auf der Welt mit einem Computer sprechen, aber auf diesem Computer werden viele verschiedene Programme ausgeführt. Woher soll es wissen, an wen Sie Ihre Nachricht übermitteln sollen? Dafür sorgt die Transportschicht, in der Regel mit Portnummern. Die zwei beliebtesten Transportschichtprotokolle sind TCP und UDP. TCP unternimmt viele interessante Dinge, um die groben Stellen der paketvermittelten Kommunikation auf Netzwerkebene zu glätten, z.

Wir haben also Ihren Browser mit der Webserver-Software am anderen Ende verbunden. Aber woher weiß der Server, welche Seite Sie möchten? Wie können Sie eine Frage oder Antwort posten? Dies sind Dinge, die von Protokollen der Anwendungsschicht verarbeitet werden. Für den Internetverkehr ist dies das HyperText Transfer Protocol (HTTP). Es gibt Tausende von Protokollen auf Anwendungsebene: SMTP, IMAP und POP3 für E-Mail. XMPP, IRC, ICQ für den Chat; Telnet, SSH, RDP für die Remote-Verwaltung; usw.

Dies sind die fünf Schichten des TCP/IP-Netzwerkmodells, die jedoch nur konzeptionell sind. Das OSI-Modell hat 7 Schichten. In der Realität werden einige Protokolle zwischen verschiedenen Ebenen angeordnet oder können auf mehreren Ebenen gleichzeitig arbeiten. TLS/SSL bietet beispielsweise Verschlüsselungs- und Sitzungsinformationen zwischen den Netzwerk- und Transportschichten. Oberhalb der Anwendungsebene steuern Application Programming Interfaces (APIs) die Kommunikation mit Webanwendungen wie Quora, Twitter und Facebook.

49
sijo jose

@Miro hat die Frage in technischer Hinsicht gut beantwortet, aber für die Neulinge zum Thema Networking möchte ich eine Erklärung in nicht-so-technischer Sprache geben:

Man könnte TCP oder UDP als Entsprechung des US Postal Service betrachten, während HTTP einer Geschäftsbriefvorlage entspricht. Wenn Sie an eine unbekannte Person schreiben, ist das Geschäftsbriefformat eine gute generische Methode, um das "WER, WAS, WAS, WANN, WAS" Ihrer Nachricht zu übermitteln, aber es ist NICHT das einzige Format, das von der E-Mail zugelassen wird USPS. Wenn Sie also an einen Geschäftspartner oder eine geliebte Person schreiben, verzichten Sie möglicherweise auf die Formalitäten und verwenden stattdessen ein effizienteres Format, z. B. eine Rechnungsrechnung oder einen Liebesbrief oder eine Grußkarte. Die USPS ist jedoch wie TCP. oder UDP, wird immer noch für Sie da sein und die Briefe hin und her tragen. 

8
codechimp

Es gibt keinen besonderen Grund, warum TCP/IP oder HTTP bevorzugt werden sollte, abgesehen davon, dass HTTP einfacher zu codieren ist. Mit HTTP ist zwar ein gewisser Aufwand verbunden, im Vergleich zu Latenzverzögerungen ist er jedoch im Allgemeinen gering. Darüber hinaus enthält eine gute TCP/IP-Verbindung Code, um die Zuverlässigkeit zu gewährleisten, den HTTP kostenlos zur Verfügung stellt. 

Wenn also der betreffende Professor keine besonderen technischen Anforderungen hat (ask!) Oder wenn dies nicht eine besondere Lernerfahrung sein soll (ask!), Scheint mir eine Interaktion vom Typ POST/GET überlegen. Tatsächlich kommunizieren heutzutage viele Systeme auf diese Weise mit JSON-Objekten.

1
Jan Galkowski

IP vs. TCp vs. HTTP

Stellen Sie sich IP als eine Art Weg vor, auf dem andere Protokolle auf andere Computer zugreifen können. TCP und UDP sind die "Trucks" auf der Autobahn, und die "Ladung", die sie tragen, sind Protokolle wie HTTP, File Transfer Protocol (FTP) und mehr. 

IP ist erforderlich, um alle Netzwerke zu verbinden. 

TCP ist ein Mechanismus, mit dem wir Daten sicher übertragen können 

HTTP, das TCP zum Übertragen seiner Daten verwendet, ist ein spezifisches Protokoll, das von Webservern und Clients verwendet wird.

1
Sanaulla

Lassen Sie sich nicht verwirren. Ihre Proff bedeutet, dass Sie Arduino Nano Ethernet Shield verbinden und das HTTP-Protokoll verwenden, um Ihre Informationen an den Webserver zu senden, der auf TCP IP und Kommunikationsmittel antwortet.

0
OLUFEMI