找回密码
 注册
搜索
热搜: 超星 读书 找书
查看: 1928|回复: 0

[【网站推荐】] 如何提高ADSL速度

[复制链接]
huiggg 该用户已被删除
发表于 2005-10-15 21:42:28 | 显示全部楼层 |阅读模式
如何提高ADSL速度

DSL的设计思路就是上下行互不影响的,也就是说上下行可以同时达到满负荷。
  但是我们平时使用的时候可能经常会有这样的感觉:当自己满负荷上传的时候,下载达不到满负荷,反之也一样。这种现象的出现就是因为ACK没有优先权。
  我们先回顾一下TCP的传输原理:
  假设A要和B建立TCP的连接,过程如下:
  A首先向B发送syn信号,请求建立连接
  B答复A的syn请求,这种答复信号就是ACK
  A收到B的ACK信号,开始建立连接,传输数据
  如果A和B之间要建立双向的TCP连接,过程如下:
  A首先向B发送syn信号,请求建立连接
  B答复A的syn请求,这是B发送的ACK信号;同时B向A发送syn请求,并等待A的ACK信号
  A收到B的ACK信号,建立A到B的连接;同时答复A发过来的syn信号,也就是A发送了ACK给B
  B接受到A的ACK信号,建立B到A的连接
  这样就经过了一个三次握手过程,经过两两确认,建立了双向的TCP连接。
  不管是单向还是双向的TCP连接,数据传输开始后,每次传输的数据都带有一个syn值,这个syn值是在建立连接的syn值上递增的,在传输下一个数据之前,必须要接收到对方的ACK值,这个ACK值是自己刚才发送的(syn值+1)。因为只有接收到对方的ACK值,才意味着对方已经收到了我发送的syn值的数据,才能接下来发送值为(syn+1)的数据,这样就保证了TCP传输的可靠性。
通过上面的回顾,我们来分析单向传输的情况:
  假设B是FTP server,A是FTP client,A从B上面下载数据。连接建立以后,B向A每次发送数据之前都需要接收A给B的ACK信号,因为这时候绝大部分数据都是B到A的,A到B基本没有数据在传输,所以A到B的ACK信号没有受到任何影响,可以顺利发送,这种情况下,传输可以达到A和B之间的较小带宽的满负荷值。
  接下来我们看看A和B之间双向传输的情况:
  仍然假设B是FTP server,A是FTP client,但是A从B上面下载数据的同时还上传数据到B或其他的FTP SERVER。这种情况下,B向A发送数据时需要等待A发送给B的ACK信号,A向B(或其他机器)发送数据时需要等待B(或其他机器)的ACK信号。不幸的是,A的发送和接收两个方向的信道都有数据在传输,如果ACK同时也传输,那就必然会受到正常传输的数据的影响,需要排队,而发送方因为TCP的设计是必须要收到ACK后才发送下一数据段,这样就导致了双向传输时跑不到理论值的最大带宽。
  要解决这个问题很简单,只要采取某种机制保证数据和ACK信号同时传输的时候ACK信号可以优先传输就行了,这种做法就是QOS(质量服务)的一个方面。
  接下来再分析PPPOE的DSL的情况:
  QOS建立在pppoe的节点。pppoe的节点有哪些呢?首先是操作系统拨号。在Windows系统中,Windows XP以前的系统并自带pppoe支持,需要安装第三方的拨号软件,我试过的软件中RASPPPOE0.98是支持QOS,0.98以前的版本不支持。
  在Windows XP和Windows 2003中系统自带了pppoe的支持,通过系统自带的pppoe拨号建立的dsl连接,默认的时候是支持QOS的。(这个选项一度被人误导说要占用额外的带宽,建议大家不要勾选,真是害人不浅)
  在linux和类linux系统中,可以通过IPFW+DUMMYNET或者PF+ALTQ来实现QOS
  可是对于现在的很多DSL用户,并不是采用操作系统来拨号的,比如用宽带路由器。遗憾的是目前市面上各种各样的几百块钱的DSL router,各种WIFI+router的产品,都不支持ACK优先,当然,如果使用cisco的路由器(比如1700,2600)+DSL模块,是毫无疑问可以配置QOS保证ACK优先的。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|网上读书园地

GMT+8, 2024-11-8 18:42 , Processed in 0.115646 second(s), 7 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表