TCP的拥塞控制及拥塞控制方法

  • TCP的拥塞控制
  • TCP的拥塞判断
  • TCP拥塞控制的方法
    • 基于窗口的拥塞控制
      • 拥塞窗口
      • 慢开始
      • 拥塞避免
    • 快重传
    • 快恢复
    • TCP拥塞控制总体流程图
    • TCP拥塞控制综合例子

TCP的拥塞控制

TCP的拥塞控制与流量控制不同,前者是全局性的控制,而后者是针对点对点通信量的控制。

网络上有很多计算机,可能当前的网络状态已经比较拥堵了。此时贸然发送大量数据,会造成大量丢包。

若出现拥塞而不进行控制,整个网络的吞吐量将随输入负荷的增大而下降。

TCP的拥塞控制便是用于防止网络出现拥塞的。

TCP的拥塞判断

TCP的判断网络是否发生拥塞有两种方法:

1、是否发生超时
如果过了超时重传时间发送方仍未收到确认报文,那么TCP就会认为当前网络已经发生拥塞。采用慢开始算法进行处理。

2、收到连续3个重复的ACK报文
如果发送方收到了连续3个重复的ACK报文,那么TCP也会认为当前网络发生了拥塞。采用快恢复算法进行处理。

TCP拥塞控制的方法

TCP的拥塞控制方法一共有4种:

1、慢开始
2、拥塞避免
3、快重传
4、快恢复

基于窗口的拥塞控制

拥塞窗口

TCP连接中发送方会维护一个叫拥塞窗口(cwnd)的状态变量。

拥塞窗口的大小取决于网络的拥塞程度,并动态地变化着,发送方会使自己的发送窗口等于拥塞窗口。

慢开始

慢开始算法的思路是先发送少量数据探探路,然后慢慢地增大拥塞窗口的大小。

假如拥塞窗口cwnd初始值为1,之后每收到1个ACK,拥塞窗口+1。

慢启动只是初始时发送速度慢,但实际上慢启动的数据发送速度增长是非常地快的。

在慢启动算法中,每经过一个传播轮次,拥塞窗口就会加倍。

为了不让拥塞窗口增长过快,TCP引入了慢启动门限(ssthresh),当拥塞窗口大小超过这个门限时,就不再按慢开始的算法增大拥塞窗口的大小了,而是改用拥塞避免算法

拥塞避免

每经过一个往返时间RTT,就把发送方的拥塞窗口+1。

即拥塞窗口按线性规律缓慢增大,这要比慢开始算法的拥塞窗口增长速率缓慢很多。

快重传

快重传算法可以让发送方尽早知道发生了个别数据段的丢失。

按照快重传算法,假如接收方收到了M1数据段和M2数据段,然后没有收到M3数据段就收到了M4数据段,那么接收方会重复发送M2确认报文,提醒发送方M3数据段已丢失。

在快重传算法中,发送方一旦收到连续3个重复的确认报文,就会立即重新发送丢失数据段。

快恢复

当发送方连续收到3个重复的确认报文时,发送方就知道当前发生了个别数据段的丢失,但网络很可能还没有发生拥塞,若采用慢开始算法速率下降过于严重,因此采用快恢复算法以缓解当前网络状态。

快恢复算法具体流程:
1、慢开始门限值改为当前拥塞窗口/2。

2、新拥塞窗口=慢开始门限。

3、开始执行拥塞避免算法,使拥塞窗口缓慢地线性增大。

TCP拥塞控制总体流程图

TCP拥塞控制综合例子

下图是非常经典的TCP拥塞控制例子,运用到了4种拥塞控制算法,可以说掌握了下图,就基本掌握了TCP的4种拥塞控制方法。

一开始时,TCP采用慢开始算法逐渐增大拥塞窗口的大小。

到第1个点时,拥塞窗口达到慢开始门限值,开始采用拥塞避免算法继续增大拥塞窗口的大小。

到第2个点时,发生了超时,此时TCP认为网络已经发生了拥塞,开始采用慢开始算法重新缓慢增大拥塞窗口。

到第3个点时,拥塞窗口达到慢开始门限值,开始采用拥塞避免算法继续增大拥塞窗口的大小。

到第4个点时,发送方收到了连续3个重复的ACK确认报文,TCP采用快恢复算法进行处理。

【计算机网络】-TCP的拥塞控制及拥塞控制方法相关推荐

  1. 计算机网络TCP拥塞控制窗口大小变化、重传、滑动窗口、流量控制等

    转载自:[计算机网络] - TCP 重传.滑动窗口.流量控制.拥塞控制_3000~3500的数据早已被接收了,因为 ack 都到了 4000 了,已经意味着 4000 之前__浮生_的博客-CSDN博 ...

  2. 计算机网络(10)-----TCP的拥塞控制

    TCP的拥塞控制 拥塞(congestion) 在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络的性能就要变坏. 拥塞控制 拥塞控制就是防止过多的数据注入到网络中,这样可以使网 ...

  3. TCP协议-TCP的拥塞控制

    一.拥塞控制概述 TCP模块除了要进行流量控制外,还有一个重要的任务,就是提高网络利用率,降低丢包率,并保证网络资源对每条TCP连接的数据流的公平性.这就是拥塞控制要解决的问题. 在计算机网络中的链路 ...

  4. TCP的拥塞控制简介

    文章目录 前言 摘要 背景知识 拥塞控制简介 慢启动 拥塞避免 快速恢复 TCP拥塞控制算法 TCP Tahoe与Reno 运行机制对比分析 TCP NewReno与SACK 运行机制对比分析 TCP ...

  5. 计算机网络-TCP协议

    目录 1 概述 2 TCP的主要特点 3 TCP的连接 4 可靠传输的工作原理 4.1 停止等待协议 4.1.1 无差错情况 4.1.2 出现差错 4.2 自动重传请求ARQ 4.3 连续 ARQ 协 ...

  6. TCP的拥塞控制(详解)

    在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络性能就要变坏,这种情况就叫做网络拥塞. 在计算机网络中数位链路容量(即带宽).交换结点中的缓存和处理机等,都是网络的资源. 若出 ...

  7. 【网络通信与信息安全】之深入解析TCP的“拥塞控制”原理

    一.前言 ① TCP 与 UDP 概念 在涉及到网络知识的面试中,TCP 和 UDP 是经常被提及的两个概念,它们是 OSI 模型中的运输层中的协议: TCP 全称为传输控制协议.这种协议可以提供面向 ...

  8. 万字长文 | 全(小区局域)网最强 TCP/IP 拥塞控制总结

    来源 | 后端技术指南针 头图 | CSDN付费下载自视觉中国 先唠唠嗑 在正式开始文章技术点之前,想先聊一下我对面试中的TCP/IP问题的一些拙见,希望对盆友们有所帮助. 在招聘岗位描述中,几乎必然 ...

  9. 计算机网络 TCP协议如何保证可靠传输

    目录 TCP如何保证可靠传输 TCP以段为单位发送数据 重传机制 超时重传 重发超时如何确定 快速重传 SACK 的引入是为了解决什么问题? D-SACK 又是什么东西? ARQ协议 停止等待ARQ协 ...

最新文章

  1. 电动滑板改装 特斯拉电机 120A FVT电调的使用
  2. adb shell dumpsys 命令 查看内存
  3. jQuery的Ajax初识
  4. 修改默认runlevel
  5. python函数设置默认参数_Python教程如何设置函数的默认参数
  6. Mr.J--蓝桥杯--明明的随机数
  7. comsol线圈不能加电流激励_comsol里面如何绘制三维的激励线圈?
  8. Linux C面试题(内存管理)
  9. android发送短信界面,android调用系统发送短信 和 已发送短信界面
  10. uiautomator2遍历子元素
  11. 原神改文件换服务器,原神B服怎么转成官服
  12. MySQL数据库基础——数据库基础
  13. SysinternalsSuite
  14. 数字图像处理-常考算法代码-详细注释
  15. 初识C语言:多组输入的用法
  16. 成君忆 易中天 三国专家网上博斗
  17. Java面向对象笔记 • 【第11章 Swing高级应用】
  18. 智力题:36匹马,6条跑道,没有计时器,至少需要多少次选出最快的三匹马
  19. 考研报名登录显示服务器错误,2018年考研报名常见问题:填写网报信息
  20. android switch设置背景文字,switchView

热门文章

  1. java龙世界禁忌之恋灵魂大殿_《龙世界-禁忌之恋》完美图文攻略
  2. 【C语言】贪吃蛇游戏的实现(一)
  3. Vue3 项目遇到的问题
  4. 如何用Windows命令提示符(cmd.exe)进入指定目录
  5. word格式化字符技巧
  6. .NET Core API网关Ocelot(十四)【转换Claims,日志,跟踪】
  7. ORACLE日期函数浅谈
  8. 华为机考1-54题总结
  9. 国产化服务器安装Mysql数据库
  10. JavaScript 实现表格隔行变色