尊重原创 勿抄袭
勿私放其他平台
1、理论知识
2、协议封装
由于TCP协议需要各种校验、确认,涉及的知识点有点多,暂时图中以UDP协议为例,其实以太网的协议类似于俄罗斯套娃,从用户层的数据包,到传输层是加上了UDP在传输层的协议头:UDPhdr,然后网络层再在这个帧上加上了一个ip协议头:iphdr;而后到链路层,又加上了ether_hdr协议头,最终通过物理层将数据转化成电平或者光信号传递出去。
3、数据解析
-
TPKT(第五层:会话层)
-
该层总共占4个字节:
-
版本号:0x03
-
预留:0x00
-
长度:0x001F
-
COTP(第六层:表示层)
-
该层总共占3个字节:
-
长度:0x02
-
PDU类型(DT Data):0XF0
-
目标引用:0x80
-
S7Communication(第七层:应用层)
-
该层总用占24个字节,并且分两部分:
-
Header:
-
协议ID(Protocol ID):0x32
-
Ack_Data:0x01
-
预留:0x0000
-
协议数据单元引用:0x037D
-
参数长度:0x000E
-
数据长度:0x0000
-
Parameter:
-
功能码Read Var:0x04
-
通信项数:0x01
-
通信项1:
-
通信项Header
-
变量指定:0x12
-
地址长度:0x0A
-
SyntaxID:0x10
-
传输数据类型byte:0x02
-
通信项Param
-
读取长度:0x04
-
DB号:0x01
-
存储区类型DB存储区:0x84
-
开始字节:0x000000
-
TPKT(第五层:会话层)
-
该层总共占4个字节:
-
版本号:0x03
-
预留:0x00
-
长度:0x001D
-
COTP(第六层:表示层)
-
该层总共占3个字节:
-
长度:0x02
-
PDU类型(DT Data):0XF0
-
目标引用:0x80
-
S7Communication(第七层:应用层)
-
该层总用占22个字节,并且分两部分:
-
Header:
-
协议ID(Protocol ID):0x32
-
Ack_Data:0x03
-
预留:0x0000
-
协议数据单元引用:0x037D
-
参数长度:0x0002
-
数据长度:0x0008
-
错误等级:0x00
-
错误代码:0x00
-
Parameter:
-
功能码Read Var:0x04
-
通信项数:0x01
-
通信项1:
-
返回结果Success:0xFF
-
传输数据类型Byte/Word/DWord:0x04
-
长度:0x0020
-
数据:0x00000000
-
该返回报文说明读取的4个字节数值均为0
其实做工业协议的解析都是按照规则一步一步进行拆解。
下次讲解TCP协议栈的实现。
2022年1月
往期精选
1.Smart200&V90伺服系统:已更新15课
2.贝加莱直播课程:已更新16课
3.力控科技产品培训:已更新5课
6.专家课堂:已更新12课
原文始发于微信公众号(剑指工控):手把手教你手撸通讯协议(一) S7协议解析