流量控制原则

对于TCP/IP一书中TCP部分,我认为关键要掌握3点
1.建链和拆链过程 http://bbs.c114.net/viewthread.php?tid=332819
2. 数据交互规则 http://bbs.c114.net/viewthread.php?tid=332827
3.流量控制原则 http://bbs.c114.net/viewthread.php?tid=332828

针对这几点,我进行了简要概括,希望有助于初学者理解

流量控制原则

个人对于流量控制的理解,就是平衡一系列的矛盾,使数据 传输各方面的综合成本最低。

某个时间点, 网络的容量或是某个连接的容量总是有限的。容量由带宽,环路时延,接收缓存等一系列因素共同决定。如果发送端数据发送的太慢,远低于连接容量,首先便是数据交互等待时间加长(想象下,如果等下一个文件要几个小时……),再次就是造成 网络的利用率低,投资不能充分利用(好比使用8M的ADSL,只看普通网页)。相反,如果某段时间 网络上传输的包过多,超过了容量,那造成的结果就是 网络拥塞(有点几年前忙时上网的感觉),大量的数据包被丢弃,重发,如果不加控制,则会进一步造成重发数据包泛滥,不断吞噬 网络带宽,使有效 网络带宽不断降低,流量控制很多时候就是为了拥塞控制和拥塞恢复

control.jpg (21.2 KB)
2009-5-20 06:29


TCP的各种流量控制的原则,总得来说就是使流量总是能接近但不超过网络或连接的容量,即最大化的利用网络带宽,但又不至于造成拥塞,或是一但出现拥塞,能够快速的恢复到一个最佳的流量值,下面再列举一些TCP的措施

尽量减少包数:

每个包都有包头的开销,因而相同数据使用越少的包,便能够提高有网络传送有效负荷的比例;同时,包数的减少,也能够降低网络设备的处理负荷。

TCP允许一个包含有多个功能,一个数据包不但包含本次发送的数据,同时还携带对于对端数据的确认、拆链信息等信息,这样可以最大化地利用TCP包头的字段,并减少确认包和命令包

multi.jpg (19.01 KB)
2009-5-20 06:29


TCP允许接收端不对每个接收到的数据包立即进行确认,如上图所示,接收端可以在发送数据时,或是等待一段时间后,对收到的,编号最大的包进行确认。发送端可以知道,接收端确认包号之前的包都已经正确收到,这样可以减少确认包。

TCP会尽量避免数据包分片。数据包分片一是会造成包数增加,二是会增加重传的风险(任一个分片丢失,原数据包就需要重发)。TCP在建链过程中,双方会相互知会各端最大可以接收的包长,并协商出一个最大的发送包长,后续的包长都以小于这个最大发送包长的大小发送,避免分片。(可以参见MTU 原理 http://bbs.c114.net/viewthread.php?tid=332577

TCP的各种重传间隔都不是等长的,而是以指数级增长的。即第一次重传和第二次重传的间隔会比第三次与第四次的间隔小很多,这种重传控制方法,可以在相同时间内,大量减少的重传次数,如下图所示

resend.jpg (22.56 KB)
2009-5-20 12:17


发送速度控制:

TCP双方交互数据时,都会携带各自目前的缓存大小,这样,各端都能根据目前对端缓存的变化,控制发送速度。

D_win.jpg (32.8 KB)
2009-5-20 06:29


   此外,TCP有很多控制发送数据,避免拥塞的算法,要研究具体算法,那就要啃书了,但基本原则还是与本文开头一致,使发送速率总是控制在恰好低于网络或通道饱和容量之下,即要高效地利用网络,又不至于使网络陷入拥塞。

speed.jpg (33.56 KB)
2009-5-20 12:18


OK, 以上便是对于TCP理解的一些总结,不足之处请各位多指教。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值