前两天对QQ文件中转站的技术实现作了下分析,文件中转站是个不错的应用,解决了大文件没法分享和传播的问题,增强了QQ邮箱的用户粘度。
文件中转站所使用的技术难点:
1 继点续传(上传)
2 文件分布式存储
本文主要分析了文件中转站客户端ActiveX与服务器之间交互,没有跟据这些结果对上述两点技术作针对性的技术方案详细分析。
抓包分析结果:
1 上传一个新文件时,POST接口通知服务器,请求地址为:http://58.251.149.28/cgi-bin/ftnCreateFile
POST数据包括文件的大小,MD5,SHA1等。
POST /cgi-bin/ftnCreatefile HTTP/1.1
Accept: */*
Content-Type: multipart/form-data; boundary=————TXFTNActiveX.Package.Partition.275578284.359338720.29995680
Content-Length: 1127
Cookie: CCSHOW=000010; edition=4m118.mail.qq.com; noteorg; wimrefreshrun; sid=8977b882c65f7fc697dc31e6a30f94d2; username=14163398; qqmail_alias=14163398@qq.com; exstype=2; UM5K=059a755e7fa89cf8eac60e0d7d32450d; adid=14163398; adSP=v0YYly/BmGMcygiVnkRE1L/vsCxVrg+OylOC0ZbjEiQ=_33328_326830_1238411380_; pvid=9280539596; flv=10.0; pt2gguin=o0014163398; ptcz=8c81fc150313a9eb979bec2af1601a11bb283dd8bfb472ae7f55a56e1d5c9f17; r_cookie=14163398; o_cookie=14163398; aduid=wpiHPYip; avid=hqIcoIIqZ/KiW4OgU4vIvy6Wd3IitIrqrVux6jjbL/NNkcYrVSW5BVz3Qd/Vkd59KnxZx74oxzc=; icache=E@EBGGML; FTN5K=7e0481fb; ispai2_14163398=2; uin_cookie=14163398; euin_cookie=AQAY5baRS1sRkKYRUoDYVi0M2Skw02VsnjR
AGAAAAABSFyeYqP7yMXzwgAZXneK+NmAJkA==; qqmail_sid=8977b882c65f7fc697dc31e6a30f94d2;
qqmail_username=14163398; qqmail_domain=http://m118.mail.qq.com
User-Agent: TXFTNActiveX
Host: m118.mail.qq.com
Connection: Keep-Alive
Cache-Control: no-cache
————–TXFTNActiveX.Package.Partition.275578284.359338720.29995680
Content-Disposition: form-data; name=”uin”
14163398
————–TXFTNActiveX.Package.Partition.275578284.359338720.29995680
Content-Disposition: form-data; name=”sid”
T4kNTFG1Zb1vJiZv
————–TXFTNActiveX.Package.Partition.275578284.359338720.29995680
Content-Disposition: form-data; name=”path”
D:\movie\….\disk2\VIDEO_TS\VTS_01_1.VOB
————–TXFTNActiveX.Package.Partition.275578284.359338720.29995680
Content-Disposition: form-data; name=”size”
738058240
————–TXFTNActiveX.Package.Partition.275578284.359338720.29995680
Content-Disposition: form-data; name=”md5″
b3df24288c259741302a34a4cacb2044
————–TXFTNActiveX.Package.Partition.275578284.359338720.29995680
Content-Disposition: form-data; name=”sha”
97448fa9da6dcd1bb4b5746e7907f21c4558689d
————–TXFTNActiveX.Package.Partition.275578284.359338720.29995680
Content-Disposition: form-data; name=”sha3″
1b91fcdb2167fef83f3bcddc01a179ef8cc0ee18
————–TXFTNActiveX.Package.Partition.275578284.359338720.29995680–
接口返回接收文件用的服务器 ip, port, 接收文件的服务器可以动态分配;文件相关的Key, FilePath, FilePath与文件直接关系,仅仅是一个ID, 文件通过 filepath来识别
HTTP/1.1 200 OK
Connection: close
Date: Wed, 01 Apr 2009 08:01:55 GMT
Content-Type: text/html
Transfer-Encoding: chunked
2c1
X-RetCode: 0
IP: 124.89.102.10
Port: 80
Key: 1ce616ca96cf45337573d78b2a6ab88961f5ac0abf3ff
2e0f118e1d7ecb131d8892c6d2f2d00f80e6c905cf1
88d8b0c08d74bc427aa1c5fe5fe467044f925de5b57bdc
3900d9dd1235786fe532ff57db53d75472035823f36a
2f68c05f11c050839377d57eae11c4da2f54889417f7de7f1
a3717bbbad6ecf7f82be2b81f2868c4b5bae536d3b
93388f3a6fa83f72e6456e3d727cf7dcb602de8f76add90
87d9169c4225a3690ed00cba6ad5c12dd31aa34bc06
78b3c78af003b2e08c414e9d97dd0ae862a00cf4dd55
25c3c39026f51e7518d579fde407368d0653aa2a22e36
a855f1e096743250f11113ee5376e825f6027d1383385b
caf535e994a803ed03c7e4d0bc770f281103bc3d371
65b571de40fe369d8c360807f7c4f7b03af3d9fc6918
9334a7e929efca9337f8b7397fd
FilePath: /42c8c27a-3930-4d7d-8cdb-4b9052b2e3ca
0
2 把文件分成128K一个包,每个包发一次POST请求,请求地址为:http://124.89.102.10/ftn_handler , HTTP/1.1
3 每次POST数据量为 131428 Byte,其中数据 1024*128 =131072Byte,剩余 356Byte为描述,用于指明当前这个包属于哪个用户,哪个文件等信息。
4 另一个线程,会POST到一个接口,把已上传的字节数汇总,请求地址为:http://58.251.149.28/cgi-bin/ftnUpileSize , HTTP/1.1。发送POST的频率不详。文件通过 filekey来识别。
POST /cgi-bin/ftnUpFileSize HTTP/1.1
Accept: */*
Content-Type: multipart/form-data; boundary=————TXFTNActiveX.Package.Partition.275578348.414808720.29995680
Content-Length: 648
Cookie: CCSHOW=000010; edition=4m118.mail.qq.com; noteorg; wimrefreshrun; sid=8977b882c65f7fc697dc31e6a30f94d2; username=14163398; qqmail_alias=14163398@qq.com; exstype=2; UM5K=059a755e7fa89cf8eac60e0d7d32450d; adid=14163398; adSP=v0YYly/BmGMcygiVnkRE1L/vsCxVrg+OylOC0ZbjEiQ=_33328_326830_1238411380_; pvid=9280539596; flv=10.0; pt2gguin=o0014163398; ptcz=8c81fc150313a9eb979bec2af1601a11bb283dd8bfb472ae7f55a56e1d5c9f17; r_cookie=14163398; o_cookie=14163398; aduid=wpiHPYip; avid=hqIcoIIqZ/KiW4OgU4vIvy6Wd3IitIrqrVux6jjbL/NNkcYrVSW5BVz3Qd/Vkd59KnxZx74oxzc=; icache=E@EBGGML; FTN5K=7e0481fb; ispai2_14163398=2; uin_cookie=14163398; euin_cookie=AQAY5baRS1sRkKYRUoDYVi0M2Skw02Vsnj
RAGAAAAABSFyeYqP7yMXzwgAZXneK+NmAJkA==;
qqmail_sid=8977b882c65f7fc697dc31e6a30f94d2;
qqmail_username=14163398; qqmail_domain=http://m118.mail.qq.com
User-Agent: TXFTNActiveX
Host: m118.mail.qq.com
Connection: Keep-Alive
Cache-Control: no-cache
————–TXFTNActiveX.Package.Partition.275578348.414808720.29995680
Content-Disposition: form-data; name=”uin”
14163398
————–TXFTNActiveX.Package.Partition.275578348.414808720.29995680
Content-Disposition: form-data; name=”sid”
T4kNTFG1Zb1vJiZv
————–TXFTNActiveX.Package.Partition.275578348.414808720.29995680
Content-Disposition: form-data; name=”filekey”
/42c8c27a-3930-4d7d-8cdb-4b9052b2e3ca
————–TXFTNActiveX.Package.Partition.275578348.414808720.29995680
Content-Disposition: form-data; name=”uploadsize”
1900544
————–TXFTNActiveX.Package.Partition.275578348.414808720.29995680–
盛 冬平 架构, 系统 QQ, 文件中转站
最近评论