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

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

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

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

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

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

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

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

  • 发送方有了发送窗口后,就可以不用等待已发送数据的确认报文,就可以继续发送下一条报文,提高发送的效率
  • 接收方有了发送窗口后,就可以告诉发送方自己可接受的数据量,避免发送方数据过快,实现流量控制
相关推荐
Linux运维老纪1 小时前
Go语言之十条命令(The Ten Commands of Go Language)
服务器·开发语言·后端·golang·云计算·运维开发
真想骂*1 小时前
iOS开发指南:保护服务器密码的安全存储与处理技巧
服务器·安全·ios
智联视频超融合平台1 小时前
WebRTC 在视频联网平台中的应用:开启实时通信新篇章
网络协议·音视频·webrtc·实时音视频·视频编解码
Antonio9151 小时前
【Linux】环境变量
linux·运维·服务器
域智盾-运营小韩1 小时前
怎么管理电脑usb接口,分享四种USB端口管理方法
服务器·网络·负载均衡
法迪2 小时前
初学Linux电源管理
linux·运维·服务器·功耗
shelby_loo2 小时前
在 Ubuntu 下通过 Docker 部署 MySQL 服务器
服务器·ubuntu·docker
komo莫莫da2 小时前
第5章——与HTTP协作的Web服务器
服务器·前端·http
阿隆ALong3 小时前
亚矩阵云手机:跨境出海直播的全方位利器
大数据·服务器·网络安全·矩阵·云计算·arm·信息与通信
蜜獾云4 小时前
vscode通过ssh连接服务器实现免密登录
服务器·vscode·ssh