文章目录

  • 一、TCP的流量控制
    • 1、利用滑动窗口实现流量控制【⭐⭐⭐】
    • 2、如何破解【死锁】局面❓
  • 二、TCP的拥塞控制
    • 1、拥塞控制的一般原理
      • ① 解决网络拥塞的误区
      • ② 拥塞控制与流量控制的关系【重点理解✔】
    • 2、TCP的拥塞控制方法
      • ① 接收窗口【rwnd】与拥塞窗口【cwnd】
      • ② 慢开始和拥塞避免算法
      • ③ 快重传和快恢复算法
  • 三、总结与提炼

一、TCP的流量控制

1、利用滑动窗口实现流量控制【⭐⭐⭐】

对于滑动窗口,在上面也提到过了,在流量控制这一块,就要利用到这个滑动窗口的机制去实现两个主机之间的通信

[流量控制的目的]:让发送方的发送速率不要太快,要让接收方来得及接收

然后来说一下很重要的例子,要注意理解,与后面的三次握手紧密度非常之大

  • 首先在建立连接的时候B就告诉了A:“我的接收窗口rwnd = 400”。表示主机B的接受窗口最多可以接收400B的大小,然后设置了一个100字节长的报文段,即DATA = 100,数据报文段序号的初始值设置为1,即seq = 1
  • 然后一开始主机A就向B发送了100B的大小,第一个字节序号为1

  • 然后再发100B,第一个字节序号为为101

  • 但是在接下来的数据接收中,A主机继续向B主机发送了从[201]开始的数据,但在途中丢失了。此时主机B发现主机A没有再发送数据过来了,因此向它发送过去一个确认报文段
  • 【ACK】是一个确认字段,我们在TCP的首部格式中有说到过,只有当ACK = 1 时ack才有效
  • 【ack】是表示当前主机希望收到的下一个数据的首字节号,即确认字段的值
  • 【rwnd】表示接收窗口,接收方主机B将此窗口设置为300,表示它只能接收300大小的数据字节,而且是从201开始到500的这段范围,也就限定了主机A的发送窗口从400->300

  • 因为前200个字节的数据主机B已经完全接收了,所以主机A将其发送窗口向前滑动200字节⛸,将首字节号设置为201B,窗口大小设置为300B。
  • 但是因为主机A没有接收到主机B从201~300字节的数据的回应,便开始启动这一块的超时计时器

  • 接下去主机A就向主机B分别发送了301B - 400B以及401B - 500B的数据,此时接收窗口就满了。

  • 但此时主机A发现前面201~300B的超时计时器时间到了,但是主机B还是没有发来相关的响应,于是重新发送了一次从201开始的这100个数据报文段,这也就是我们在上面讲到过的【超时重传】

  • 然后接下去主机B就发送了一条确认说“前面的500B我已经全部收到,现在我的接受窗口大小变为100,下一次希望收到501B为初始字节的数据”那此时主机A就可以确认主机B已经全部收到了500B之前的所有数据,于是便会将自己的发送窗口后移300个B,到501B的位置

  • 接下去主机A又发送过来符合的100B数据,于是主机B的接受窗口就满了。此时主机B就发送回一个确认报文说“前面的600B我已经全部收到,现在把你的发送窗口变为0,不要再发送数据了

从上面就可以看出主机B实现了三次流量控制,第一次将主机A的发送窗口大小从400->300,第二次从300->100,第三次就是从100->0,通过【rwnd】这个接收窗口的控制,就使得主机A的发送窗口呈现出一个动态变化的趋势,也就是我们前面在讲到窗口值是在动态变化的

2、如何破解【死锁】局面❓

  • 但是主机A要何时才能继续向主机B发送数据呢❓也就是当主机B重新发出一个新的窗口值为止。B主机会在它的接收缓存中腾出一些地方,把缓存当中的数据[主机A发送过来的600B]上交给了应用层后,它的接收缓存中就又可以有一些存储空间了
  • 于是这个时候主机B就又会向主机A发送一个rwnd = 400的报文段,告诉它你现在可以将自己的发送窗口设置为400,并且开始发送数据了。但是这个报文段呢若是在传输的过程中丢失了(〃>目<),主机A就收不到,此时主机B一直在等待主机A发送新的数据过来,主机A呢也等待主机B发送一个报文段过来告诉自己可以发数据了,于是它们就开始了一段漫长的等待.<{=....
  • 以上这个局面叫做【死锁】,是双方在数据传输过程中很可能会出现的一个现象

那要怎么去解决这个局面呢?

  • TCP为每一个连接都设有一个【持续计时器】,当连接的一方收到对方的零窗口通知后,就会启动这个计时器。也就是当前的主机A,接下去呢它会发送一个【探测报文段】,这个报文段中会有1B的数据,发送过去之后若是接收方给出的窗口值依旧是0,那么主机A就会重新设置持续计时器。
  • 在这个时候呢主机B可能已经收到了应用层的通告,可以继续接收数据了;如果不是零,那么死锁的僵局就可以打破了。

  • 从上述流量控制就可以看出TCP真的是非常的严谨,很好得控制了每一次数据的传输o((>ω< ))o

二、TCP的拥塞控制

1、拥塞控制的一般原理

首先来看看什么叫做【拥塞】

【拥塞】:在某段时间内,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络的性能就要变坏

计算机网络 | 谈谈TCP的流量控制与拥塞控制相关推荐

  1. 计算机网络 拥塞控制和流量控制,简述TCP的流量控制与拥塞控制

    1. TCP流量控制 流量控制就是让发送方的发送速率不要太快,要让接收方来的及接收. 原理是通过确认报文中窗口字段来控制发送方的发送速率,发送方的发送窗口大小不能超过接收方给出窗口大小. 考虑一种特殊 ...

  2. TCP协议——流量控制和拥塞控制

    ** 一.流量控制 ** 1.1 什么是流量控制 Sender won't overflow receiver's buffer by transmitting too much, too fast. ...

  3. 传输层TCP(流量控制和拥塞控制)

    转载自:https://blog.csdn.net/zgege/article/details/80445324 内容 关键字 流量控制 窗口大小,窗口扩大因子M,机理,窗口探测数据段 拥塞控制 拥塞 ...

  4. 简述TCP的流量控制与拥塞控制

    1. TCP流量控制  流量控制就是让发送方的发送速率不要太快,要让接收方来的及接收. 原理是通过确认报文中窗口字段来控制发送方的发送速率,发送方的发送窗口大小不能超过接收方给出窗口大小. 考虑一种特 ...

  5. 快速了解TCP的流量控制与拥塞控制

    有关TCP你不能不知道的三次握手和四次挥手问题,点我跳转 流量控制 1. 滑动窗口 数据的传送过程中很可能出现接收方来不及接收的情况,这时就需要对发送方进行控制以免数据丢失.利用滑动窗口机制可以很方便 ...

  6. TCP协议--流量控制,拥塞控制,MSS

    MSS MSS(Maximum segment size): 最大报文段长度.MSS应用于TCP协议中,代表的是单个TCP报文的可传输的最大数据长度.MSS的大小,和通信中的另一个参数MTU息息相关. ...

  7. 「 计算机网络 」TCP的粘包拆包问题

    「 计算机网络 」TCP的粘包/拆包问题 参考&鸣谢 大病初愈,一分钟看懂TCP粘包拆包 雷小帅 TCP 的粘包拆包以及解决方案 一乐说 文章目录 「 计算机网络 」TCP的粘包/拆包问题 一 ...

  8. 计算机网络之TCP详解

    计算机网络之TCP详解 前言:了解基本术语 一.TCP的三次握手和四次挥手 1. TCP的标志位 2. TCP的序列号和确认号 2.0 前言:作用 2.1 序列号(seq) 2.2 确认号(ack) ...

  9. 计算机网络:TCP滑动窗口的流量控制和拥塞控制

    1. 前言 最近在研究网络通信底层通信原理,所以不得不复习一波计算机网络传输控制协议.那么对于程序开发人员,了解底层网络通信原理,对于我们理解BIO.NIO网络通信十分重要.所以对于程序开发人员来说, ...

最新文章

  1. Spring Boot 2.x基础教程:Spring Data JPA的多数据源配置
  2. ORA-03113: end-of-file on communication channel Process ID: 252 Session ID: 1 Serial number: 3
  3. SAP成都研究院DevOps那些事
  4. java遇上html,JAVA遇见HTML——JSP篇:JSP内置对象(上)
  5. Spark采用分区方式读取数据库时partitionColumn, lowerBound, upperBound, numPartitions的理解与验证
  6. 三、MySql 数据类型
  7. 从np.random.normal()到正态分布的拟合
  8. 用于UML前端展示的jsuml2插件
  9. meanShift算法用于目标跟踪的优缺点
  10. 360浏览器不弹出java窗口_360浏览器不弹出新窗口怎么办
  11. ant +design+vue中You may use special comments to disable some warnings. Use // eslint-disable-next-li
  12. 冬天别忘晒太阳[整理]
  13. 目前为止学习过的循环解析过程
  14. 面对封号潮,跨境收款如何做到不受牵连?
  15. 【模拟电子技术Analog Electronics Technology 5】——晶体三极管基极和集电极电阻有什么作用?
  16. linux internet的图标找不到了,桌面internet图标不见了的五种解决方法
  17. 等保测评指导书-MySQL
  18. 动态分析和静态分析最主要的区别是什么?
  19. keil软件里打钩了create .HEX file但还是生成不了.HEX的故障排除。
  20. 精锐教育宣布暂停营业,又一教培行业巨头倒下

热门文章

  1. cocos2d-x 3.6版连连看加载资源
  2. c++怎么打开pptx文件_什么是PPTX文件(以及如何打开一个文件)?
  3. 2022熔化焊接与热切割操作证考试题库及模拟考试
  4. 011-减法指令SUB及对标志寄存器PSW的影响
  5. 电压源驱动和电流源驱动输入阻抗和输出阻抗小结
  6. Qt之模仿QQ主面板界面
  7. 辉涩笔记002—20200518
  8. S2B2C商城系统平台功能模块分析,加速医药制造企业数字化转型落地
  9. aect17定义_教育技术学AECT历史定义大全
  10. (翻译)承诺与一致原理(Commitment consistency)