温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

IM系统怎么调试TCP协议

发布时间:2021-07-12 17:01:36 来源:亿速云 阅读:156 作者:chen 栏目:大数据

这篇文章主要介绍“IM系统怎么调试TCP协议”,在日常操作中,相信很多人在IM系统怎么调试TCP协议问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”IM系统怎么调试TCP协议”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

IM系统怎么调试TCP协议

最近负责瓜子IM系统开发。客户端选用了微信开源的Mars库。定义通讯协议如下图。

IM系统怎么调试TCP协议

20字节的header,包括headLength包头长度,clientVersion客户端版本,cmdId命令Id号,seq消息序列号,bodyLength消息体长度;消息内容body长度由header中的bodyLength标识。

服务器(取名pigeon-gate)和客户端(Mars)程序雏形开发好之后,需要进行协议联调,怎么确定Mars收发消息的行为是否符合预期呢(预期是阅读Mars源代码分析出来的)?抓取TCP消息包!

工具wireshark,安装在IM服务器pigeon-gate 所在的机器,安装方式自己百度。

打开wireshark工具,在过滤器中输入"tcp and ip.addr == 192.168.13.1"  (该IP是手机IP地址 ),表示只显示来自192.168.13.1 IP地址的TCP数据。

IM系统怎么调试TCP协议

IM客户端,发送一条消息,工具抓取到若干TCP数据包,其中红框标记的数据是客户端发到服务器的消息数据(多试几次就知道有效的数据是哪一条了)。

点击数据看到该条TCP消息包内容如下图。

IM系统怎么调试TCP协议

蓝色背景(光标)的内容是客户端发到服务器端的内容(含header,body)。

非蓝色背景的内容可以简单理解为TCP协议的消息头(我们自定义的数据可以算作TCP协议的消息体)。

比如红色方框6个字节表示目的地(IM服务器)物理地址,测试服务器物理地址为 68-07-15-29-FE-3B;紫色方框表示消息来源(手机 )物理地址,其他内容可以查看TCP协议细节。

重点分析蓝色背景区域,消息前4个字节是消息头长度 headLength

headLength,4字节,TCP包内容为"00 00 00 14",将16进制转换为10进制为20。按照此方法得到

headLength = 20

clientVersion = 200

cmdId = 3

seq = 2

bodyLength = 36

根据收到的消息头判断Mars响应的这条消息符合预期。客户端向服务器端发送消息的协议正确,服务器进行相关处理。客户端向服务器端发送消息的协议联调通过。

消息体是明文展示的,可以看到chupengyu几个拼音字母。

到此,关于“IM系统怎么调试TCP协议”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

向AI问一下细节
推荐阅读:
  1. TCP与UDP协议
  2. TCP/IP协议

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI