下载是如何吃掉带宽的?

2016-08-17 08:39:38 +08:00
 nifury
有这么几个问题:
1 、比如开迅雷下载满速的时候,网页打开会变得特别慢,这是为什么呢?
(1) 网页新开链接,由于 TCP 慢启动,而迅雷链接的窗口已经扩大?
(2) ADSL 下载会限制上行导致 ACK 发送缓慢?(我现在用光纤很少达到满速,不知道会不会影响网页打开速度)

2 、之前用过 cfosspeed ,打开网页的速度就正常了,为什么呢?(大概是驱动 qos 什么的?不懂,无所谓啦)

3 、对客户端来说,带宽是如何分配的呢?假如入口带宽足够的情况下
比如看网页视频只有一个链接在接收数据,而迅雷开了 4 个链接在下载,于是 100M 带宽被均分成 20M ?但是为何通常迅雷能达到满速呢?

4 、突然想到的,迅雷不是自带网速保护功能保证上网速度么?在没有加载驱动的情况下(迅雷貌似没有加驱吧)迅雷如何得知浏览器是否需要网速?( hook send, recv?)
6583 次点击
所在节点    宽带症候群
35 条回复
tcp
2016-08-17 08:40:57 +08:00
水管就那么大…
Laynooor
2016-08-17 09:12:11 +08:00
自从上行带宽大了后,迅雷满速下东西的同时也可以愉快地开网页打游戏了,延迟也很稳定不波动
nifury
2016-08-17 09:18:53 +08:00
@tcp 嗯我知道呀~我是说水流如何分配的呢?
suduo1987
2016-08-17 09:54:15 +08:00
@nifury 关键是迅雷不仅下,它还上.而我国宽带资源上下一般是非对等的.
Baymaxbowen
2016-08-17 09:56:52 +08:00
开迅雷下东西,家里电视都得转菊花
mhqschen
2016-08-17 10:08:48 +08:00
LZ 想要专业点的回答,可惜楼上净在撤别的。。
liuxu
2016-08-17 10:17:15 +08:00
楼主是想问,同样是连接,凭什么迅雷就能抢 http 的网速。
txydhr
2016-08-17 10:24:20 +08:00
因为迅雷建立的连接数不止 4 个,热门点的往往上百,远远大于浏览器。
imn1
2016-08-17 10:31:20 +08:00
我的 dd-wrt 上的脚本
echo "16384" > /sys/module/nf_conntrack/parameters/hashsize

prefix=/proc/sys/net/ipv4/netfilter/ip_conntrack

echo 300 > $prefix_generic_timeout
echo 60 > $prefix_udp_timeout
echo 30 > $prefix_udp_timeout_stream

echo 1800 > $prefix_tcp_timeout_established
echo 120 > $prefix_tcp_timeout_syn_sent
echo 60 > $prefix_tcp_timeout_syn_recv
echo 30 > $prefix_tcp_timeout_fin_wait
echo 30 > $prefix_tcp_timeout_time_wait
echo 30 > $prefix_tcp_timeout_close
echo 30 > $prefix_tcp_timeout_close_wait
echo 15 > $prefix_tcp_timeout_last_ack

其中几个 wait 值根据自己需要调优,玩 P2P 都是必须的,不然机器就会大量阻塞
自己调优吧,也不是个个路由器都适合用这个

如果你的网卡和路由器都是壕级,可以忽略跳过
zhujinliang
2016-08-17 10:40:09 +08:00
就好比卖票就一个窗口(网卡缓冲区),大家排队买票,你自己一个人去排队,敌方派 100 人去排队。。。
hellov22ex
2016-08-17 11:14:26 +08:00
用好点的 QOS ,现在满速下载延时最多从 8 变成 12.
jasontse
2016-08-17 11:26:37 +08:00
@imn1
现在的路由器内存很大普遍 64M 往上改这个没大用。

迅雷可能是通过计算带宽最大值然后收敛一点
bazingaterry
2016-08-17 11:43:44 +08:00
估计是连接数的问题,调小之后就感觉就算跑满了还是能上网的。不过还是等待老司机解答一下。
KevinChan
2016-08-17 11:47:57 +08:00
上行占用太大了
imn1
2016-08-17 11:52:06 +08:00
@jasontse
是的,我的路由器是世纪初产品了,连 ipv6 都没有
不过 timeout 等等还是有需要的,连接数太多(阻塞),还是吃 CPU 的,还有洪水问题
这个脚本是 dd-wrt 官方提供的脚本,然后我自己修改适合自己使用的,不玩 p2p 也没必要用
goodryb
2016-08-17 13:28:47 +08:00
我觉得楼主 搜索一下 迅雷+LSP ,四个问题都解决了
hyq
2016-08-17 14:00:22 +08:00
我觉得是路由器处理不过来,我现在开着迅雷,玩游戏都不卡。
以下是我的不靠谱猜测
普通 http 不到 10 个链接,迅雷开了 1000 个链接,路由器如果平均分配 cpu 时间, http 只能抢到 1%的资源。
kumiko
2016-08-17 14:09:02 +08:00
比如我打守望先锋,平时延迟只有 7ms
开了 utorrent 下载后,下载速度 10MBps (宽带是 200mb,所以下载速度没有满)
但游戏的延迟已经变成 300 多了
fcicq
2016-08-17 14:09:29 +08:00
只回答 1.
正常的 TCP 流量控制算法都是链接均分也就是公平的(只能从别处另行限制), 从多连接下载等效于丢包时缩减窗口量变为 1/N, 如果是多主机多链接的话好处更多.
ACK 的话 RFC4341 说每组包应当返回 1-2 个 ACK. 间接可以算出最低上传带宽来. 一般的 QoS 都是 ACK 优先, 发完 ACK 还剩下多少可想而知...
nifury
2016-08-17 16:00:16 +08:00
@fcicq @hyq 谢谢~~

@goodryb 迅雷没有动 LSP (至少我用的版本如此), cfosspeed 是加驱的,这个我能确定

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/299793

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX