2014-04-18 14 views
32

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

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

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

Endlich, wenn es jemanden gibt, der Erfahrung mit einem Arduino macht, was ich oben beschrieben habe, würde ich wirklich einige Hinweise zu schätzen wissen.

Danke!

+2

Sie sind verschiedene Schichten in der Protokollhierarchie. Werfen Sie einen Blick auf ihre Wikipedia-Seiten oder besuchen Sie eine Website wie tcpipguide.com, um zu erfahren, wie Protokolle übereinander gelegt sind. – Barmar

+1

@Barmar sehr nützliche Verbindung zu tcpipguide.com – Adam

Antwort

46

HTTP ist ein Protokoll, das hauptsächlich für das Surfen im Internet (IE, Firefox usw.) verwendet wird. Es reitet auf dem TCP, der eine zuverlässige Verbindung zwischen zwei Computern bietet (wenn Paket verloren geht - es wird erneut übertragen). TCP selbst reitet auf der IP, die eine einheitliche Adressierung für die Kommunikation zwischen Computern bietet. TCP/IP ist eine Grundlage für Internet und 99% anderer Netzwerke.

Grundsätzlich bedeutet es, wenn Sie HTTP kommunizieren, tun Sie es mit TCP/IP darunter (aber ich bin sicher, das ist nicht, was Ihr Professor meinte).

Arduino Nano unterstützt nicht all diese, also brauchen Sie etwas dazwischen, das Nano-Signalisierung in TCP/HTTP-Kommunikation übersetzt.

Einige von Ihnen Optionen sind:

  1. Kommunikation mit Nano über serielle und macht PC Ihre Serien Protokoll
  2. Schalter Nano mit einer anderen Arduino-Board zu HTTP/TCP übersetzen, die Ethernet/WLAN-Schild-Erweiterung unterstützt (Uno/Mega), oder wählen Sie eine benutzerdefinierte Platine, die selbst Ethernet enthält
  3. Mit einem anderen Arduino (Uno/Mega) mit Ethernet-Schild als zusätzliche Platine, die mit Nano über Serial oder mit Hilfe von RF-Modulen kommuniziert (ich persönlich implementiert diese Option in der Vergangenheit)
  4. Eine weitere ungewöhnliche Option ist Nano auf Ihrem Android-Smartphone mit Audiokabel zu befestigen und Soft-Modem-Bibliothek (https://code.google.com/p/arms22/issues/detail?id=2) zu verwenden, die Umsetzung für Android enthält und eine Anwendung für Android schreiben

Webserver Sie unterstützt HTTP erwähnen Nur per Definition, wenn Sie also über TCP kommunizieren möchten, müssen Sie einen TCP-Server verwenden.

Einer der vorhandenen Webservices zur Bereitstellung von Diagrammen zur Visualisierung von Sensordaten ist https://xively.com/, die API basiert auf REST, die auf HTTP basiert. Aber es ist nicht der einzige.

+2

@Miro Wie betrachte ich Ihre Option Nummer 2 mit verschiedenen benutzerdefinierten Board mit Ethernet selbst? Könnten Sie bitte einige Boards vorschlagen? Wie soll ich danach vorgehen? – ddpd

+0

Ich mag sehr Spark-Plattform (enthält integrierte Wifi) - https://store.spark.io/?product=spark-core – Miro

+0

Wenn Sie etwas stärker brauchen - ich empfehle für Udoo - http: // www. udoo.org/. Sie machen hochwertiges Board. Oder Beaglebone Black (http://beagleboard.org/BLACK), die etwas billiger ist – Miro

8

@Miro beantwortet die Frage gut, in technischen sprechen, aber für die Neulinge zum Thema Vernetzung, würde Ich mag in einer Erklärung liefern nicht so technisch-sprechen:

Man könnte TCP betrachten oder UDP entspricht dem US-Postdienst, während HTTP einer Geschäftsbriefvorlage entspricht.Wenn Sie an eine unbekannte Person schreiben, ist das Geschäftsbriefformat eine gute, generische Art, das "WER, WIE, WAS, WANN UND WO" Ihrer Nachricht zu übermitteln, aber es ist NICHT das einzige Format, das von der USPS. Das heißt, wenn Sie an einen Geschäftspartner oder eine geliebte Person schreiben, verzichten Sie möglicherweise auf die Formalitäten und gehen stattdessen mit einem effizienteren Format wie einer Rechnungsrechnung oder einem Liebesbrief oder einer Grußkarte, aber die USPS, wie TCP oder UDP, wird immer noch für dich da sein und die Buchstaben hin und her tragen.

34

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

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

Ganz unten im Netzwerkstack befindet sich die physikalische Schicht. Dies ist, wo elektrische Signale oder Lichtimpulse oder Radiowellen tatsächlich Informationen von Ort zu Ort übertragen. Die physikalische Schicht hat nicht wirklich Protokolle, sondern stattdessen Standards für Spannungen, Frequenzen und andere physikalische Eigenschaften. Sie können Informationen auf diese Weise direkt übertragen, aber Sie benötigen viel Strom oder eine Standleitung, und ohne höhere Schichten können Sie keine Bandbreite teilen.

Die nächste Ebene ist die Link-Ebene. Diese Schicht deckt die Kommunikation mit Geräten ab, die sich ein physisches Kommunikationsmedium teilen. Hier legen Protokolle wie Ethernet, 802.11a/b/g/n und Token Ring fest, wie mehrere gleichzeitige Zugriffe auf das physische Medium zu handhaben sind und wie der Datenverkehr auf ein Gerät statt auf ein anderes gerichtet wird. In einem typischen Heimnetzwerk kommuniziert Ihr Computer so mit Ihrem Heim-Router.

Die dritte Schicht ist die Netzwerkschicht. In den meisten Fällen dominiert das Internet Protocol (IP). 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 sich befindet. Router steuern den Datenverkehr von Ihrem lokalen Netzwerk zu dem Netzwerk, in dem sich der andere Computer befindet, wobei seine eigene Sicherungsschicht die Pakete an den richtigen Computer weiterleitet.

Jetzt sind wir irgendwo. Wir können irgendwo auf der Welt mit einem Computer sprechen, aber auf diesem Computer laufen viele verschiedene Programme. Woher soll er wissen, an wen er deine Nachricht senden soll? Die Transportschicht erledigt dies normalerweise mit Portnummern. Die zwei beliebtesten Transportschicht-Protokolle sind TCP und UDP. TCP macht eine Menge interessanter Dinge, um die rauhen Stellen von paketvermittelter Netzwerkschicht-Kommunikation zu glätten, wie das Neuordnen von Paketen, das erneute Übertragen verlorener Pakete usw. UDP ist unzuverlässiger, hat jedoch weniger Overhead.

So haben wir Ihren Browser mit der Webserver-Software am anderen Ende verbunden, aber wie weiß der Server, welche Seite Sie wollen? Wie können Sie eine Frage oder eine Antwort posten? Dies sind Dinge, die von Protokollen auf Anwendungsebene gehandhabt werden. Für den Web-Verkehr ist dies das HyperText Transfer Protocol (HTTP). Es gibt Tausende von Protokollen auf Anwendungsebene: SMTP, IMAP und POP3 für E-Mails; XMPP, IRC, ICQ für Chat; Telnet, SSH, RDP für die Fernverwaltung; usw.

Dies sind die fünf Schichten des TCP/IP-Netzwerkmodells, aber sie sind wirklich nur konzeptionell. Das OSI-Modell hat 7 Schichten. In der Praxis sind einige Protokolle zwischen verschiedenen Ebenen angeordnet oder können gleichzeitig auf mehreren Ebenen arbeiten. TLS/SSL bietet beispielsweise Verschlüsselungs- und Sitzungsinformationen zwischen den Netzwerk- und Transportschichten. Über der Anwendungsschicht steuern Anwendungsprogrammierschnittstellen (APIs) die Kommunikation mit Webanwendungen wie Quora, Twitter und Facebook.

+9

Schöne Kopie/Paste von https://www.quora.com/What-ist-die-unterschied-zwischen-HTTP-protocol-and- TCP-Protokoll – Sally

+1

Gosh diese Antwort ist erstaunlich. Gehe nur ans Ende, um herauszufinden, dass er nur von Quora kopiert hat. Trotzdem großartig hier zu sein. –