通信人家园

 找回密码
 注册

只需一步,快速开始

短信验证,便捷登录

搜索

军衔等级:

  上士

注册:2009-2-7
跳转到指定楼层
1#
发表于 2009-5-20 06:29:25 |只看该作者 |倒序浏览
对于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 编辑 ]
已有 1 人评分经验 家园分 收起 理由
家园副管03 + 20 + 20 + 10 谢谢分享,好东西啊

总评分: 经验 + 20  家园分 + 20  + 10   查看全部评分

举报本楼

本帖有 25 个回帖,您需要登录后才能浏览 登录 | 注册
您需要登录后才可以回帖 登录 | 注册 |

手机版|C114 ( 沪ICP备12002291号-1 )|联系我们 |网站地图  

GMT+8, 2024-11-23 06:20 , Processed in 0.153088 second(s), 20 queries , Gzip On.

Copyright © 1999-2023 C114 All Rights Reserved

Discuz Licensed

回顶部