最近抓 QQ 和微信的包玩了玩,结合几个腾讯有关域名的解析结果和阿里云给的一点提示,有了一点脑洞。
基于抓包和他人的贴子,发现了这样一些问题:
- 有多个 IDC 为 QQ 和微信服务。我抓包时换用了国内不同地区的代理,发现肯定都会连接深圳和天津的 IP。
- 腾讯 QQ 桌面版可以手动选择登录服务器。这些登录服务器要么位于深圳,要么位于天津。( Windows 版 QQ 在输入 QQ 号登录的页面处,点击右上角的倒三角符号即可见到有关选项)。
- 深圳是腾讯老家。天津也肯定是腾讯重要的机房所在处。在一些媒体报道中(如天津港爆炸炸到了腾讯机房,可自行搜索)可见天津 IDC 对腾讯非常重要。腾讯云管天津机房叫北京,可能只是为了好卖一点。
- 腾讯在继自己深圳老家后,在天津又搞机房很可能主要是出于异地灾备之类的考虑。
- 除了深圳、天津、上海、北京外,QQ 和微信可能还有 CDN。这些 CDN 中,承载聊天内容(尤其是群聊天内容的图片)是通过 HTTPDNS 解析的、并且图片明文发送(详见 https://www.v2ex.com/t/362222 )。这些 CDN 服务器往往会比深圳、天津的数据中心相比更靠近用户所在地。
- 腾讯机房都有三组 IP。一组移动一组联通一组电信。长城什么的我没试过。尽管 IP 不同,但是机房都在一处。
- 有时还会有显示上海和北京的 IP。这两个地方出现概率也高。
- 微信基本同理。但可能没有上面说的 CDN。
- 尽管腾讯大量用 HTTPDNS,但还是有直接使用域名的。比如 i.gtimg.cn 等。这个域名可分区解析出不同地方的 IP。这应该就是腾讯用于 QQ 和微信的机房的所在地。基本跟大多数国内 CDN 的节点分布和密度无异。
- 使用中国之外所有其他国家的 IP 登录 QQ 和微信,或者使用任意外国的 DNS 解析 i.gtimg.cn 这个域名,都只能得到香港腾讯的 IP。
- 这些 IP 都位于 AS132203 下,这个 AS 是腾讯自己的。
- 尽管阿里云自己的文档里写的是不同地区内网不互通,但阿里云香港和深圳节点、青岛和美国西海岸节点内网是互通的。
- 深圳和香港自然不必说,肯定直接有光缆连接;青岛和美国西岸之间也有直接的光缆连接,而青岛是海底光缆入海的地方。
- 稍微查了下,各主要运营商都有一种服务,如果我没理解错的话是直接卖手里掌握的光缆的频段(?)本身而不是带宽。也就是说,可以直接租用某运营商的光缆,而不用走该运营商的路由。这叫 IPLC。
所以,腾讯的主要 IDC 在深圳和天津。深圳 IDC 有腾讯买的(甚至有可能是自己铺的)专线到香港。但为什么腾讯 QQ 和微信一切出国的数据都要经过香港呢?
- 深圳离香港不远,专线可及。
- 腾讯规模足够大,而像是 IPLC 这种很容易就能被人钻空子(毕竟 IPLC 没墙)的东西,在中国自然需要有腾讯这种体量的公司才能搞得到。可详见讨论阿里云内网互通的贴子。
- 国内惨不忍睹的国际出口质量势必会导致外国使用腾讯服务速度缓慢,有香港的 IDC,腾讯自然能极大地提升海外用户的体验。因为政策宽松,腾讯在香港可以搞自己的 AS,跟世界主要运营商互联。
所以,都是被国内的网络逼的。。曾经还好奇中国的国际出口带宽拥堵,在外华人怎么就不嫌堵呢。鹅厂和千万云这种看来都是留后手了的。
闷声大发财。