MMS报文是在TCP报文基础上,共有TCP,TPKT,COPT,MMS ,本文主要对前三步骤解析。


 

 

  MMS报文.png


后台作为 61850 客户端, 装置作为 61850 服务器。
一)建立 TCP 连接(三次握手)


 

 

 image.png


1) 后台向装置请求请求建立 TCP 连接(SYN), 源端口 Src Port 为随机生成, 目标端口 Dst Port
固定为 102(装置方端口)。

2) 装置回复 ACK 确认, 同时也向后台请求建立 TCP 连接(SYN)。
3) 后台回复 ACK 确认。

二)TPKT协议:应用程数据传输协议,介于TCP和COTP协议之间。这是一个传输服务协议,主要用来在COTP和TCP之间建立桥梁。

TPKT的结构为:
0 (Unsigned integer, 1 byte): Version,版本信息。
1 (Unsigned integer, 1 byte): Reserved,保留(值为0×00)。
2-3 (Unsigned integer, 2 bytes): Length,TPKT、COTP、MMS三层协议的总长度,也就是TCP的payload的长度。(COTP中length不包括本身长度)

示例:

 

 image.png

版本号: 0x03
预留: 0x00
长度: 0x0016

三)COTP协议:COTP(ISO 8073/X.224 COTP Connection-Oriented Transport Protocol)是OSI 7层协议定义的位于TCP之上的协议。COTP以“Packet”为基本单位来传输数据,这样接收方会得到与发送方具有相同边界的数据。
COTP协议分为两种形态,分别是COTP连接包(COTP Connection Packet)和COTP功能包(COTP Fuction Packet)。
3.1 COTP连接包(COTP Connection Packet)也就是握手包,其格式如图所示。

 

 

image.png

COTP连接包的头结构为:
0 (Unsigned integer, 1 byte): Length,COTP后续数据的长度(注意:长度不包含length的长度),一般为17 bytes。
1 (Unsigned integer, 1 byte): PDU typ,类型有:

1: ED Expedited Data,加急数据
2: EA Expedited Data Acknowledgement,加急数据确认
4: UD,用户数据
5: RJ Reject,拒绝
6: AK Data Acknowledgement,数据确认
7: ER TPDU Error,TPDU错误
8: DR Disconnect Request,断开请求
0xC: DC Disconnect Confirm,断开确认
0xD: CC Connect Confirm,连接确认
0xE: CR Connect Request,连接请求
0xF: DT Data,数据传输

2~3 (Unsigned integer, 2 bytes): Destination reference.目标的引用,可以认为是用来唯一标识目标
4~5 (Unsigned integer, 2 bytes): Source reference.源的引用,同上
6 (1 byte): opt,其中包括Extended formats、No explicit flow control,值都是Boolean类型。前四位标识class,也就是标识类别,倒数第二位对应Extended formats,是否使用拓展样式,倒数第一位对应No explicit flow control,是否有明确的指定流控制。
7~? (length-7 bytes, 一般为11 bytes): Parameter,参数。一般参数包含Parameter code(Unsigned integer, 1 byte)、Parameter length(Unsigned integer, 1 byte)、Parameter data三部分。
code,1byte,标识类型,主要有:

0xc0,tpdu的size,tpdu即传送协议数据单元,也就是传输的数据的大小
0xc1,src-tsap,源的端到端传输。
0xc2,dst-tsap,目标的端到端传输。

Parameter length,长度
Parameter data数据。
示例:连接请求包,PDU类型为连接请求(0x0e),18字节

 

 image.png

长度: 0x1 1
PDU类型(CRConnect Request 连接请求) : 0x0E
目标引用: 0x0000
源引用: 0x0007
扩展格式/流控制: 0x00
参数代码SRC-TASP: 0xC1
参数长度: 0x02
SourceTSAP:0x0100
参数代码DST-TASP: 0xC2
参数长度: 0x02
DestinationTSAP:0x0102
参数代码TPDU-Size: 0xC0
参数长度: 0x01
TPDU大小: 0x0A

示例:连接确认包,PDU类型为连接确认(0x0d),18字节

 

 image.png

长度: 0x1 1
PDU类型(CCConnect Confirm 连接确认) : 0x0D
目标引用: 0x0007
源引用: 0x0003
扩展格式/流控制: 0x00
参数代码TPDU-Size: 0xC0
参数长度: 0x01
TPDU大小: 0x0A
参数代码SRC-TASP: 0xC1
参数长度: 0x02
SourceTSAP:0x0100
参数代码DST-TASP: 0xC2
参数长度: 0x02
DestinationTSAP:0x0102

3.2 COTP Fuction Packet

 

 image.png


COTPP功能包的头结构为:
0 (Unsigned integer, 1 byte): Length,COTP后续数据的长度(注意:长度不包含length的长度),一般为2 bytes。
1 (Unsigned integer, 1 byte): PDU type,类型有:

1: ED Expedited Data,加急数据
2: EA Expedited Data Acknowledgement,加急数据确认
4: UD,用户数据
5: RJ Reject,拒绝
6: AK Data Acknowledgement,数据确认
7: ER TPDU Error,TPDU错误
8: DR Disconnect Request,断开请求
0xC: DC Disconnect Confirm,断开确认
0xD: CC Connect Confirm,连接确认
0xE: CR Connect Request,连接请求
0xF: DT Data,数据传输

2 (1 byte): opt,其中包括Extended formats、No explicit flow control,值都是Boolean类型。
示例:数据传输包,PDU类型为数据传输(0x0f)

 

 image.png

长度: 0x02
PDU类型(DT Data,数据传输) : 0x0F
目标引用: 0x80

转载:
作者:松舍问霞
链接:https://www.jianshu.com/p/5482801e2dea
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
posted on 2022-04-20 10:07  品山1  阅读(3491)  评论(0编辑  收藏  举报