ES-TCPTransport 3 - ES通信协议解析

1.wireshark提取数据elasticsearch协议包

设置抓取本机通信包:

  • a.以管理员身份打开命令提示符
  • b.输入 route add [本机ip] mask 255.255.255.255 [网关ip]
  • c.将我们程序里面的localhost或者127.0.0.1替换成本机ip

提取数据包信息:

使用程序发送es协议进行通信

  • a.打开抓取整个系统包:


  • b.过滤获取elasticsearch协议
  • c.通过程序进行es协议通讯获取es报文


  • d.提取整理es报文信息


注意:ES协议会议ES开头,ES是之前都是tcp/ip协议,ES(4553)开头才是应用层协议

提取整理后如上4个报文包的16进制结果如下:

handshake-request(原包-9704):

0000   3c 8c 40 5e c6 c2 48 0f cf 45 47 aa 08 00 45 00
0010   00 55 5c b6 40 00 80 06 00 00 0a 64 21 9b 0a 64
0020   21 9b e2 dd 24 54 ca 23 d3 03 c0 82 f6 ae 50 18
0030   40 29 58 45 00 00 [45 53 00 00 00 27 00 00 00 00
0040   00 00 00 01 08 00 4c 4b a3 00 00 16 69 6e 74 65
0050   72 6e 61 6c 3a 74 63 70 2f 68 61 6e 64 73 68 61
0060   6b 65 00]

提取整理

0030   40 29 58 45 00 00 [45 53 00 00 00 27 00 00 00 00
0040   00 00 00 01 08 00 4c 4b a3 00 00 16 69 6e 74 65
0050   72 6e 61 6c 3a 74 63 70 2f 68 61 6e 64 73 68 61
0060   6b 65 00]

handshake-response(原包-9706):

0000   3c 8c 40 5e c6 c2 48 0f cf 45 47 aa 08 00 45 00
0010   00 41 5c b7 40 00 80 06 00 00 0a 64 21 9b 0a 64
0020   21 9b 24 54 e2 dd c0 82 f6 ae ca 23 d3 30 50 18
0030   01 00 58 31 00 00 [45 53 00 00 00 13 00 00 00 00
0040   00 00 00 01 09 00 4c 4b a3 00 00 81 9b ee 02]

提取整理

0030   01 00 58 31 00 00 [45 53 00 00 00 13 00 00 00 00
0040   00 00 00 01 09 00 4c 4b a3 00 00 81 9b ee 02]

自定义-UserRequest(原包-9708):

0000   3c 8c 40 5e c6 c2 48 0f cf 45 47 aa 08 00 45 00
0010   00 58 0b 9a 40 00 80 06 00 00 0a 64 21 9b 0a 64
0020   21 9b c4 08 24 54 7a d4 2d d6 bd 49 49 a6 50 18
0030   40 29 58 48 00 00 [45 53 00 00 00 2a 00 00 00 00
0040   00 00 00 2a 00 00 5b 8d 81 00 00 08 61 63 74 69
0050   6f  6e 5f  31 00 00 00 01 00 00 00 06 e7 8e 8b e4
0060   ba 94 00 00 00 17]

提取整理:

0030   40 29 58 48 00 00 [45 53 00 00 00 2a 00 00 00 00
0040   00 00 00 2a 00 00 5b 8d 81 00 00 08 61 63 74 69
0050   6f 6e 5f 31 00 00 00 01 00 00 00 06 e7 8e 8b e4
0060   ba 94 00 00 00 17]

自定义-UserResponse(原包-9710):

0000   3c 8c 40 5e c6 c2 48 0f cf 45 47 aa 08 00 45 00
0010   00 48 0b 9b 40 00 80 06 00 00 0a 64 21 9b 0a 64
0020   21 9b 24 54 c4 08 bd 49 49 a6 7a d4 2e 06 50 18
0030   01 00 58 38 00 00 [45 53 00 00 00 1a 00 00 00 00
0040   00 00 00 2a 01 00 5b 8d 81 00 00 00 00 00 03 06
0050   31 39 39 39 39 39]

提取整理:

0030   01 00 58 38 00 00 [45 53 00 00 00 1a 00 00 00 00
0040   00 00 00 2a 01 00 5b 8d 81 00 00 00 00 00 03 06
0050   31 39 39 39 39 39]

2.分析ES协议包

ES协议格式如下:

以handshake协议为例通过源码分析:

handshake的通信开始于TcpTransport.connectNode的方法,调用层次如下:

TcpTransport.connectNode()
    -openConnection()
        -executeHandshake() 
            -sendRequestToChannel() //发送请求
                -buildMessage() //根据请求(request)构建ES协议

由buildMessage代码片段可知ES协议传输有header和messageBody两部分构成:

header构建代码如下:

以handshake协议为例通过字节码分析:

提取整理handshake-request:

0030   40 29 58 45 00 00 [45 53 00 00 00 27 00 00 00 00
0040   00 00 00 01 08 00 4c 4b a3 00 00 16 69 6e 74 65
0050   72 6e 61 6c 3a 74 63 70 2f 68 61 6e 64 73 68 61
0060   6b 65 00]

ES协议标记(2):45 53 = (ES)
报文长度(4):00 00 00 27 = (39)
requsteId(8):00 00 00 00 00 00 00 01 = 1
status(1):08 = 握手请求
注意:状态1=请求,2=异常,4=压缩,8=握手

version(4):00 4c 4b a3 = 5000099 = 5.0.0版本
messageBody:00 00 16 69 6e 74 65 72 6e 61 6c 3a 74 63 70 2f 68 61 6e 64 73 68 61 6b 65 00 = internal:tcp/handshake(可通过转码工具转换获取16进制结果)

附录:

使用程序地址:http://git.oschina.net/walleipt/es-cluster/blob/master/src/main/java/com/waleipt/api/es/tcptransport/Custom_protocol_test.java?dir=0&filepath=src%2Fmain%2Fjava%2Fcom%2Fwaleipt%2Fapi%2Fes%2Ftcptransport%2FCustom_protocol_test.java&oid=0226388674e92713b36d07b460a4f00d1936658d&sha=dab1c380bea009dcbed74985e6718226889253ee
wireshake样本文件:https://pan.baidu.com/s/1dF6DvW1
转码工具:http://www.bejson.com/convert/ox2str/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 11,242评论 6 13
  • 1.这篇文章不是本人原创的,只是个人为了对这部分知识做一个整理和系统的输出而编辑成的,在此郑重地向本文所引用文章的...
    SOMCENT阅读 13,146评论 6 174
  • 名词延伸 通俗的说,域名就相当于一个家庭的门牌号码,别人通过这个号码可以很容易的找到你。如果把IP地址比作一间房子...
    杨大虾阅读 20,655评论 2 56
  • 个人认为,Goodboy1881先生的TCP /IP 协议详解学习博客系列博客是一部非常精彩的学习笔记,这虽然只是...
    贰零壹柒_fc10阅读 5,102评论 0 8
  • 0 01、网络管理的五大功能(包括每项功能的具体情况) 1.配置管理:ISO定义的管理功能域中,配置管理包括视图管...
    哈熝少主阅读 3,377评论 1 20