[这个贴子最后由bgzmy在 2005/03/16 09:54am 第 1 次编辑]
来源:http://bbs.sz.js.cn/Dispbbs.asp?boardid=10&star=1&replyid=292688&id=12885&skin=0&page=1
swan:
很早就发现发现上下载原来是可以做到不影响的,到现在才明白其中奥妙。
主要是ACK指令的优先发送。
普通pppoe的拨号链接,由于没有高级流量控制,上行满负载就会导致ACK的传输受到影响最终影响了下行。如果有高级流量控制,优先让ACK通过,则不会使上下行因为另一个满负荷而受影响。
要解决这个问题需要采取某种机制保证数据和ack信号同时传输的时候ACK信号可以优先传输就行了,这种做法就是QOS(质量服务)的一个方面。
在xp和2003中系统自带了pppoe的支持,通过系统自带的pppoe拨号建立的dsl连接,默认的时候是支持QOS的。(这个选项一度被人误导说要占用额外的带宽,建议大家不要勾选,真是害人不浅)
只有xp和2003才有qos这个选项,这个选项中ack优先只是一个很小的方面,遗憾是的不能详细设置QOS的各个选项,只能选择打开或者关闭。打开QOS在没有QOS的需求的时候,并不会占用额外的带宽,也就是说打开QOS并不会影响正常的纯上行或纯下行的速度,在同时上下行的时候,反而会自动优化。
另外,QOS不仅仅和你电脑设置有关,和服务商的设备也有关系,如果服务商那边作了限制,或者没有设置ACK优先,个人电脑这边怎么优化也白搭。
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后才发送下一数据段,这样就导致了双向传输时跑不到理论值的最大带宽。
--------------------------------------------------------------------------------
江南七怪:
TCP的滑动窗口没有说到,还有很大的欠缺,并不是收到N的ACK后才能发N+1,这个说法是错的,当然每个TCP实现可能不一样,但是协议里肯定不是这样的。
还有阿,和局端基本是无关的,这个Qos只和TCP连接的两端相关,局端只看IP层,不看传输层的。
--------------------------------------------------------------------------------
swan:
那原先上传下载互不影响,经过几次设备升级以后,是什么原因造成了互相影响呢?
--------------------------------------------------------------------------------
江南七怪:
这个很难回答,我自己来看,我家的ADSL上下行从来都是有影响的,就是从来没有过互不影响的。不知道有谁能给我看看互不影响的。
--------------------------------------------------------------------------------
一个与此相关的软件cfos speed v2.02,这里有下载:
http://218.4.143.90/adsl/Dispbbs.asp?boardid=10&ID=292&replyID=951&skin=1
但是破解似乎有点问题。破解说明:
OK guys, this is the solution for ACME crack for cFosSpeed 2 final, it';s working for me right now, i had the same trouble after installing the crack, nothing show up, but finally i figured it out, please follow these steps:
Uninstall old version
Install this final version. after the installation, terminate the following processes: spd.exe, cfosspeed.exe
apply the crack with backup option checked.
rename the patched cfosspeed.exe into cfos_speed.exe and RENAME the cfosspeed.bak into cfosspeed.exe
This following is the crucial step and I think the reason this crack didn';t work as designed
open regedit. go to HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
you will see the key cFosspeed, fix the value to
C:\Program Files\cFosSpeed\cfos_speed.exe
if you look closely u will see the cracker put a wrong path and this is the main reason it doesn';t work.
Have fun
--------------------------------------------------------------------------------
excel:
大家一起努力找破解。这软件的确有用的。
|