当前位置:  开发笔记 > 编程语言 > 正文

HTTP与TCP/IP,将数据发送到Web服务器

如何解决《HTTP与TCP/IP,将数据发送到Web服务器》经验,为你挑选了4个好方法。

我目前正在开展一个项目,我需要使用Arduino Nano(http://arduino.cc/en/Main/arduinoBoardNano)将数据从温度传感器发送到Web服务器.

起初我觉得这很容易,因为那里有很多很棒的图书馆来帮助POST/GET等等.但是,我的教授告诉我,我需要使用TCP/IP将数据发送到服务器,因为我了解它POST和GET是HTTP方法.

有人可以向我解释HTTP和TCP/IP之间的区别吗?特别是因为它涉及将数据发送到Web服务器.我正在寻找一个不太技术性的答案(我对所有这些都很新).

最后,如果有人在那里有经验让Arduino做我上面所描述的,我真的很感激一些指示.

谢谢!



1> Miro..:

HTTP是一种主要用于浏览互联网(IE,Firefox等)的协议.它位于TCP之上,它在两台计算机之间提供可靠的链接(如果数据包丢失 - 它会被重新传输).TCP本身就位于IP之上,它为计算机之间的通信提供统一寻址.TCP/IP是互联网和99%其他网络的基础.

基本上它意味着如果你正在通信HTTP,你正在使用下面的TCP/IP(但我相信这不是你教授的意思).

Arduino Nano并不支持所有这些,所以你需要介于两者之间,这会将Nano信令转换为TCP/HTTP通信.

你们中的一些选择是:

    与Nano over Serial通信并使PC将您的串行协议转换为HTTP/TCP

    使用其他支持以太网/ Wifi屏蔽扩展(Uno/Mega)的其他Arduino板切换Nano,或者选择包含以太网的自定义板

    使用带有以太网屏蔽的另一个Arduino(Uno/Mega)作为附加板,通过串行或借助RF模块与Nano通信(我个人在过去实现了此选项)

    另一个不寻常的选择是使用音频线将Nano连接到您的Android智能手机并使用软调制解调器库(https://code.google.com/p/arms22/issues/detail?id=2),其中包含Android的实现并为Android编写应用程序

您提到的Web服务器仅按定义支持HTTP,因此如果您想通过TCP进行通信,则需要使用某些TCP服务器.

提供可视化传感器数据的图形的现有Web服务之一是https://xively.com/,它基于REST,它基于HTTP.但它不是唯一的.


@Miro如何使用不同的以太网自定义板来考虑您的选项2?能否请你推荐一些电路板.那之后我该怎么办呢?

2> 小智..:

简而言之:TCP是传输层协议,HTTP是通过TCP运行的应用层协议.

细节:要了解差异(以及许多其他网络主题),您需要了解分层网络模型的概念.从本质上讲,有不同的协议可以让计算机在不同的距离和不同的抽象层进行通话.

在网络堆栈的最底部是物理层.这是电信号或光脉冲或无线电波实际上从一个地方传送信息的地方.物理层实际上没有协议,而是具有电压,频率和其他物理属性的标准.您可以通过这种方式直接传输信息,但需要大量功率或专用线路,没有更高层,您将无法共享带宽.

下一层是链路层.该层涵盖与共享物理通信介质的设备的通信.在这里,诸如以太网,802.11a/b/g/n和令牌环之类的协议规定了如何处理对物理介质的多个并发访问以及如何将流量引导到一个设备而不是另一个设备.在典型的家庭网络中,这就是您的计算机与家庭"路由器"的对话方式.

第三层是网络层.在大多数情况下,这主要由互联网协议(IP)主导.这就是互联网的神奇之处,你可以在世界各地与计算机交谈,而无需知道它在哪里.路由器处理将您的流量从本地网络引导到另一台计算机所在的网络,其中自己的链路层处理将数据包发送到正确的计算机.

现在我们到了某个地方.我们可以与世界各地的计算机交谈,但该计算机正在运行许多不同的程序.它应该如何知道将哪一个发送给您?传输层通常使用端口号来处理这个问题.两种最流行的传输层协议是TCP和UDP.TCP做了很多有趣的事情来平滑网络层分组交换通信的粗糙点,如重新排序数据包,重传丢失的数据包等.UDP更不可靠,但开销更少.

所以我们已将浏览器连接到另一端的Web服务器软件,但服务器如何知道您想要的页面?你怎么发表问题或答案?这些是应用层协议处理的事情.对于Web流量,这是超文本传输​​协议(HTTP).有数千种应用层协议:用于电子邮件的SMTP,IMAP和POP3; XMPP,IRC,ICQ聊天; Telnet,SSH,RDP用于远程管理; 等等

这些是TCP/IP网络模型的五个层次,但它们实际上只是概念性的.OSI模型有7层.实际上,一些协议在各层之间进行填充,或者可以同时在多个层上工作.例如,TL​​S/SSL在网络和传输层之间提供加密和会话信息.在应用程序层之上,应用程序编程接口(API)管理与Quora,Twitter和Facebook等Web应用程序的通信.

来源:Quora:HTTP协议和TCP协议之间的区别.


来自https://www.quora.com/What-is-the-difference-between-HTTP-protocol-and-TCP-protocol的精美复制/粘贴
天哪,这个答案很神奇.只有到最后才发现他刚刚从Quora复制过来.虽然在这里仍然很棒.

3> codechimp..:

@Miro在技术讲话中很好地回答了这个问题,但对于关于网络主题的新手,我想提供一个不那么技术性的解释:

有人可能会将TCP或UDP视为US Postal Service的等效物,而HTTP则相当于一个商业信函模板.如果您正在写一个不知名的人,因为商务信函格式是传递您的信息的"WHO,HOW,WHAT,WHEN,AND WHERE"的一种好的,通用的方式,但它不是唯一允许的格式. USPS.也就是说,如果您正在写信给商业伙伴或亲人,您可以放弃手续,而是使用更有效的格式,如账单发票或情书或贺卡,但USPS,如TCP或UDP,将仍然在那里,来回携带信件.



4> 小智..:
IP与TCp与HTTP

可以将其IP视为一种高速公路,它允许其他协议继续前进并找到通往其他计算机的方式。TCP并且UDP是“车”在高速公路上,和他们携带的“负荷”是如协议HTTP,文件传输协议(FTP)等等。

IP 需要连接所有网络;

TCP 是一种机制,使我们可以安全地传输数据,并且

HTTP 它使用TCP传输数据,是Web服务器和客户端使用的特定协议。

推荐阅读
echo7111436
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有