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

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

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

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

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

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

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

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

  • 发送方有了发送窗口后,就可以不用等待已发送数据的确认报文,就可以继续发送下一条报文,提高发送的效率
  • 接收方有了发送窗口后,就可以告诉发送方自己可接受的数据量,避免发送方数据过快,实现流量控制
相关推荐
艾莉丝努力练剑12 小时前
【Git:多人协作】Git多人协作实战:从同分支到多分支工作流
服务器·c++·人工智能·git·gitee·centos·项目管理
wanhengidc19 小时前
深度了解云手机是什么
运维·服务器·科技·智能手机·云计算
阿珊和她的猫20 小时前
HTTP 状态码 304:未修改(Not Modified)的深度解析
网络协议·http·状态模式
JJ1M821 小时前
用 Python 快速搭建一个支持 HTTPS、CORS 和断点续传的文件服务器
服务器·python·https
_Stellar21 小时前
Linux 服务器管理 根目录文件夹权限设置 基于用户组实现安全共享
linux·服务器·安全
LUCIFER1 天前
驱动开发:详细分析 DTB、DTS、DTSI、DTBO 的区别、用途及它们之间的关系
linux·服务器·驱动开发
jinxinyuuuus1 天前
局域网文件传输:P2P架构中NAT穿透、打洞与数据安全协议
网络协议·架构·p2p
BullSmall1 天前
Test Matrix:测试矩阵(IT 领域定义 + 设计实践 + 华为场景应用)
运维·服务器
q***16081 天前
IP地址、子网掩码(NETMASK)和网关(Gateway)
tcp/ip·gateway·智能路由器
liuyao_xianhui1 天前
版本控制器git--gdb/cgdb
linux·运维·服务器·git