1.dubbo頭部協(xié)議
1.1.協(xié)議圖
1.2.協(xié)議說明
- 1.2.1 描述:
dubbo的協(xié)議頭部是16字節(jié)的定長數(shù)據(jù) -
1.2.2 wireshark抓包:1.png
2字節(jié)的Magic 【da bb】 其實就是標志改協(xié)議就是dubbo協(xié)議
1個字節(jié)的消息標志位【c2】其二進制的表示 1100 0010 從左到右解釋如下
2.1 左1位 表示請求/響應(yīng) 1/0
2.2 左2位 表示雙向/單向 1/0 (意思就是請求是否需要返回值,有些請求是不需返回值)
2.3 左3位 表示心跳/正常 1/0
2.4 左4~8位 0 0010 表示使用的是Hessian2序列化協(xié)議 dubbo序列化0 0001、fastjson序列化0 0110、java序列化0 0011-
1個字節(jié)的消息標志位【00】只有響應(yīng)的消息才會設(shè)置這個值,20表示響應(yīng)成功 下圖是響應(yīng)數(shù)據(jù)抓包2.png
-
8個字節(jié)的消息ID3.png
4個字節(jié)的數(shù)據(jù)長度【00 00 01 9e】= 414
剩下的【05 32 2e....一直到最后】都是實際序列化的內(nèi)容。
2.dubbo 包體協(xié)議
2.1.協(xié)議說明
-
【05 32 2e 35 2e 32】【05】 表示【32 2e 35 2e 32】<<==>>[2.5.2] 的長度為5 (dubbo版本)4.png
-
【05 32 2e 35 2e 32】【05】 表示【32 2e 35 2e 32】<<==>>[2.5.2] 的長度為5 (dubbo版本)
-
【30 3c ...63 65】【30】 表示標志位 【3c】表示 【63 6f ... 65】<<==>>[com.xxx.xxx.xxx.api.xxx.service.XXXService] 的長度60 (類路徑)
5.png
-
-
【05 30 2e 30 2e 30】【05】 表示【30 2e 30 2e 30】<<==>>[0.0.0] 的長度為5 (協(xié)議版本)
6.png
-
-
【0f 63 68 .. 65 77】【0f】 表示【30 63 68 .. 65 77】<<==>>[checkXXXNew] 的長度為15 (類方法名稱)
7.png
-
-
【30 22 4c...67 3b】【30】 表示標志位 【22】表示 【4c...67 3b】<<==>>[Ljava/lang/Long;Ljava/lang/String;] 的長度34 (參數(shù)類型)
8.png
-
-
【59 01 ae 6c d7】【59】 表示實際是long類型但是用int表示第一位參數(shù) 【01 ae 6c d7】<<==>>[28208343] (參數(shù)值)
9.png
-
-
【10 73 ... 64 64】【10】 表示 【73 ... 64 64】<<==>>[stock.income.add] 的長度16 (參數(shù)值)
10.png
-
-
【48 04 ... 30 50】【48】 表示 map 屬性 (參數(shù)值)
11.png
12.png
-











