POPPUR爱换

 找回密码
 注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

搜索
查看: 6544|回复: 31
打印 上一主题 下一主题

修改半开连接数其实只是误导, 实际意义并不大

[复制链接]
跳转到指定楼层
1#
发表于 2009-9-13 01:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 aboutblank 于 2009-9-13 01:21 编辑

本篇是原创, 有点长, 推荐有耐心的同学看完, 没有耐心的同学看一看粗体字和最后的结论就可以了.

首先要明确这样一个概念, 什么是半开连接?


我们网络传输广泛使用的 TCP 是一个面向连接的协议, 也就是说真正的数据传输开始前, 先需要连接(与之相对的, UDP 是无连接的协议, 传输数据前无需建立连接). 这个所谓的面向连接和无连接, 并不是字面上理解的那样, 好像无连接就是不插网线他也哗哗地往外发, 这个所谓的连接是建立在双方的网络能够互通的基础上的, 一个形象的比喻就是好像两个人打网球, 甲先跟乙说, 我要发球了, 乙说我准备好了, 你发吧, 然后甲把球发过去, 这个是所谓面向连接的情况. 而无连接是指在发球之前不打招呼, 直接就发. 当然了, 这两个人首先先得见着面, 到了网球场里面, 开始打网球了, 这才能讨论发球的问题.

面向连接和无连接也是这样, 两个节点间的网络首先得是通的, 这才考虑面向连接和无连接. 无连接就很好理解了, 就是两个人网络是通的情况下, 直接发数据, 而没有打招呼的过程. 既然是无连接, 讨论什么连接数也就是没有意义的.

因此我们首先得出第一个重要结论: 对于无连接的协议, 讨论连接数是没有意义的.

而 UDP 就是这样的协议. 而 UDP 主要应用范围, 就是那些不需要可靠性的服务, 比如网络视频, 网络电话, 具体点的, 比如什么优酷啊土豆啊PPLive啊PPStream啊, 甚至连QQ的文件传输都是UDP. 另外一些BT软件也支持UDP传输. 对于这些服务, 根本就没有连接数这样一个概念, 当然也就更谈不上什么半开连接数了.

再看看面向连接的协议 TCP 吧. 所谓的面向连接, 就是数据传输之前要建立连接, 说得直白一点就是要打招呼, 看看双方是否都准备好了, 一旦双方都确认对方准备好了, 也就是连接建立起来了, 这样才开始传输数据. TCP 就是这样面向连接的协议. 一些需要保证数据不会出错的服务, 比如看网页啊文件下载啊什么的, 包括MSN的文件传输, 用的都是 TCP.(当然面向连接只是TCP可靠性的一部分, 还要辅以分片序号啊校验啊等等, 但和本文主题没有太大关系, 因此略去不提)

举个具体的例子, 比如甲需要通过 TCP 传输来得到乙的某些数据, 那么最简单地说, 建立连接有三步:

1. 甲先打开一个连接, 向乙发送一个同步请求, 并把自己的状态设置为"同步已发送", 并启动计时器, 准备如果在75秒后还没有收到回应时关闭这条连接

2. 乙收到同步请求, 向甲发送一个确认, 再附加向甲发送一个同步请求, 并把自己的状态设置为"同步已接收", 也启动75秒的计时器.

3. 甲收到确认和乙发来的同步请求, 再向乙发送一个确认, 并把自己的状态设置为"连接已建立". 乙收到确认包后也把自己状态设置为"连接已建立".

经过这三步, 连接建立起来后, 才可以开始传输数据. 用直白一点的话说, 就是甲先问乙准备好了没有, 乙说准备好了, 然后乙再问甲准备好了没有, 甲也说准备好了, 这样双方都确认对方准备好了, 这才开始传送数据.

而所谓的半开连接, 就是双方的状态处于"同步已发送"或"同步已接收"时, 这条连接才算作半开连接. 而一旦双方状态都变成"连接已建立"时, 这条连接就成为已建立的连接, 就不属于半开连接了.

明确了上面的概念, 我们再来看看从 Windows XP SP2 开始的大名鼎鼎的或者说臭名昭著的半开连接数限制吧. 系统把半开连接数限制为10条, 但这里要注意, 限制的是半开连接数, 而不是总的连接数. 已经建立的连接有多少条他都不管你, 他唯一关心的只是半开连接数.

这里得出第二个重要结论: 系统限制的不是最大并发连接数, 而是半开连接数, 对于已经建立的连接, 系统并不限制其数量.

而从上面的解释可以看到, 一条连接处于半开状态时, 是根本不传输数据的. 因此半开连接数限制到多少, 和数据传输的速度没有一丁点关系.

那么半开连接数限制对下载来说有什么影响呢? 再举一个形象的例子, 比如今天发售国债, 银行还没开门呢好多人就跟外边排着, 排了一大长队, 全是来买国债的, 然后到点银行开门了, 可是银行就三个柜台. 银行也想早点把这国债全卖出去, 要不全是来买国债的, 人家办别的业务的也不好办呀. 可是我三个柜台办事效率有限, 可能头好几十个人每个人就都只买一百块钱的, 直到后来好半天才终于赶上一个, 一下就买了好几万的. 可要是柜台多呢, 比如有10个柜台, 一下全开开, 那肯定卖得就快, 不一会就能卖完了.

再回到半开连接数的问题, 也是这样的, 总的下载带宽是一定的, 这就好比银行手里的国债是有限的, 而半开连接数呢就相当于柜台窗口, 窗口要是少了呢, 卖得可能就就慢一些, 同样, 半开连接数要是少, 那么达到最大带宽所需要的时间就会慢一些, 说通俗点就是速度起来得可能就慢一些. 当然要是一上来就碰到个有钱的, 说今你们这有多少国债我全包圆了, 那当然一下就卖完了. 如果你下载的时候碰上一大水管, 一下就把你带宽给塞满了, 那当然你速度也就一下起来了. 但不管怎样, 国债总会卖完, 带宽同样也总会达到满速. 而对于一些冷门种子, 本来peer就少速度就慢, 就好像过时积压货, 本来愿意买的人就少, 柜台开得再多, 该卖不出去还是一样卖不出去.

由此我们得出第三个重要结论: 半开连接数不决定速度的快慢, 只在一定程度上决定达到最高速度的时间长短.

那么限制半开连接数有什么意义呢? 还可以继续类比, 为什么银行不开100个窗口呢? 答案太显然了, 成本太高, 开不起. 半开连接也是一样, 每条连接都是要耗费系统资源的, 而所谓的 DoS 拒绝服务攻击, 还有冲击波和震荡波, 也正是用大量半开连接数来企图耗尽服务器或者电脑的资源. 因此半开连接数设得过大, 是有一定潜在危险性的.

综合以上三个结论, 我们来看看把半开连接数改大能有什么影响: 首先, 对你看优酷看土豆看PPS等网络视频没有任何的改善, 打Skype也不会更流畅, 对于BT下载中的UDP连接也没有任何的影响; 另外, 本来速度就慢的, 半开连接数开得多速度也不会加快. 改大的唯一好处, 就是有可能会让你达到满速的速度更快一些, 而且还只是"有可能", 因为何时碰上大水管是一个随机问题.

至于安全性问题, 其实我们自己的电脑很少会遭到 DoS 攻击, 人家玩 DoS 攻击的也不会看上我们这种个人的小破电脑, 让我们这种档次的电脑死机了于他们也没有什么快感可言; 但是也确实不排除有还未发现的漏洞会导致某些病毒产生大量无用的半开连接, 而这其实也正是微软限制半开连接数的初衷.

综上所述, 我个人的观点是, 半开连接数改或不改其实无所谓, 并不像有些以讹传讹的说法那样"能够大幅提高下载速度". 我自己是没有改的, 我觉得10个半开连接够使. 如果改的话推荐也不要改得太多, 100个就足够了, 即使让5个BT种子同时开始下载恐怕也就将将用得了100个半开连接, 改得太多不仅没有意义, 反而会留下隐患.
徐小影 该用户已被删除
2#
发表于 2009-9-13 01:41 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

3#
发表于 2009-9-13 02:13 | 只看该作者

又一个假优化被揭穿了
回复 支持 反对

使用道具 举报

4#
发表于 2009-9-13 07:06 | 只看该作者
通俗易懂,适合各阶层人士。
回复 支持 反对

使用道具 举报

5#
发表于 2009-9-13 07:46 | 只看该作者
你挂emule就知道了,如果你的网速大于3M,修改到大于500是必要的
同时下载一堆不太热门的文件时经常跑不满速度(热门文件除外)
回复 支持 反对

使用道具 举报

6#
发表于 2009-9-13 07:55 | 只看该作者
提高不提高咱不说 修改之后下bt电驴时候看网页能打开了
回复 支持 反对

使用道具 举报

7#
发表于 2009-9-13 08:00 | 只看该作者
提高不提高咱不说 修改之后下bt电驴时候看网页能打开了
奇犽 发表于 2009-9-13 07:55


是的!
回复 支持 反对

使用道具 举报

8#
发表于 2009-9-13 09:28 | 只看该作者
还是有作用,修改之后下载速度快多了,而且能打开网页了
回复 支持 反对

使用道具 举报

9#
发表于 2009-9-13 10:59 | 只看该作者
lz做学问做歪了,不修改BT就别想打开网页了。
回复 支持 反对

使用道具 举报

10#
发表于 2009-9-13 13:29 | 只看该作者
本帖最后由 littlemouse 于 2009-9-13 13:37 编辑

说打不开网页的,那是因为你们不会设置bt软件。
我用xp,不改tcpip.sys,用ut,照样正常开网页。
我就算用迅雷也不改,网页也打得开。
照样都满速下载。

我用10M lan,如果用adsl必须限制上传!


emule不热门资源不能满速,和这个一点关系都没有。
源少时,单用户给你上传快,只有一个用户上传都能满速。如果单用户给你上传慢,总共寥寥几个用户上传当然不能满速。

win7没有限制半开连接,更加不需要修改。
回复 支持 反对

使用道具 举报

zacard 该用户已被删除
11#
发表于 2009-9-13 13:33 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

yuuto 该用户已被删除
12#
发表于 2009-9-13 19:31 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

13#
发表于 2009-9-13 23:19 | 只看该作者
警告:TCP/IP 已经达到并发 TCP 连接尝试次数的安全限制。
回复 支持 反对

使用道具 举报

14#
发表于 2009-9-14 04:56 | 只看该作者
半开连接数其实就是一个等待队列深度的问题
你用不到不等于没用
回复 支持 反对

使用道具 举报

15#
发表于 2009-9-15 11:11 | 只看该作者
当然要改大了,不改大就等于同时连接数太少了,达到最大速度花费时间变大
回复 支持 反对

使用道具 举报

16#
发表于 2009-9-15 12:45 | 只看该作者
很简单的例子,用EMULE。你不修改半连接的话,你去连国外的资源试试看。你这个文章的假设是,每个连接连接上后立刻就可以开始下载占用带宽,但EMULE实际情况是你连上别人后,还得排队。排到你了才开始轮到你下。你不连接根本连队都不让你排。这也要占用半开连接数。你把半开连接改小后去试试,明显KAD搜索到并且成功连接的用户数量都少了。
回复 支持 反对

使用道具 举报

17#
发表于 2009-9-15 12:49 | 只看该作者
还有这样排队占用的网络带宽很少很少,并不是说连上后带宽就一直占用。而且连的越多带宽占用越大.你根本没搞清楚P2P不同软件之间区别。EMULE就算你在别人那边排队,没给人家上传,随着排队时间增长你也可以从人间那边下载。
回复 支持 反对

使用道具 举报

18#
 楼主| 发表于 2009-9-15 18:06 | 只看该作者
楼上我只能说你没搞清楚半开连接的概念,你状态显示排队的时候当然连接就已经建立起来了.TCP连接是处于OSI模型四层的概念,而你排队那个是七层的概念.你要是不相信我也没办法,但事实就是这样.我前面已经说过,半开连接75秒自动关闭,你有发现你排队排了一分多钟就自动掉了吗?
回复 支持 反对

使用道具 举报

19#
发表于 2009-9-15 18:28 | 只看该作者
原理理解正确,但是没把握住重点,分析错误
1.你在半开链接的同时,也有已经建立链接的在关闭。总的链接数是一个不停建立新链接的同时不停的关闭旧链接的平衡过程。(关闭的主要原因是对方关机,网络不稳定,或者需要部分已经下完了等)。所以,在资源很多,但是平均每个资源的速度又很慢的时候,半开连接数越多,总的链接数就越多,速度就越快。
2.当你bt,或者电驴,或者迅雷,一直占用着仅有的10条半开链接,其它优先级比较低,需要建立链接的程序就会像断网一样,一直连不上。(有时候,宽带有10M,下载速度只有2M,但是有时候网页都打不开,就是因为半开链接数太少)
回复 支持 反对

使用道具 举报

20#
发表于 2009-9-15 18:37 | 只看该作者
不信可以试试:BT能连上很多个(几百个吧),但是每个的速度都很慢,总速度还是很低的时候,改大半开链接数,下载速度提高很明显,总的连上的的个数也会多很多。

用新版web迅雷下载可用源数多的bt,不改半开连接数,网页都打不开。就是因为新版web迅雷直占用着这10条半开连接数,连上一个就再开一个,ie根本没有机会发送同步请求, 并把自己的状态设置为"同步已发送"
回复 支持 反对

使用道具 举报

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

本版积分规则

广告投放或合作|网站地图|处罚通告|

GMT+8, 2025-2-27 07:18

Powered by Discuz! X3.4

© 2001-2017 POPPUR.

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