通信人家园

标题: [原创]TCP/IP学习笔记-理解TCP(流量控制原则)  [查看完整版帖子] [打印本页]

时间:  2009-5-20 06:29
作者: chris_waity     标题: [原创]TCP/IP学习笔记-理解TCP(流量控制原则)

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

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

流量控制原则

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

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

control.jpg

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

尽量减少包数:

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

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

multi.jpg

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

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

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

resend.jpg

发送速度控制:

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

D_win.jpg

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

speed.jpg

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

[ 本帖最后由 chris_waity 于 2009-5-20 12:18 编辑 ]

附件: control.jpg (2009-5-20 06:29, 21.2 KB) / 下载次数 3
https://www.txrjy.com/forum.php?mod=attachment&aid=NTIxMjV8N2FmN2Q5MjF8MTczMjMyODYwNnwwfDA%3D

附件: multi.jpg (2009-5-20 06:29, 19.01 KB) / 下载次数 4
https://www.txrjy.com/forum.php?mod=attachment&aid=NTIxMjZ8NzNkZmJlYzJ8MTczMjMyODYwNnwwfDA%3D

附件: D_win.jpg (2009-5-20 06:29, 32.8 KB) / 下载次数 3
https://www.txrjy.com/forum.php?mod=attachment&aid=NTIxMjd8YzM1YmZiYmR8MTczMjMyODYwNnwwfDA%3D

附件: resend.jpg (2009-5-20 12:17, 22.56 KB) / 下载次数 4
https://www.txrjy.com/forum.php?mod=attachment&aid=NTIxMjh8NTAwZjRhZmV8MTczMjMyODYwNnwwfDA%3D

附件: speed.jpg (2009-5-20 12:18, 33.56 KB) / 下载次数 4
https://www.txrjy.com/forum.php?mod=attachment&aid=NTIxMjl8NGRkZWQzNWV8MTczMjMyODYwNnwwfDA%3D
时间:  2009-5-20 08:26
作者: harg6

这个好啊.................

期待已久的东西........................


谁能讲讲SCTP更好了,哈哈
时间:  2009-5-20 09:56
作者: zigelar

嗯 学习了
时间:  2009-5-20 10:02
作者: 麦克.米兰

一直对TCP/IP不太了解,学习中
时间:  2009-5-20 10:38
作者: shenhqi

TCP并没有使用很多种流量控制算法,就用了一种:滑动窗口。
时间:  2009-5-20 11:22
作者: thtelecom


时间:  2009-5-20 11:41
作者: zjgclb

学习TCP/IP很长时间了,感觉还是有点迷糊
时间:  2009-5-20 11:46
作者: caospace

这个,还真是比较难!
时间:  2009-5-20 12:11
作者: czljim

呵呵說的不錯哦
时间:  2009-5-20 12:42
作者: wolizhenlin

觉得比较难
时间:  2009-5-20 14:41
作者: ihopeso

前排占座,好好学习下
时间:  2009-5-20 14:42
作者: peanut007

这个学习一下
时间:  2009-5-20 15:53
作者: sunfish85

学的时候挺明白,用的时候挺麻烦
时间:  2009-5-20 16:37
作者: 田野小龙

正在学习中。。。
时间:  2009-5-20 19:31
作者: fengzi321

占个好位置,仔细听讲》
时间:  2009-5-20 19:53
作者: 大胖和小胖

楼主写得很仔细:)
时间:  2009-5-20 21:46
作者: sun_gwtt

l楼主是好人 。。。:)
时间:  2009-5-20 23:03
作者: bazi888

好东西,图文并茂
时间:  2009-5-20 23:33
作者: guxiong108

顶一个,不错





时间:  2009-5-21 00:07
作者: gaosss

顶一个
时间:  2009-5-21 08:42
作者: 网优小草

通俗易懂,楼主讲的很明白。
时间:  2009-5-21 11:32
作者: jackhasun


感激
时间:  2009-5-22 10:03
作者: aeolusljf

又多知道点儿。。。。。。。。
时间:  2009-5-22 10:18
作者: shamozhiying

good  写的不错 图文并茂。
时间:  2009-5-28 01:40
作者: sstracker

嗯,学习了
时间:  2013-7-19 16:51
作者: SUOSUOYAN

谢谢。很好




通信人家园 (https://www.txrjy.com/) Powered by C114