• TCP中发送数据的情况


    发送窗口和接收窗口的本质,可以叫做“TCP 的生产者 - 消费者”模型,这个只是单个网络连接的数据传输。发送窗口相当于生产者,接收窗口相当于消费者。TCP必须考虑多个连接共享在有限的带宽上,兼顾效率和公平性的控制,而拥塞控制才是多个连接在实际网络传输中的模型。
    拥塞控制常用的算法有“慢启动”,它通过一定的规则,慢慢地将网络发送数据的速率增加到一个阈值。超过这个阈值之后,慢启动就结束了,另一个叫做“拥塞避免”的算法登场。在这个阶段,TCP 会不断地探测网络状况,并随之不断调整拥塞窗口的大小。
    在任何一个时刻,TCP 发送缓冲区的数据是否能真正发送出去,至少取决于两个因素,一个是当前的发送窗口大小,另一个是拥塞窗口大小,而 TCP 协议中总是取两者中最小值作为判断依据。
    发送窗口反应了作为单 TCP 连接、点对点之间的流量控制模型,它是需要和接收端一起共同协调来调整大小的;而拥塞窗口则是反应了作为多个 TCP 连接共享带宽的拥塞控制模型,它是发送端独立地根据网络状况来动态调整的。
    三个重要概念:
    糊涂窗口综合征:应用进程间传送的报文段很小的情况,这种现象产生的原因是发送端应用进程产生数据很慢、或接收端应用进程处理接收缓冲区数据很慢,或二者兼而有之。
    Nagle算法:限制大批量的小数据包同时发送,为此,它提出,在任何一个时刻,未被确认的小数据包不能超过一个。
    延时 ACK: 在收到数据后并不马上回复,而是累计需要发送的 ACK 报文,等到有数据需要发送给对端时,将累计的 ACK捎带一并发送出去。

    此文章为11月Day 17学习笔记,内容来源于极客时间《网络编程实战》

  • 相关阅读:
    Java虚拟机(JVM)框架
    分治类dp:1017T3
    爱上开源之golang入门至实战-第二章语言基础-变量
    Linux命令--权限(chmod、chown)--使用/实例
    嵌入式开发中,嵌入式硬件和软件有什么区别?
    疫情集中隔离
    设计模式_责任链
    leetcode-621. 任务调度器
    Android View绘制基础
    git切换分支
  • 原文地址:https://blog.csdn.net/qq_42108074/article/details/134472316