被问了一个奇怪的问题:TCP 流量控制和拥塞控制的区别?

TCP 流量控制和拥塞控制的区别?

今天,被问了一个这样的奇怪的问题:TCP 流量控制和拥塞控制的区别?

两者的控制层面不一样,TCP 流量控制是端对端的控制,拥塞控制是网络层面的控制

  • 流量控制:这是一个端对端的控制,主要控制避免发送方发送过多的数据给接收方,以至于接收不过来的情况,核心是通过滑动窗口的机制,接收方在 ACK 报文中告诉发送方自己的接收窗口的大小,也就是可接受的数据量,让发送方不要发送过多的数据
  • 拥塞控制:这是网络层面的控制,主要目的是防止过的的数据包同时在网络上传输,以至于网络拥塞。主要是通过慢启动,拥塞避免,拥塞发生,超时重传和快速重传和快启动等算法实现的

所以,流量控制是为了保护接收方不被数据淹没,拥塞控制是为了保护网络不被拥塞

流量窗口是怎么设计的?解决什么问题?

发送方和接收方在各自的内核中都有一个缓冲区,各自的缓冲区中又都有一个窗口,发送方缓冲区的窗口大小表示可以发送的最大数据量,接收方缓冲区的窗口大小表示可以接受的最大数据量

  • 发送方有了发送窗口后,就可以不用等待已发送数据的确认报文,就可以继续发送下一条报文,提高发送的效率
  • 接收方有了发送窗口后,就可以告诉发送方自己可接受的数据量,避免发送方数据过快,实现流量控制
相关推荐
say_fall3 分钟前
【Linux系统编程】Linux进程信号:从“外卖到了“到内核里的一张位图
linux·运维·服务器·车载系统·智能硬件
坤坤子吖28 分钟前
Linux网络编程:UDP进阶,从字典服务器到简单聊天室
linux·服务器·网络·c++·笔记·学习
FungLeo1 小时前
成为全栈·基础补充·Linux 服务器入门
linux·运维·服务器·ssh·部署·成为全栈
爱和冰阔落1 小时前
【Linux网络】TCP 服务器怎么写?从 listen、accept 到 read/write,手写完整 Echo Server
linux·运维·服务器·网络
冯小鸟的探戈2 小时前
电脑重生之安装xp系统
运维·服务器·电脑
瑞克-桑切斯11 小时前
7、MySQL 慢查询排查与优化实战指南
java·服务器·数据库
honsor11 小时前
SNMP 读取以太网温湿度传感器数据,监控平台对接实操
物联网·网络协议·tcp/ip
vibecode12 小时前
网站服务器失去响应怎么解决?我把连接超时和读超时这两段计时拆开跑了一遍
运维·服务器
迪康Defender14 小时前
终端供应链安全:应用白名单与软件正版化检测落地|终端安全治理实践
运维·服务器·网络·安全·web安全·自动化·运维开发
Yves..14 小时前
HTTP 协议学习笔记:从报文结构到抓包实践
网络协议·http·fiddler