web-dev-qa-db-fra.com

HTTP vs TCP/IP, envoi de données à un serveur Web

Je travaille actuellement sur un projet où je dois utiliser un Arduino Nano ( http://arduino.cc/en/Main/arduinoBoardNano ) pour envoyer des données d'un capteur de température à un serveur Web.

Au début, je pensais que ce serait facile, car il y a tellement de bonnes bibliothèques pour aider POST/GET, etc. Cependant, mon professeur vient de me dire que je dois envoyer des données au serveur à l'aide de TCP/IP. comprenez-le POST et GET sont des méthodes HTTP.

Quelqu'un pourrait-il m'expliquer la différence entre HTTP et TCP/IP? En particulier en ce qui concerne l'envoi de données à un serveur Web. Je cherche une réponse qui ne soit pas trop technique (je suis assez novice dans tout cela).

Enfin, s'il y a quelqu'un qui a de l'expérience en faisant un Arduino faire ce que j'ai décrit ci-dessus, j'apprécierais vraiment quelques indications.

Merci!

44
Adam

HTTP est un protocole utilisé principalement pour naviguer sur Internet (IE, Firefox, etc.). Il se place au-dessus de TCP, qui fournit un lien fiable entre deux ordinateurs (si un paquet est perdu, il est retransmis). TCP s’appuie lui-même sur IP, qui fournit un adressage unifié pour la communication entre ordinateurs. TCP/IP est une base pour Internet et 99% des autres réseaux.

En gros, cela signifie que si vous communiquez avec HTTP, vous le faites avec TCP/IP en dessous (mais je suis sûr que ce n'est pas ce que votre professeur voulait dire).

Arduino Nano ne supporte pas toutes ces technologies, vous avez donc besoin de quelque chose entre les deux, qui traduira la signalisation Nano en communication TCP/HTTP.

Certaines de vos options sont:

  1. Communiquer avec Nano sur série et demander à votre PC de traduire votre protocole série en HTTP/TCP
  2. Basculez Nano avec une autre carte Arduino prenant en charge l’extension de bouclier Ethernet/Wifi (Uno/Mega) ou choisissez une carte personnalisée contenant Ethernet seul.
  3. Utilisation d'un autre Arduino (Uno/Mega) avec bouclier Ethernet comme carte supplémentaire communiquant avec Nano sur série ou à l'aide de modules RF (j'ai personnellement implémenté cette option dans le passé)
  4. Une autre option inhabituelle consiste à connecter Nano à votre smartphone Android à l'aide d'un câble audio et à utiliser une bibliothèque de modem logiciel ( https://code.google.com/p/arms22/issues/detail?id=2 ), qui contient la mise en œuvre pour Android et écrire une application pour Android

Le serveur Web que vous mentionnez ne supporte HTTP que par définition. Par conséquent, si vous souhaitez communiquer via TCP, vous devez utiliser un serveur TCP. 

L'un des services Web existants pour fournir des graphiques permettant de visualiser les données du capteur est https://xively.com/ , son API est basée sur REST, qui se base sur HTTP. Mais ce n'est pas le seul.

58
Miro

En bref: TCP est un protocole de couche de transport et HTTP est un protocole de couche d'application qui s'exécute sur TCP.

Détail: Pour comprendre la différence (et de nombreux autres sujets relatifs au réseau), vous devez comprendre l’idée d’un modèle de réseau en couches. Il existe essentiellement différents protocoles permettant à un ordinateur de parler à différentes distances et avec différentes couches d'abstraction.

Tout en bas de la pile réseau se trouve la couche physique. C’est là que les signaux électriques, les impulsions lumineuses ou les ondes radio transmettent des informations d’un endroit à l’autre. La couche physique n'a pas vraiment de protocoles, mais plutôt des normes pour les tensions, les fréquences et d'autres propriétés physiques. Vous pouvez transmettre des informations directement de cette manière, mais vous avez besoin de beaucoup de puissance ou d'une ligne dédiée. Sans couche supérieure, vous ne pourrez pas partager la bande passante.

La couche suivante est la couche de liaison. Cette couche couvre la communication avec des périphériques partageant un support de communication physique. Ici, des protocoles tels qu'Ethernet, 802.11a/b/g/n et Token Ring spécifient comment gérer plusieurs accès simultanés au support physique et comment diriger le trafic vers un périphérique plutôt qu'un autre. Dans un réseau domestique typique, votre ordinateur communique ainsi avec votre "routeur" domestique.

La troisième couche est la couche réseau. Dans la majorité des cas, le protocole Internet (IP) domine. C’est là que se trouve la magie de l’Internet et que l’on peut parler à un ordinateur à l'autre bout du monde, sans avoir besoin de savoir où il se trouve. Les routeurs gèrent le trafic de votre réseau local vers le réseau où réside l'autre ordinateur, où sa propre couche de liaison gère le transfert des paquets vers le bon ordinateur.

Maintenant, nous allons quelque part. Nous pouvons parler à un ordinateur quelque part dans le monde, mais cet ordinateur exécute de nombreux programmes différents. Comment devrait-il savoir à qui adresser votre message? La couche de transport s'en charge, généralement avec des numéros de port. Les deux protocoles de couche de transport les plus populaires sont TCP et UDP. TCP fait beaucoup de choses intéressantes pour atténuer les difficultés de la communication à commutation de paquets sur la couche réseau, comme réorganiser les paquets, retransmettre des paquets perdus, etc.

Nous avons donc connecté votre navigateur au logiciel du serveur Web à l’autre extrémité, mais comment le serveur sait-il quelle page vous voulez? Comment pouvez-vous poster une question ou une réponse? Ce sont des choses que les protocoles de couche d'application gèrent. Pour le trafic Web, il s'agit du protocole HTTP (HyperText Transfer Protocol). Il existe des milliers de protocoles de couche application: SMTP, IMAP et POP3 pour le courrier électronique; XMPP, IRC, ICQ pour le chat; Telnet, SSH, RDP pour l'administration à distance; etc.

Ce sont les cinq couches du modèle de réseau TCP/IP, mais elles ne sont réellement que conceptuelles. Le modèle OSI comporte 7 couches. En réalité, certains protocoles oscillent entre plusieurs couches ou peuvent fonctionner sur plusieurs couches à la fois. TLS/SSL par exemple fournit un cryptage et des informations de session entre les couches réseau et transport. Au-dessus de la couche d'application, les interfaces de programmation d'application (API) régissent la communication avec les applications Web telles que Quora, Twitter et Facebook.

49
sijo jose

@Miro a bien répondu à la question, sur le plan technique, mais pour les débutants sur le thème du réseautage, j'aimerais donner une explication sur un langage peu technique:

On pourrait considérer TCP ou UDP comme l’équivalent du service postal américain, alors que HTTP est l’équivalent d’un modèle de lettre commerciale. Si vous écrivez à une personne inconnue, le format de lettre commerciale est un bon moyen générique de transmettre le message "QUI, COMMENT, QUAND, QUAND ET QUAND", mais ce n’est PAS le seul format autorisé par le message. USPS. Autrement dit, si vous écrivez à un associé ou à un proche, vous pouvez vous passer des formalités et opter pour un format plus efficace, comme une facture, une lettre d'amour ou une carte de voeux, mais USPS, comme TCP. ou UDP, sera toujours là pour vous, transportant les lettres d'avant en arrière. 

8
codechimp

En l'état, il n'y a pas de raison particulière pour préférer TCP/IP ou HTTP, mis à part que HTTP est plus facile à coder. HTTP est associé à une surcharge, mais il est généralement faible comparé aux délais de latence. De plus, un bon lien TCP/IP aura du code à ce sujet, pour la fiabilité, que HTTP fournit gratuitement. 

Ainsi, à moins que le professeur en question ait des exigences techniques particulières (demandez!), Ou à moins que vous souhaitiez une expérience d'apprentissage particulière (demandez!), Il me semble qu'une interaction de type POST/GET est supérieure. Aujourd'hui, de nombreux systèmes communiquent en utilisant des objets JSON de cette manière.

1
Jan Galkowski

IP vs TCp vs HTTP

Pensez à IP comme une sorte d’autoroute permettant à d’autres protocoles de s’installer et de se frayer un chemin vers d’autres ordinateurs. TCP et UDP sont les «camions» sur l'autoroute, et la «charge» qu'ils transportent sont des protocoles tels que HTTP, protocole de transfert de fichier (FTP) et plus. 

IP est requis pour connecter tous les réseaux; 

TCP est un mécanisme qui nous permet de transférer des données en toute sécurité et 

HTTP, qui utilise TCP pour transférer ses données, est un protocole spécifique utilisé par les serveurs Web et les clients.

1
Sanaulla

Ne vous y trompez pas, votre Proff signifie: connectez le blindage Arduino nano Ethernet et utilisez le protocole http pour envoyer vos informations au serveur Web qui répondent sur TCP IP et les moyens de communication.

0
OLUFEMI