局域网下的两个 QQ 好友进行在线文件传输抓包

局域网下的两个 QQ 好友进行在线文件传输过程抓包


介绍

由于本人一个作业需要,想要验证内网情况下两个 QQ 好友的文件传输是通过局域网直接传输的。以下是本人的数据抓包结果,具体细节没有分析,先挖坑,后面有机会再补。

抓包过程主要说明了QQ对局域网下的两个客户端的在线文件传输采用的是直接进行局域网数据转发(采用的协议是TCP).

细节

首先,本人确保了好友与本人连接到了同一局域网下,然后在线传输了一个 243 MB 的文件。

  1. QQ 传输协议

1

  1. 开始传输文件,两客户端建立连接

2

  1. 文件传输数据包

3

  1. 文件传输结束

4

总结

之前写一个 P2P 聊天程序的时候了解过 NAT 穿透的知识,其中一个 NAT 穿透的场景是,两个节点处在同一个 NAT 下,则可以节点可以通过彼此 IP 直接与对方通信。至于怎么判断判断节点 NAT 类型,比较复杂,有相关论文分析。

平时使用 QQ 可以发现,局域网下的 QQ 好友之间进行在线文件传输, 传输速度可以达到 几十甚至上百 MB/s ,有些时候这个传输速度是大于上网拨号账号的带宽的,网速不可能长时间超过账号带宽的,从该点就可以猜测文件应该是通过局域网交换机直接传输的。

从抓包结果可以简单看出,QQ 软件在处理好友的在线文件传输时,直接让两个好友直接通过局域网建立 TCP 连接,进行 P2P 的文件传输。这样,文件传输的过程中主要就是传输文件的双方直接进行通信,不需要 QQ 服务器的参与。这样做的好处显然的可以降低 QQ 服务器的负担(毕竟每传输一个大文件都要占用服务器的网络I/O一段时间),其次能够使传输速度大大增加(文件传输过程的连接是在同一局域网下进行的,速率主要受交换机限制)。

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页