基于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编写,尚未实验成功。
这是我对于硬件连接云平台的学习心得,希望大家能够指出我有错误的地方。
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编写,尚未实验成功。
这是我对于硬件连接云平台的学习心得,希望大家能够指出我有错误的地方。
相关文章推荐
- JAVA_WEB 使用TCP/IP Monitor监测HTTP协议传输的数据
- 使用Java的TCP/Ip创建本地测试连接
- libcurl网络连接使用tcp/ip
- 【tcp-ip学习总结】基于udp的多人聊天室,带有登录注册功能
- libcurl网络连接使用tcp/ip
- TCP/IP 协议卷1个人总结
- 在Ubuntu QML应用中使用WebSocket建立TCP/IP连接
- 写基于TCP/IP多线程的是抛出Socket连接异常
- 【tcp-ip学习总结】使用tcp协议实现简单的通信小程序
- TCP/IP (五) TCP连接的内存使用
- 尝试通过使用 TCP/IP 套接字连接到群集中的 SQL Server 命名实例时收到“SQL Server does not exist or access denied”(SQL Server 不存在,或者访问被拒绝)错误消息
- 到主机 的 TCP/IP 连接失败 (SQL2000数据库,使用的jar包是sqljdbc.jar->sql2005的包)
- 转一个文章:一直在使用的协议但是有些糊涂的(TCP/IP,http,socket,长连接,短连接)
- TCP/IP--------HTTP协议详解,长连接 ,短连接
- 使用Net类库,实现的基于TCP/IP简单的通讯框架框架(一)
- 使用jdbc连接数据库出现“到主机的TCP/ip连接失败”的解决办法
- sqlserver 2005没有1433端口|无法启动当使用tcp/ip连接时
- 使用ZLG TCP/IP建立多个UDP连接的注意事项
- TCP/IP基于数据报,而不是面向连接,优点何在?
- C#如何使用GetTcpTable API获取TCP/IP连接信息