首页 > 其他分享 >TCP 的流量控制是怎么实现的

TCP 的流量控制是怎么实现的

时间:2023-10-19 19:03:00浏览次数:30  
标签:控制 字节 200 win 流量 发送 接受方 TCP 100

TCP 提供了一种机制,可以让发送端根据接收端的实际接收能力控制发送的数据量,这就是流量控制。

TCP 通过滑动窗口来控制流量,我们看下简要流程:

首先双方三次握手,初始化各自的窗口大小,均为 400 个字节。

TCP 的流量控制是怎么实现的_首部

假如当前发送方给接收方发送了200字节,那么发送方的SND.NXT 会右移200 个字节,也就是说当前的可用窗口减少了 200 个字节。

接受方收到后,放到缓冲队列里面,REV.WND =400-200=200 字节,所以win=200 字节返回给发送方。接收方会在 ACK 的报文首部带上缩小后的滑动窗口 200 字节。

发送方又发送 200 字节过来,200 字节到达,继续放到缓冲队列。不过这时候,由于大量负载的原因,接受方处理不了这么多字节,只能处理 100 字节,剩余的100 字节继续放到缓冲队列。这时候,REV.WND = 400-200-100=100 字节,即win=100 返回发送方。

发送方继续发送 100 字节过来,这时候,接收窗口 win 变为 0。

发送方停止发送,开启一个定时任务,每隔一段时间,就去询问接受方,直到 win 大于 0,才继续开始发送。

标签:控制,字节,200,win,流量,发送,接受方,TCP,100
From: https://blog.51cto.com/u_11344924/7941818

相关文章

  • 这可能是最全面的TCP面试八股文了
    计算机网络基础,考验一个程序员的基本功,也能更快的筛选出更优秀的人才。说说TCP的三次握手假设发送端为客户端,接收端为服务端。开始时客户端和服务端的状态都是CLOSED。最全面的Java面试网站第一次握手:客户端向服务端发起建立连接请求,客户端会随机生成一个起始序列号x,客户端向......
  • 传输层协议:TCP/IP协议,UDP的协议
    传输层:定义了⼀些传输数据的协议和端口号(WWW端口80等),如:TCP(传输控制协议,传输效率低,可靠性强,⽤于传输可靠性要求⾼,数据量⼤的数据),UDP(⽤户数据报协议,与TCP特性恰恰相反,⽤于传输可靠性要求不⾼,数据量⼩的数据,如QQ聊天数据就是通过这种⽅式传输的)。主要是将从下层(应用层)接收......
  • 【笔记】问题控制与管理&故障、问题、已知错误、变更请求之间的逻辑关系&问题管理流程
    【笔记】问题控制与管理&故障、问题、已知错误、变更请求之间的逻辑关系问题控制与管理与故障管理的尽可能快地恢复服多的目标不同,问题管理是要防止再次发生故障**例如你制作了一个报表,用户填写了问题数据进去,因此报错提示了,让用户换个数据或者和用户说不要这样填写的方法就算......
  • 国标GB28181视频平台LiteCVR接入云台控制接口,为何出现了延时?
    随着现代科学技术发展越来越迅速,我国安防领域开始不断顺应技术改革需求,对监控技术进行创新,应用和提高智能视频监控技术的功能性,进一步推动现代安防领域工作的有效发展。LiteCVR视频融合平台基于云边端一体化架构,部署轻快、功能灵活,平台可支持多协议、多类型设备接入,包括:国标GB28......
  • RX66T优化用于电机控制R5F566TFFGFP、R5F566TKGGFP、R5F566TKCGFP搭载第三代RXv3 CPU
    1、RX66T 框图2、描述RX66T32位MCU是基于第三代RXv3CPU内核的旗舰32位RXMCU系列中的首款产品。这些MCU优化用于电机控制,可满足实时性能和增强稳定性要求。这些特性帮助实现下一代智能工厂设备和智能家电中的逆变器控制。这些MCU还具有下一代设计中嵌入式AI所需的额外处理能......
  • TCP Retransmission
    TCPRetransmission造成的原因有哪些?-知乎https://www.zhihu.com/question/586578058/answer/2916704280在Wireshark抓包分析中,“TCPRetransmission”(TCP重传)和"TCPDupACK"(TCP重复确认)是两种不同的现象,表示了TCP通信中可能出现的问题。下面是它们的区别:TCPRetransmi......
  • 【每日一记】ACL基本概念(匹配流量、路由条目、书写、规则.....)
    个人名片:......
  • MQTT控制报文格式 -- PINGRESP – PING response
    PINGRESP数据包由服务器发送到客户端以响应PINGREQ数据包。这表明服务器还活着。该数据包没有可变包头和Payload,剩余长度值为0固定包头格式如下:Bit76543210byte1MQTTControlPackettype(13)Reserved 1101......
  • Laravel 代码重构:使用 Services, Events, Jobs, Actions 来重构控制器方法
    我听到关于Laravel最热门的问题之一是「如果构建项目」。如果我们缩小范围,它的大部分听起来像「如果逻辑不应该在控制器中,那么我们应该把它放在那里?」问题是这些问题没有单一的正确答案。Laravel给予了你自主选择结构的灵活性,这既是好事,也是坏事。你不会在官方的Laravel文档......
  • 分布式应用开发的核心技术系列之——基于TCP/IP的原始消息设计
    本文由葡萄城技术团队原创并首发。转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。前言本文的内容主要围绕以下几个部分:TCP/IP的简单介绍。消息的介绍。基于消息分类的传输格式(流类型和XML类型)。消息体系的组成。TCP/IP的简单......