QQ传输协议分析

一、 实验目的:

  在虚拟机下NAT模式下通过Wireshark抓包,分析QQ的传输模式。了解QQ在传输信息过程中用到的协议。分析在Nat模式下,信息传输的穿透性。

二、 实验环境:

  Win7 专业版32位(在虚拟机里面)。

  Win7 旗舰版64位(物理机)

  QQ版本:TM2013

  Wireshark

三、 实验内容:

1、 QQ登录

  1)、UDP登录

  在虚拟机的win7打开QQ面板,设置登录服务器的类型为UDP

  启动wireshark,然后开始登录QQ,登录成功等待一会儿停止wireshark的抓包。

  抓包如图:

  我们可以看到本地向远程登录服务器183.60.48.174发送了一个UDP的数据包,这个就是IP就是在刚才设置UDP登录时的系统默认IP,还可以看到这个IP返回了一个UDP的数据包。看来这两个包就应该是登录验证的包,接下来的几个包的服务器IP变成了183.60.48.165,由于这个IP和登录服务器的IP位于统一网段,因此我们可以猜测这个IP是腾讯用来存储我们发送的信息的服务器。需要注意的是,在多次实验下,可以发现服务器不止183.60.48.165这一个,这是因为想QQ这样的大吞吐量的信息交互,必须用多台服务器分流,所以这个IP并不一定是某一个。下面的一些包应该就是心跳包。那个OIQC协议就是QQ用的协议,其实实际上也是一个UDP包。下面的DNS协议就是因为我的QQ是在虚拟机里面登录的,在向外网交互信息的时候会通过网关192.168.214.2解析。

  我们来分析一下登录时候的UDP包

  从这个图我们可以得知源和目的的IP,mac地址,还有双方的端口号等等一些信息。

   数据链路层:

  目的MAC地址:00 50 56 e3 56 95

  本机MAC地址: 00 0c 29 ba 59 3c

  网络层:

  通过查询资料和分析我们知道:

  45:版本IPv4,首部长度20字节

  00:区分服务

  00-73:总长度175字节

  36-1e:标识

  00-00:标志和偏移

  80:生存时间128

  11:传输协议UDP(17)

  传输层:

  0f-a0:源端口4000

  1f-40:目的端口8000

  009b:长度155字节

  7f-c4:检验和

  QQ的数据

  通过查询资料和分析我们知道:

  02:QQ报文的开头 

  34-20:QQ客户端的版本号,实验所用版本为QQTM2013

  08-25:用户请求登陆的命令的序号 

  67-dc:发送数据的序号  

  56-a6-d2-5c:用户QQ号码,实验中为1453773404

  之后的内容为加密的数据内容 

  最后一个字节03:QQ报文的结尾

  2)、TCP登录

  设置如图:

  启动wireshark,然后开始登录QQ号码交易平台,登录成功等待一会儿停止wireshark的抓包。

  抓包如图:

  可以看到几个TCP的包还有一个SSL的包

  对TCP包分析如图:

  通过对UDP协议的分析,我们可以看到数据层和网络层的十六进制代码和之前的一模一样,这里我们就值分析传输层的TCP协议了,如图:

  通过查询资料和分析我们知道:

  C4-5e:源端口号50270

  01- bb:目的端口443

  45-34-fc-63:序号 

  00-00-00-00:确认号 

  80-02:数据偏移,标志 

  20-00:窗口大小8192字节 

  7f-3b:检验和 

  00-00:紧急指针  

  其余部分为可选字段和填充字节

  在TCP协议里面我们没有看到QQ的登录验证消息。为什么呢?一看这里还有一个SSL协议,QQ会不会是通过SSL验证的呢?

  SSL((Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层对网络连接进行加密。)

  那么我们来看看这个包:

  02:QQ报文的开头 

  34-20:QQ客户端的版本号,实验所用版本为QQTM2013

  08-25:用户请求登陆的命令的序号 

  67-dc:发送数据的序号  

  56-a6-d2-5c:用户QQ号码,实验中为1453773404

  之后的内容为加密的数据内容 

  最后一个字节03:QQ报文的结尾

  可见,这个包的信息和UDP登录时候的一样,那么TCP登录是确实使用了SSL。

2、 心跳消息数据包

  如图,通过IP地址查询,可以知道119.147.45.40是广东深圳的IP,而深圳是腾讯的老巢。在多次的抓包中也可以看到这个IP段,所以我们有理由相信,这个IP段是腾讯的。

  那么我们打开来看看。

  看到这里,确实有很熟悉哦。通过查阅资料和分析我们知道:

  通过查询资料和分析我们知道:

  02:QQ报文的开头 

  34-20:QQ客户端的版本号,实验所用版本为QQTM2013

  00-58:用户在线的命令序号 

  3b-09:发送数据的序号  

  56-a6-d2-5c:用户QQ号码,实验中为1453773404

  之后的内容为加密的数据内容 

  最后一个字节03:QQ报文的结尾

3、 收发信息数据包

  对方在线的时候

我们看看第一个包:

  可以看到蓝色字体那里的02是QQ报文的开头,这里需要注意的就是00-cd是客户端向服务器发送消息的命令序号,1b-db是发送数据序号,其他的都一样。通过几次实验发现,00-cd客户端向服务器发送消息的命令序号是固定的,而1b-db发送数据序号是会改变的。

而且没每送一个包,服务器是会回复一个包给客户端的。

四、实验总结:

  通过实验我还发现QQ貌似是会和每一个在线好友建立一个连接,因为当我登录只有一个好友的QQ时,wireshark抓到的包就几个,而登录有上百好友的QQ时,发现连接数也有数百个。

PS:这是去年10月份我们老师给我们讲网络协议时,自己做的一次对QQ协议的分析,当时自己对于协议也不是很明白,但是通过查阅资料,还是独立完成了这么一次分析,由于时间过得太久,当时查阅的资料早已忘记出处。真的很感谢网络上前辈们、朋友们的无私分享,我们今天才得以有那么多资料查阅,衷心感谢!还要感谢姚老师的指导。文中有错之处,还望批评指出,在此先谢过!

  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 安卓QQ是一款流行的聊天工具,它使用了TCP协议来进行数据传输。TCP(Transmission Control Protocol,传输控制协议)是一种可靠的、面向连接的协议,主要用于在网络上的两个应用程序之间提供可靠的数据传输。 安卓QQ使用TCP协议分析数据传输的过程如下: 首先,安卓QQ会将用户的消息进行封装和打包,形成一个数据包。这个数据包包含了消息内容、发送人和接收人的信息以及其他必要的控制信息。 然后,安卓QQ通过TCP协议建立与QQ服务器的连接。在连接建立之前,安卓QQ需要通过域名解析找到QQ服务器的IP地址,并通过互联网进行通信。 一旦连接建立,安卓QQ就可以通过TCP协议进行数据的发送和接收。数据包会被拆分成多个TCP报文段,并通过网络传输到目标地址。TCP协议会负责将这些报文段按序发送到目标地址,并确保数据的可靠性和完整性,即接收方收到的数据与发送方发送的数据完全一致。 在数据的传输过程中,安卓QQ可以通过TCP协议提供的流量控制、拥塞控制和错误恢复机制来优化数据传输的效率和稳定性。TCP协议还提供了一些必要的控制信息,如序号和确认号,用于保证数据的顺序和正确性。 最后,当数据到达目标地址后,安卓QQ会通过TCP协议进行接收和解析。接收方将接收到的TCP报文段重新组装成完整的数据包,并进行相应的处理,如消息的展示和响应等。 总而言之,安卓QQ通过TCP协议实现了数据的可靠传输和连接的建立,确保用户的聊天信息能够在网络上安全、稳定地传输。这种基于TCP协议的通信方式保证了用户与服务器之间的数据传输的可靠性、稳定性和实时性。 ### 回答2: 安卓qq使用TCP协议进行通信。TCP(传输控制协议)是一种面向连接的协议,它提供可靠的数据传输、流量控制和拥塞控制等功能。 安卓qq使用TCP协议与服务器建立连接,通过握手过程建立起传输通道。握手过程包括三次握手,即客户端向服务器发送连接请求,服务器回应确认连接请求,最后客户端再次回应确认连接。这样双方建立起连接后,就能够进行数据的传输。 在连接建立后,安卓qq利用TCP协议进行数据的可靠传输。TCP协议使用序列号和确认号来保证数据的顺序和完整性。发送数据时,将数据切分成多个小的数据包,并依次发送给对方,接收方通过确认号来确定是否接收到正确的数据。如果数据包丢失或损坏,接收方会要求重新发送,确保数据的准确传输。 此外,TCP协议还提供流量控制和拥塞控制功能。流量控制通过滑动窗口机制来限制发送方发送数据的速率,以避免接收方无法及时处理过多的数据。拥塞控制通过拥塞窗口大小的调整来控制数据的发送量,以防止网络的拥塞。 总之,安卓qq使用TCP协议进行通信,通过三次握手建立连接,使用序列号和确认号保证数据的可靠传输,同时通过流量控制和拥塞控制来优化数据的传输效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值