• TCP/IP(十四)流量控制


    一  流量控制

    说明: 本文只是'原理'铺垫,没有用'tcpdump+wiresahrk'鲜活的案例讲解,后续'补充'

    ①   基本概念

    流量控制: TCP 通过'接受方实际能接收的数据量'来控制'发送方''窗口'大小

    ②   正常传输过程

    1. 背景:
    2. 1、客户端是'接收方',服务端是'发送方' --> '下载'
    3. 2、假设接收窗口和发送'窗口相同',都为 '200'
    4. 3、假设两个设备在整个'传输过程'中都保持'相同'的窗口大小,'不受'外界'影响'
    5. '可用'窗口大小 = SND.WND -(SND.NXT - SND.UNA)

    '原理'解读

    ③  操作系统缓冲区与滑动窗口的关系   重点

    思考: 操作系统的缓冲区是'如何影响'发送'窗口'和接收'窗口'的呢?

    1. 比较常见'能影响'接受方的'可用窗口发生变化'的因素,有'如下'几个:
    2. 1、接受方的应用程序'没办法'及时读取数据,此时会影响'滑动窗口'大小值
    3. 2、接受方的'系统资源'非常紧张,操作系统可能'直接减少'可用窗口大小的'缓存'空间
    4. +++++++++++++++ "案例1" +++++++++++++++
    5. 发送窗口和接收窗口'初始'大小为 '360' --> '发送窗口'

    根据上图的'流量'控制,说明"案例1"每个过程:

    +++++++++++++++  "案例2"  +++++++++++++++

    1. 根据上图的'流量'控制,说明"案例2"每个过程:
    2. 重点:
    3. 1、TCP 规定是'不允许'同时减少缓存又收缩窗口的;
    4. 2、而是采用'先收缩'窗口,过段时间'再减少缓存',这样就可以'避免了丢包'情况

    ④  窗口关闭

    1、窗口关闭的'概念'

    2、窗口关闭'潜在''危险'

    3、TCP 是'如何解决窗口关闭'时,潜在的'死锁'现象呢?

    ⑤  糊涂窗口综合症

    1、'概念'

    2、糊涂窗口综合症'案例'讲解,考虑'以下'场景:

    思考1:怎么让接收方'不通告'小窗口呢? --> '了解即可'

    思考2: 怎么让'发送方'避免发送'小数据'呢?

  • 相关阅读:
    PyTorch编译尝试笔记
    Java版企业电子招标采购系统源码—企业战略布局下的采购寻源
    Python数据攻略-SQL和Mongodb的CRUD方法汇总
    服装PLM解决方案能带给企业什么?
    网络编程启蒙
    Linux系统下建立Socket聊天服务器
    Android开发基础——广播机制
    Nginx入门
    webpack几个插件的安装使用
    尚好房 07_前端房源展示
  • 原文地址:https://blog.csdn.net/wzj_110/article/details/133796710