Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2033977
  • 博文数量: 369
  • 博客积分: 10093
  • 博客等级: 上将
  • 技术积分: 4271
  • 用 户 组: 普通用户
  • 注册时间: 2005-03-21 00:59
文章分类

全部博文(369)

文章存档

2013年(1)

2011年(2)

2010年(10)

2009年(16)

2008年(33)

2007年(146)

2006年(160)

2005年(1)

分类: 系统运维

2006-05-29 16:53:21

前段时间写过一篇《闲谈文件传输》,里面谈到多线程下载的有效性问题。近日,因为比较关注TCP协议在广域网中的表现,所以感觉以前的讨论不够全面,本文重新探讨多线程下载在广域网中的有效性问题。
我这里所谈及的广域网是具有大带宽,长延时的网络环境,专业术语为Long Fat pipe Network,简写为LFN。比较典型的例子为卫星链路。因为TCP协议是面相连接的,提供可靠服务的传输层协议,所以发送方必须等到它所发送的数据得 到确认后,才能将本地的缓存里面的数据丢弃,不然就有可能造成数据的丢失。
为了简单,不考虑网络中可能发生的拥塞,即差错率为0%。发送端为了确保链路的可靠性,不得不在每次将数据包送出后,等待此数据包的回应,在此时间段内链 路基本处于空闲,整体的效率也就很低了。为了充分利用现有的网络带宽,就必须使等待的时间降为0,这就需要加大发送窗口,到底需要多大的发送窗口呢?
理想窗口大小 = 带宽 × 延时
带宽利用率 = 窗口大小 / (带宽 × 延时)
可见在带宽未达到饱和的情况下,带宽利用率和窗口大小是成正比关系的。可实际的情况呢?
考虑带宽为2Mbps,延时为500ms的情况,理想的发送端口大小最小为:128K bytes,实际上在TCP协议的实现过程中多选择的窗口大小为64K bytes,实际的带宽利用率也就只有50%了。
作为下载方,我们对于发送方的窗口大小没办法做优化,但是我们可以通过增加下载线程数来变相增加发送方的窗口大小,进而获得更高的传输速率。在上面的理想情况下,我们只需要开两个线程,就能动力十足了。实际情况,所需线程数可能略有增加,但整体偏差不会差得太多。
可见,多线程下载,在广域网中还有变相加大发送方发送窗口大小的作用,那么它能加速文件传输的秘密也就不是什么秘密了。
阅读(1483) | 评论(0) | 转发(0) |
0

上一篇:无题

下一篇:解脱了!

给主人留下些什么吧!~~