您的位置:首页 > 理论基础 > 计算机网络

基于STM32使用TCP/IP,HTTP协议连接云服务器个人总结

2018-03-19 20:27 489 查看
对于如何将底层测量数据上传到云服务器这个问题我进行了许多尝试,都以失败告终。这让我不得不仔细去了解TCP/IP协议。

OSI是网络编程的经典模型,将构成网络的程序分成了7个层面。TCP/IP是第三层与第四层。
第一层,物理层:例如我要使用STM32驱动ESP8266连接路由器然后路由器连外网,那么ESP8266的驱动代码就是物理层的程序。(一般ESP8266使用的是AT指令,使用的时候只是驱动串口发送消息给ESP8266,物理层代码以固件的形式烧录在8266芯片内)

第二层,数据链路层:具体的例子为PPP协议,作用范围为局域网。该层代码可以在不同的硬件设备上移植,不像物理层受限于某一芯片。数据链路层的作用是:当多个设备连接同一台路由器,外网发送给这些设备的数据都由一台路由器接收,然后这台路由器通过数据链路层的协议(例如PPP协议)将数据分别发送到各个设备上,建立起局域网内的数据链路。

第三层,网络层:最常见的网络层程序就是IP协议了。进入了网络层,消息就会在成百上千台计算机中传递,为了使消息能够快速准确的传达目的地,IP协议就诞生了(最初的IP协议和TCP协议是在一起的一个协议,后来才分成两个)。它给每个主机都分配一个唯一的IP,并且增加了寻址与建立连接的功能。

第四层,传输层:传输层协议中就有我使用的TCP协议。当两台计算机成功的通过IP协议建立连接之后,为了保证数据传输的准确性(因为数据分片重组时,硬件接收出错等各种情况可能导致数据接收错误),安全性,人们会使用传输层协议对传输数据进行打包,协议会自动对数据的正确性进行校验。(当然也有追求速度,求快不求准的传输层协议,这类协议往往不校验)

第五层至第七层,应用层:程序员们在接收到数据后使用各种各样的软件算法完成各自的需求。对于使用STM32连接外网这个任务而言,这里可以不必过多关注。我选择了新浪云服务器,它使用URL接口,那么我就用HTTP协议对他对发起数据传输请求。

网络协议分层是非常有必要的,这既方便了人们移植使用有不同优点的协议,也为日后优化改善网络协议提供了便利。
当底层测量到数据时,首先通过STM32读取,然后通过机械层发送到ESP8266上,然后8266会使用第二层,第三层,第四层协议(8266使用TCP协议发送)将数据打包发送到路由器,路由器的接收硬件接收到8266的消息,消息通过路由器的第一层第二层第三层第四层协议进入HTTP协议,然后对URL进行域名解析,寻址,握手,传输数据。

现阶段我正在补习云服务器端的PHP编写,尚未实验成功。
这是我对于硬件连接云平台的学习心得,希望大家能够指出我有错误的地方。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  STM32 TCP