【传输层】传输控制协议TCP概述 之二

本文介绍了TCP协议中的流量控制和拥塞控制机制,包括滑动窗口、MSS、糊涂窗口综合症及其解决方案,以及慢开始、拥塞避免、快速重传/快速恢复等拥塞控制算法,并探讨了随机早期检测RED作为路由器丢弃策略的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一,TCP的流量控制

1)利用滑动窗口实现流量控制:让发送方的速度不要太快,接收方来得及接收

TCP窗口单位为字节,不是报文段。

2)MSS: Maximum Segment Size 最大分段大小最大传输大小是TCP数据包每次能够传输的最大数据分段。
   为了达到最佳的传输效能,TCP协议在建立连接的时候通常要协商双方的MSS值,这个值TCP协议在实现的时候往往用MTU值代替(需要减去IP数据包包头的大小20Bytes和TCP数据段的包头20Bytes)所以一般MSS值1460

   通讯双方会根据双方提供的MSS值得最小值确定为这次连接的最大MSS值。
   注:最大报文段长度MSS这个名词很容易引起误解。MSS是TCP报文段中的数据字段的最大长度。数据字段加上TCP首部才等于整个的TCP报文段。所以MSS并不是TCP报文段的最大长度,而是:MSS=TCP报文段长度-TCP首部长度

3)糊涂窗口综合症

当发送端应用进程产生数据很慢、或接收端应用进程处理接收缓冲区数据很慢,或二者兼而有之;就会使应用进程间传送的报文段很小,特别是有效载荷很小。 极端情况下,有效载荷可能只有1个字节;而传输开销有40字节(20字节的IP头+20字节的TCP头) 这种现象就叫糊涂窗口综合症

比如:TCP 接收端缓存空间已经满,交互式应用程序一次只能从接收空间读取一个字节,然后向发送端发送确认,把窗口设置为1字节。发送端发送41字节传输开销有40字节(20字节的IP头+20字节的TCP头)。

问题解决:让接收端等待一段时间,使得有足够的空闲空间可以容纳一个最长报文段或拥有一半的空闲。

发送方:要积累一定数据段后才发送。


二,TCP 的拥塞控制

拥塞控制是一个全局性过程,防止过多的数据注入到网络中,使网络路由器或链路不至于过载。

流量控制是一个端到端过程,控制发送端,不要发送过快,让接收端来得及处理。

开环控制:设计网络时,事先将有关发生拥塞的因素都考虑清楚。

闭环控制:基于反馈环路的概念

拥塞控制方法:

1)慢开始和拥塞避免

发送方控制窗口的原则:只要网络没有出现拥塞,窗口就增大一些,以便把更多的分组发送出去。一旦出现拥塞,就把窗口减小,减少注入到网络中的分支数。

慢开始和拥塞避免算法必须被TCP发送端用来控制正在向网络输送的数据量。为了实现这些算法,必须向TCP每连接状态加入两个参量。

拥塞窗口(cwnd)是对发送端收到确认(ACK)之前能向网络传送的最大数据量的一个发送端限制,

接收端通知窗口(rwnd)是对未完成数据量的接收端限制。

Min(Cwnd,rwnd)决定了数据传送
   另一个状态参量,慢启动阀值(ssthresh),被用来确定是用慢启动还是用拥塞避免算法来控制数据传送
  

cwnd<ssthresh 慢开始算法

cwnd>ssthresh拥塞避免算法

cwnd和ssthresh 既可以使用慢启动也可以使用拥塞避免
   慢开始:cwnd大小指数增加,即每经过一个传输轮次,拥塞窗口加倍。

   拥塞避免:cwnd以每个往返(RTT)1满尺寸数据段的速度递增,即每经过一个传输轮次,拥塞窗口增加 1 。(cwnd+=SMSS*SMSS/cwnd

执行拥塞避免算法时候,网络出现拥塞(没有按时收到确认),讲慢开始门限(ssthresh)设置为出现拥塞时窗口大小的一半,然后讲cwnd重新设置为1,执行慢开始算法。

 
2)快速重传/快速恢复
快重传:接收方收到一个失序的报文段后就立即发出重复确认(让发送方及早知道有报文段没有到达接收端),而不要等到接收端发送数据时候捎带确认。

收到M1、M2又收到了M4,则M3丢失,如果接下来的几个报文段都不是M3,则发送M2 确认,如果是M5则再次发M2确认,当发送端收到3个重复确认就应该立即重传M3.

快恢复:当收到三个重复确认,执行乘法减小算法,把慢开始门限ssthresh减半。不执行慢开始算法。

此时执行拥塞避免算法,因为网络没有发生拥塞,如果拥塞就不会一连接受到三个报文。


三,随机早期检测RED

1)概述

路由器的分组丢弃策略对TCP拥塞控制影响很大。

如果发生了路由丢弃,说明出现了拥塞。路由丢弃的是IP分组,而一个IP分组有可能包含好几个TCP连接,所以导致许多TCP同时进入慢开始状态。全局同步

2)丢弃策略

最大门限THmax ,如果分组多余THmax则一定丢弃。

处于两门限之间的要以概率p丢弃个别分组,让拥塞控制只在个别TCP连接上进行,因而避免发生全局性拥塞控制。

最小门限THmin,小于THmin的分组不予丢弃

THmax = 2*THmin 是合适的






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值