Skip to content

Instantly share code, notes, and snippets.

@ThinkZ
Created December 28, 2016 01:46
Show Gist options
  • Save ThinkZ/f52ca20b1d83d8194a228cbd2b597df0 to your computer and use it in GitHub Desktop.
Save ThinkZ/f52ca20b1d83d8194a228cbd2b597df0 to your computer and use it in GitHub Desktop.
经常有人讨论ADSL下载速度的问题,有的说2M应该是2048/8=256K/秒,很早就想深究这个问题了,以下根据协议的具体工作来分析2048K的ADSL下载速度到底应该是多少?
MTU1480#(目前大多城域网采用IP上行,不再用ATM,VLAN信息占12,因此不是1492)
同步速率2048000
DMT frame长度(byte)64#参考用,不必用来计算
字节/秒256000#以上统计物理层的速率,单位是Bit,为了方便计算,转换成Byte
ATM信元数量/秒4830.188679#53字节/信元,ADSL采用ATM方式来传送数据
有效信元字节/秒231849.0566#48字节/信元
最大接收以太网侦数/秒154.3602241#以太网侦长度1502,拨号方式都是以太网封装数据的
每个以太网侦花费时间6.478352865
PPPoE侦最大有效负载(既IP包MTU)1480#1502中,12个以太网地址和2个类型,8个PPPoE包头,负载为1480
IP包的最大有效负载1460#MTU减去20字节的IP包头
FTP下载时,TCP最大有效负载1440#每个包的最大实际有用数据
FTP下载时,TCP的ACK数(假设win=4)38.59005603#下载时,每收到4个有效包,就应答一个ACK包,继续传4个包,这是TCP的特点
每ACK占用2ms,共消耗ms/秒77.18011205
扣除ACK占用时间,实际收以太网侦数/秒142.4466847
有效数据的下载最高速率205123.226#(忽略TCP握手以及慢启动机制)
换算成KB/秒200.3156504
以上是假设线路质量和网络质量良好情况下单线程FTP理论上最大可达速率
由上可见,线路和网络良好时,对速率影响最大的是ACK时间以及WIN数量,ACK包一般是60字节,512K上行速率仅需要1ms,但你的电脑也要响应时间,因此一般是1ms~2ms之间,如果你的电脑很繁忙(如中毒),那响应时间会大大增加,还有就是使用路由方式也可能会增加该时间。另外win值是1~16之间,但我抓包测试最多是4,因此在最理想情况,2M的ADSL最高下载速度是200~205K/秒。
线路质量的影响
线路质量差导致误码,万分之4的误码能影响10%的下载速度,千分之一能影响近50%的速度。
网络质量的影响
主要就是延时,下行数据可以通过Win数量来调节,甚至采用多线程尽量填满通道,值得注意是并不一定多线程就快,多线程只能在高带宽高延时有效果,否则适得其反。
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment