通信协议

       最近学习了通信协议方面的知识,可谓收获很多。总结一句话:无协议不通信,可想定义协议是多么重要的一件事啊。协议有很多种,例如TCP/IP,UDP,ARP,OICQ,HTTP等等。

       对于协议的学习,有一个很有趣的软件wireshare(免费),一个很实用的抓包工具。出于好奇,就抓了几个QQ通信的包。有图有真相啊,QQ发消息用的是UDP通信啊

 

       图中还可以看出每发出一个消息,qq服务器都会返回一个73字节固定长度的信息,不信你可以试一下。想想就可以知道为什么了,由于UDP通信不可靠但传输速度快啊,所以QQ用了UDP,为了确保可靠性,返回一个消息通知发送成功。有的时候我们给好友发了一个消息,我们发现即使说发送失败,好友也收到了。这是因为你发完之后手机网断了,这时候你得不到通知成功信息就会给你说发送失败,但其实好友已经收到了。还有就是消息包最大长度为889个字节,当消息很长时就会分包发送,下图是我发了很长的句子出来的结果,当然消息过长也不行。
通信协议_第1张图片
        下面就来分析下数据包具体的内容
通信协议_第2张图片
 开头部分如上图为自己电脑和服务器的网卡地址



 第二部分IP协议45代表IP的version为4,IP协议长度为20个字节,00代表优先级,00bb代表数据包所有数据的字节长度,04f4为代表身份证明(随机的),0000为IP协议摘要,40代表IP数据包的生存时间,11表明下面的字段由UDP控制,后面的就是自己电脑和服务器的IP地址。
通信协议_第3张图片
 第三部分就是UDP协议段,前面ofa0是自己电脑发消息的端口号,1f40是服务器接消息的端口号,00a7代表UDP协议段及下面数据包的总字节长度,a0e3是UDP校验总和


通信协议_第4张图片
      最后一部分就是加密后的信息了,经过观察02 35 1d 03一直是不变的应该代表版本,24 a8 03 79 也是不变的直到我换了个QQ号,应该代表QQ号了,其他的就是加密后信息了

以上就是我对整个qq消息包的分析了,对wireshare熟悉之后还能做很多事,例如可以发现浏览器访问网址用的是HTTP协议,而且发送一个Http请求会建立很多个TCP连接,这些我就简单测试了下,就不多说了。鄙人不才,对那个软件还不是怎么熟悉,继续学习。 

你可能感兴趣的:(协议)