开始接触Kerio Winroute Firewall也是因为BT下载的原因,由于是内网用户,白天下载的速度最多不会超过10K,与我最初的期望相去甚远,终于到了无法忍耐的地步,也就有了对BitTorrent下载深入研究的兴趣。
首先说说我的网络拓扑,512K ADSL拨号Modem(电信所说的512K其实与我们理解的不一样,512K=512Kbps=512K bits/s=64K bytes/s,也即个人用户所能独享的最大下载带宽只有64K/s),代理服务器Windows 2000 Advanced Server+SP4,使用Kerio Winroute FireWall 6.0代理上网,没有安装第三方防火墙和杀毒软件。局域网内BT下载客户机为Win98。
如果你是外网用户,那么BT下载没有任何问题,基本上不需要做任何的配置就能达到理想的下载效果。怎样区别内网和外网,论坛上有很多类似的帖子,在这里我就不罗嗦了。
很多帖子都提到通过端口映射来提速,个人认为完全没有必要,对于内网用户来说是个误导。这是根据BitTorrent协议使用Sniffer分析数据包得出来的结论。
BT原理
与其他的P2P软件相比,BT有个独特的地方,它存在一个中间的WEB服务器,就是我们在发布时所填写的announce,该服务器提供了发布的统一管理。BT 打开一个 torrent文件后,先要你选择文件保存哪里。然后判断该文件不存在的话就建立新文件,存在的话就用 Sha1 校验码去校验文件---错误的就是还没下载的,这样就可以实现续传了。
现在知道要下载什么了,到哪里下载呢?这就要寻找有谁提供上传了,BT是通过WEB服务器来实现的,首先BT会通过分析 torrent 来得到发布网址,从而建立与服务端的连接。
l 外网环境下BT客户端与WEB服务器建立TCP连接的过程
Source Address 61.194.98.92 ADSL拨号软件从ISP处获得的外网地址
Destiation Address 222.141.64.184 WEB服务器地址
Source Port 2198
Destiation Port 8000
我们关注的是封装在TCP帧中的HTTP协议部分:
GET /announce?info_hash=%FE%237eND%ED%3B%08%0A%118TH%03%BE%FD%86%E5%D2&peer_id=exbc%005%E1%F3Q%5EQM%B9%FD%5D%0FJ%33C%7B%BD&port=16351&natmapped=1&localip=61.149.98.92&uploaded=68468736&downloaded=52133888&left=411632144&compact=1&no_peer_id=1&event=started HTTP/1.0
Host: btfans.3322.org:8000
btfans.3322.org:8000是发布服务器的地址
info_hash 是torrent文件中的 info 部分的Sha校验码,WEB通过它在发布列表找到对应的纪录
peer_id 是自身的标识,它是12个0和当前时间+全球的唯一标识码(GUID)的Sha校验的前八位,共20位
port 你提供上传的 port,亦即常说的监控端口,这里是16531
IP 你的ip地址,没有的话服务器会自己找到,由于是在外网环境,所以IP为ISP提供的地址61.149.98.92(问题的关键就在这里,如果你是内网用户,那么BitTorrent客户端在此填入的地址即为你的内部分配地址,比如10.10.10.x,这个地址当然是不可路由的,下面我会对内网环境下TCP建立过程作相应的比较)
uploadED downloadED 你上传和下载了多少,服务器可以用它来做流量分析
left 你还要下载多少个字节
event 状态,告诉服务器你是准备开始下载,还是停止,还是下载完成了
以上这个操作默认 5 分钟做一次,或由服务器设定
服务器中有个一个 track 程序来管理这些请求,得到这一串代码后就会用 info_hash 来查找列表,找到你就可以下载。接着它会反连(NatCheck)你的 IP 和 Port来判断你是内网用户还是公网用户(象10.10.10.x这样的地址,它是连不通的,这就是我说的为什么内网用户做不做端口映射其实无所谓)。接下来服务器返回现在正在下载这个文件的所有公网用户的IP和port
从上图可以看出服务端返回了一个公网用户的IP和Port列表
HTTP: 6: d10:done peersi34e8:intervali1800e13:num completedi287e9:num peersi59e5:peersld2:ip14:218.184.78.2317:peer id20:exbc
HTTP: porti6881eed2:ip14:218.81.227.1217:peer id20:exbc
HTTP: 7: 4:porti15949eed2:ip13:61.64.155.1647:peer id20:exbc
HTTP: 8: ? 4:porti10502eed2:ip14:219.197.64.2327:peer id20:exbc ┿ 欿
HTTP: ??:porti19856eed2:ip12:61.62.11.1557:peer id20:exbc 蘸鉐
HTTP: ?S_4:porti21213eed2:ip13:210.68.150.147:peer id20:exbc
HTTP: :@?:porti14373eed2:ip14:218.197.203.367:peer id20:exbc
HTTP: '拻\%_4:porti13425eed2:ip11:219.95.7.177:peer id20:exbc
HTTP: >-O+d4:porti14673eed2:ip12:81.156.58.177:peer id20:exbc
HTTP: 緗_ ?:porti15498eed2:ip14:218.79.175.1637:peer id20:exbc
HTTP: +t4:porti25868eed2:ip13:218.23.104.467:peer id20:exbc 蜹札
HTTP: 搷__K??:porti26102eed2:ip14:222.83.221.2547:peer id20:exbc
HTTP: {??華4:porti17104eed2:ip14:218.81.227.1217:peer id20:exbc
HTTP: 9: 4:porti15949eed2:ip12:218.80.9.2467:peer id20:exbc
HTTP: ?4:porti11458eed2:ip13:220.173.6.2407:peer id20:exbc
HTTP: U o4:porti9711eed2:ip15:219.148.178.2147:peer id20:exbc 镥
HTTP: _鞖g4:porti13128eed2:ip13:138.88.221.197:peer id20:exbc
HTTP: ?g?:porti15492eed2:ip11:219.95.7.177:peer id20:exbc
HTTP: _?:porti19753eed2:ip12:61.150.43.307:peer id20:exbc
HTTP:
象d10:done peersi34e8:intervali1800e13:num completedi287e9:num peersi59e5:peersld2:ip14:218.184.78.2317:peer id20:exbc
这里Tracker的回应信息以一种简单高效可扩展的格式(Bencoding,B编码格式)传送。
B编码的规则如下:
·字符串表示为前缀十进制的字符串长度加冒号再跟原字符串。
如4:spam就相当于'spam'。
·整型数据的表示是前面加'i'后面加'e'中间是十进制数,如i3e就相当于3,i-3e就是-3。整型数据没有长度限制。i-0e无效,所有以'i0'开头的除了代表0的i0e,其它都无效。
·列表编码为一个'l'开头,后面跟它所包含的项目(已经被编码过)最后加一个'e',比如 l4:spam4:eggse 就等于 ['spam', 'eggs'] 。
·字典编码为一个'd'开头,后面是关键值(key)及其对应值轮流出现,最后加一个'e'。
如:d3:cow3:moo4:spam4:eggse 相当于 {'cow': 'moo', 'spam': 'eggs'}
d4:spaml1:a1:bee 相当于 {'spam': ['a', 'b']}
关键值必须是处理过的字符串(用原始字符串编码的,而不是数字字母混合编码的)。
interval 1800 是告诉 BT 隔多少秒来查询一次seed和peer这里是 30 分钟,如果你是公网用户它会把你提交的 IP 和 Port 放到info_hash 对应的列表中,这样其它人就可以找到你。
同样我们可以注意到,公网用户的监听Port都是随机选择生成的,换句话来说,监听端口只是为了方便别人找到你。对于内网用户来说,即便你在网关上做了监听端口的映射,但是由于在与Tracer通讯的数据包中填入的是你的私有地址,Tracer就不会把你的IP和Port放入列表。因此你只能主动发起对列表中公网用户的连接,而没有远程端能找到你。
内网环境下客户端与服务端的TCP通信
前面说过,内网环境下,客户端与WEB服务器通信过程唯一不同的地方就在于填入的IP地址是本身的私有地址
GET /announce?info_hash=%FE%237eND%ED%3B%08%0A%118TH%03%BE%FD%86%E5%D2&peer_id=exbc%005%C8%8DqnvF%BFj%E4%12P%9E%D1%FC&port=15600&natmapped=1&localip=10.10.10.8&uploaded=299663360&downloaded=188547600&left=275317264&compact=1&no_peer_id=1&event=started
Host: btfans.3322.org:8000
综上所述,在内网环境下即便进行了端口映射,也因为Tracer不会把你提交的私有地址和端口放入info_hash列表中而导致没有远程端能主动发起与你监控端口的连接,所以下载的速度不会有根本的改善。除非你能强制客户端程序把你共享上网的IP提交给Tracer服务器作为你的绑定地址。
比特精灵就正好有此项功能,同时它还能提供所有Windows平台UPnP端口映射功能,包括Win98、Me、XP,但是2000并不支持UPNP,弥补这一缺陷的办法是在Windows 2000代理服务器上安装Winroute Firewall。不需要做任何的端口映射,启用它的UpnP即可。
接下来,在内网客户机安装BitSpirit,官方下载地址http://www.17yy.com/bs/
安装好以后会生成一个检测UpnP设备的程序,按提示一步步往下走即可,它会自动查找安装在代理服务器的WinRoute FireWall。
查找成功后会生成提示
最关键的一步:
选项->个人设置->高级,在“强制指定IP”一栏前打勾,填入代理服务器拨号上网后ISP分配的公网地址
这样设置就行了,让我们来做一下验证,查看BitSpirit的网络状态日志:
2004-06-22 20:06:11; 正在检查Torrent文件...;
2004-06-22 20:06:11; 从Tracker服务器获取种子信息 ...;
2004-06-2220:06:11;正在连接服务器:
http://btbtbt.vicp.net:8000/announce?info_hash=%c9%c7%af%3a%27%3bvN%3e%b0kK7%a1%ff%fc%16%2b%c7%cd&peer_id=%00%02BS%5f%da5%c0A%7d%5fVY%9e%8e%89b%9e%94O&port=20272&ip=61.149.98.129&uploaded=0&downloaded=0&left=614727680&event=started;
这样一来,Tracer就把你当成了公网用户,并把你的IP和Port放入hash_info列表当中,让其它的BT下载也能找到你,既有本地连接,又有远程端发起的主动连接,从而把内网下载速度提高到极限。
如图,平均下来也有60多K的下载速度,这已经是512K ADSL所能达到的极限下载速度了。
通过以上分析,希望你能对BitTorrent下载能有更深的认识,而不是在端口映射上做文章,那样治标不治本。让我们开始愉快的BT之旅吧!
,自由广告区 |
分类导航 |
邮件新闻资讯: IT业界 | 邮件服务器 | 邮件趣闻 | 移动电邮 电子邮箱 | 反垃圾邮件|邮件客户端|网络安全 行业数据 | 邮件人物 | 网站公告 | 行业法规 网络技术: 邮件原理 | 网络协议 | 网络管理 | 传输介质 线路接入 | 路由接口 | 邮件存储 | 华为3Com CISCO技术 | 网络与服务器硬件 操作系统: Windows 9X | Linux&Uinx | Windows NT Windows Vista | FreeBSD | 其它操作系统 邮件服务器: 程序与开发 | Exchange | Qmail | Postfix Sendmail | MDaemon | Domino | Foxmail KerioMail | JavaMail | Winwebmail |James Merak&VisNetic | CMailServer | WinMail 金笛邮件系统 | 其它 | 反垃圾邮件: 综述| 客户端反垃圾邮件|服务器端反垃圾邮件 邮件客户端软件: Outlook | Foxmail | DreamMail| KooMail The bat | 雷鸟 | Eudora |Becky! |Pegasus IncrediMail |其它 电子邮箱: 个人邮箱 | 企业邮箱 |Gmail 移动电子邮件:服务器 | 客户端 | 技术前沿 邮件网络安全: 软件漏洞 | 安全知识 | 病毒公告 |防火墙 攻防技术 | 病毒查杀| ISA | 数字签名 邮件营销: Email营销 | 网络营销 | 营销技巧 |营销案例 邮件人才:招聘 | 职场 | 培训 | 指南 | 职场 解决方案: 邮件系统|反垃圾邮件 |安全 |移动电邮 |招标 产品评测: 邮件系统 |反垃圾邮件 |邮箱 |安全 |客户端 |