概述
文章目录
- 0.什么是拥塞
- 1.拥塞的原因
- 情况1
- 情况2
- 情况3
- 2.拥塞控制方法
- 端到端
- 网络辅助
- 3.TCP拥塞控制(端到端)
- 如何感知拥塞
- TCP如何确定应当发送的速率
- TCP拥塞控制算法细节
- 1.慢启动
- 2.拥塞避免
- 3.快速恢复
- 总结以上,回顾全局
- 公平性
0.什么是拥塞
对网络中某一资源的需求超过了该资源所能提供的可用部分,网络性能就要变坏,这种情况就叫做网络拥塞。
在计算机网络中数位链路容量(即带宽)、交换结点中的缓存和处理机等,都是网络的资源。
若出现拥塞而不进行控制,整个网络的吞吐量将随输入负荷的增大而下降。
1.拥塞的原因
情况1
情况2
情况3
2.拥塞控制方法
端到端
网络层没有为运输层拥塞控制提供显式支持。
即使网络中存在拥塞,端系统也必须通过对网络行为的观察(如分组丢失与时延)来推断之。
网络辅助
在网络辅助的拥塞控制中,路由器向发送方提供关于网络中拥塞状态的显式反馈信息。
这种反馈可以简单地用一个比特来指示链路中的拥塞情况。
3.TCP拥塞控制(端到端)
TCP必须使用端到端拥塞控制而不是使网络辅助的拥塞控制,因为IP层不向端系统提供显式的网络拥塞反馈。
如何感知拥塞
TCP发送方的丢包事件:要么出现超时,要么出现3次冗余ACK。
当出现过度的拥塞时,在沿着这条路径上的一台(或多台)路由器的缓存会溢出,引起一个数据报(包含一个TCP报文段)被丢弃。丢弃的数据报接着会引起发送方的丢包事件。发送方就认为在发送到接收方的路径上出现了拥塞的指示。
TCP如何确定应当发送的速率
- 一个丢失的报文段意味着拥塞。因此当丢失报文段时应当降低TCP发送方的速率。
- 一个确认报文段指示该网络正在向接收方交付发送方的报文段。因此当对先前未确认报文段的确认到达时,能够增加发送方的速率。
- 带宽检测。给定ACK指示源到目的地路径无拥塞,而丢包事件指示路径拥塞,TCP调节其传输速率的策略是增加其速率以响应到达的ACK,除非出现丢包事件,此时才减小传输速率。
因此,为探测拥塞开始出现的速率,TCP发送方增加它的传输速率,从该速率后退,进而再次开始探测,看看拥塞开始速率是否发生了变化。
TCP拥塞控制算法细节
cwnd:拥塞窗口。它对一个TCP发送方能向网络中发送流量的速率进行了限制。在一个发送方中未被确认的数据量不会超过cwnd与rwnd中的最小值,LastByteSent-LastByteAcked<=min(cwnd,rwnd)。
1.慢启动
MSS:最大报文段长度
当一条TCP连接开始时,cwnd的值通常初始置为MSS的较小值。
在慢启动状态,cwnd初始值为一个MSS,每当传输的报文段首次被确认就增加1个MSS。
TCP发送速率起始慢,但在慢启动阶段以指数增长。
何时结束指数增长?
1.超时指示的丢包事件。TCP发送方将cwnd设置为1并重新开始慢启动过程。
将慢启动阈值(ssthresh)设置为cwnd/2,即当检测到拥塞时将ssthresh设置为拥塞窗口值的一半。
2.当cwnd的值等于ssthresh时,结束慢启动并且TCP转移到拥塞避免模式。
2.拥塞避免
一旦进入拥塞避免状态,cwnd的值大约是上次遇到拥塞时值的一半(距离拥塞并不遥远)。
这时,TCP每个RTT只将cwnd的值增加一个MSS。
何时结束线性增长?
冗余3个ACK指示的丢包事件(没超时丢包那么严重),TCP将cwnd的值减半,并且当收到3个冗余的ACK,将ssthresh的值记录为cwnd的值的一半。接下来进入快速恢复状态。
3.快速恢复
对于引起TCP进入快速恢复状态的缺失报文段,对收到的每个冗余ACK,cwnd的值增加一个MSS。最终。当对丢失报文段的一个ACK到达时,TCP在降低cwnd后进入拥塞避免状态。
如果出现超时事件,快速恢复在执行如同在慢启动和拥塞避免中相同的动作后,迁移到慢启动状态:当丢包事件出现时,cwnd的值被设置为1个MSS,并且sshthresh的值设置为cwnd值的一半。
总结以上,回顾全局
加性增、乘性减
公平性
从TCP的观点来看,运行在UDP上的多媒体应用是不公平的,因为它们不与其他连接合作,也不适时地调整其传输速率。
最后
以上就是缥缈茉莉为你收集整理的计算机网络 运输层 拥塞控制:拥塞控制原理&TCP拥塞控制0.什么是拥塞1.拥塞的原因2.拥塞控制方法3.TCP拥塞控制(端到端)的全部内容,希望文章能够帮你解决计算机网络 运输层 拥塞控制:拥塞控制原理&TCP拥塞控制0.什么是拥塞1.拥塞的原因2.拥塞控制方法3.TCP拥塞控制(端到端)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复