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

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

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

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

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

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

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

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

  • 发送方有了发送窗口后,就可以不用等待已发送数据的确认报文,就可以继续发送下一条报文,提高发送的效率
  • 接收方有了发送窗口后,就可以告诉发送方自己可接受的数据量,避免发送方数据过快,实现流量控制
相关推荐
阿阿越19 分钟前
Linux系统编程 -- 进程优先级、切换和调度
linux·运维·服务器
wanhengidc42 分钟前
云手机存在哪些技术瓶颈
运维·服务器·安全·智能手机·生活
IT19951 小时前
C++使用“长度前缀法”解决TCP“粘包 / 拆包”问题
服务器·网络·c++·tcp/ip
德迅云安全—珍珍1 小时前
物理服务器、云服务器、裸金属服务器的区别
运维·服务器
好记忆不如烂笔头abc1 小时前
超微服务器的ipmi调整风扇运行模式
运维·服务器
一个响当当的名号1 小时前
ASP.NET 期末突击
运维·服务器
@Wufan1 小时前
ubuntu服务器子用户(无sudo权限)安装/切换多个版本cuda
linux·服务器·ubuntu·cuda
studytosky1 小时前
Linux 基础开发工具(3):Git 控制与 GDB 调试实用指南
linux·运维·服务器·网络·数据库·git
while(1){yan}2 小时前
网络协议TCP
java·网络·网络协议·tcp/ip·青少年编程·电脑常识
yBmZlQzJ2 小时前
财运到内网穿透-群晖NAS安装(docker版本)
运维·经验分享·网络协议·docker·容器