TCP (Transmission Control Protocol) 和 UDP(User Datagram Protocol) 协议属于传输层协议。其中 TCP 提供 IP 环境下的数据可靠传输,它提供的服务包括数据流传送、可靠性、有效流控、全双工操作和多路复 用。通过面向连接、端到端和可靠的数据包发送。通俗说,它是事先为所发送的数据开辟出连接好的通道,然后再进行数据发送;而 UDP 则不为 IP 提供可靠性、 流控或差错恢复功能。一般来说,TCP 对应的是可靠性要求高的应用,而 UDP 对应的则是可靠性要求低、传输经济的应用。
本文主要讲述的是 TCP 传输协议的定制。
二、使用环境
方案:G9 OTA 升级方案
三、TCP 报文格式
TCP 的可靠体现在 TCP 在传递数据之前,会有三次握手来建立连接,而且在数据传递时,有确认、窗口、重传、拥塞控制机制,在数据传完后,还会断开连接用来节约系统资源,以下是 TCP 报文格式,我们定制协议主要是针对可选项子段。
四、握手包
以下是定制的握手包格式。
五、数据包
以下是定制的数据包格式。
六、应答包
以下是定制的应答包格式。
七、结束包
以下是定制的结束包格式。
八、帧头和指令类型说明
对于帧头和指令类型,按照如下定制。
帧头 |
0xAC,0xDF |
指令类型 |
0x23,0x84(命令) |
0x84,0x23(bin 文件大小) | |
0x21,0x35(应答) | |
0x53,0x01(Over) |
九、具体帧格式流程说明
以下是具体帧格式流程说明。
握手包 1 |
0xAC 0xDF 0x23 0x84 0x01 |
G9:请求发送版本号 |
握手包 1 |
0xAC 0xDF 0x23 0x84 版本号 |
server:发送版本号给 G9 |
握手包 2 |
0xAC 0xDF 0x23 0x84 0x02 |
G9:请求发送固件 |
握手包 2 |
0xAC 0xDF 0x84 0x23 Len Len Len |
server:发送固件 G9 大小 |
数据包 1 |
…… |
固件包 1 |
…… |
…… |
固件包 …… |
数据包 N |
…… |
固件包 N |
应答包 1 |
0xAC 0xDF 0x21 0x35 0x01 |
G9:发送固件接收完毕信号 |
应答包 1 |
0xAC 0xDF 0x21 0x35 0x01 MD5 MD5 |
server:发送 MD5 校验码给 G9 |
应答包 2 |
0xAC 0xDF 0x21 0x35 0x02 |
G9:发送 MD5 校验是否成功给 server |
应答包 2 |
0xAC 0xDF 0x21 0x35 0x02 0x01 |
server:发送接收 MD5 校验成功给 G9 |
结束包 1 |
0xAC 0xDF 0x53 0x01 0xAA 0xBB 0xCC |
G9:发送结束包给 server |
结束包 1 |
0xAC 0xDF 0x53 0x01 0xAA 0xBB 0xCC |
server:发送 结束包给 G9 |
十、参考文档
链接1:https://zhuanlan.zhihu.com/p/82740675
链接2:(43条消息) windows、虚拟机下的ubuntu、开发板即能ping通,又能上网的设置方法_@ping的博客-CSDN博客
十一、总结
此 TCP 传输协议适用于 G9 OTA 升级方案。
接下来将持续更新 G9 OTA 升级方案系列,感兴趣的关注或评论区留言吧。
评论