1. 程式人生 > 其它 >學習筆記-61850 MMS報文解析1(轉載,感謝作者)

學習筆記-61850 MMS報文解析1(轉載,感謝作者)

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
來源:簡書
著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。