当前位置:网站首页>传输层 使用滑动窗口实现流量控制
传输层 使用滑动窗口实现流量控制
2022-06-30 19:18:00 【富士康质检员张全蛋】
滑动窗口机制
流量缓冲:解决速度不匹配问题(客户端和服务器,这两端的速度是完全不一致的,机器性能不一致,这个时候处理的速度是不配的)
TCP 利用滑动窗口实现流量控制。流量控制是为了控制发送方发送速率,保证接收方来得及接收。
TCP会话的双方都各自维护一个发送窗口和一个接收窗口。接收窗口大小取决于应用、系统、硬件的限制。发送窗口则取决于对端通告的接收窗口。
接收方发送的确认报文中的window字段可以用来控制发送方窗口大小,从而影响发送方的发送速率。将接收方的确认报文window字段设置为 0,则发送方不能发送数据。

TCP头包含window字段,16bit位,它代表的是窗口的字节容量,最大为65535。这个字段是接收端告诉发送端自己还有多少缓冲区可以接收数据。于是发送端就可以根据这个接收端的处理能力来发送数据,而不会导致接收端处理不过来。接收窗口的大小是约等于发送窗口的大小。
流量控制是指发送端给接收端发的太快了,接收端可以告诉它发慢点。(滑动窗口实现流量控制,流量控制是接收方控制发送方)
接收端设置窗口,发送端根据接收端的窗口来设置发送窗口,在整个通信过程当中窗口是可以调整的。

在上面建立连接的时候就有窗口字段64240个字节,最大的数据段为1460,网卡的最大传输单元MTU数据链路层的最大传输单元是1500个字节,网络层的首部为20个字节,传输层的首部是20个字节,那么数据就变为1460个字节。那么滑动窗口64240/1460就可以连续发44个数据包。
同时还可以支持选择性确认SACK_PERM=1。
在建立TCP连接的时候就可以协商这些参数,接收窗口是多大,MSS是多少,然后支持选择性确认。
确认里面数据的长度都是为0的,在给确认的时候就指定了窗口的大小,可以看到窗口是可以调整大小的。接受窗口变小那么发送窗口也随之变小,发送端发的就不那么快了。

b告诉a,它的接受窗口是400,段最大为100个字节,在发的时候1 2到了 3丢了,给它确认,让它发送第三个数据包,然后窗口开始移动,然后发第4 5个再发第3个,收到之后给它确认。。。。。。。。
窗口变为0之后就不再发了,发送端就停止了,处理之后再发确认,窗口再调整为400。
边栏推荐
- Safe holidays without holidays, VR traffic makes children travel safely | Guangzhou Sinovel viewpoint
- 达梦数据库重新初始化实例操作记录
- Playwright - 滚动条操作
- Go language learning tutorial (10)
- 腾讯会议应用市场正式上线,首批入驻超20款应用
- 【LeetCode】【SQL】刷题笔记
- Warmup预热学习率「建议收藏」
- VR全景中特效是如何编辑的?细节功能如何展示?
- SM2246EN+闪迪15131
- discuz 论坛提速之删除data/log下的xxx.php文件
猜你喜欢

二叉树终章

在广州的朋友,有机会可以参加下

《微信小程序-基础篇》带你了解小程序中的生命周期(二)

KubeVela 1.4:让应用交付更安全、上手更简单、过程更透明

VoIP Push 在海外音视频业务中的应用

盘点华为云GaussDB(for Redis)六大秒级能力

【LeetCode】【SQL】刷题笔记

【已解决】抖音如何取消关注已注销的账户

Smarter! Airiot accelerates the upgrading of energy conservation and emission reduction in the coal industry

The former king of fruit juice sold for 1.6 billion yuan
随机推荐
究竟有哪些劵商推荐?另外,手机开户安全么?
Tencent conference application market was officially launched, with more than 20 applications in the first batch
Audio and video architecture construction in the super video era | science and Intel jointly launched the second season of "architect growth plan"
A detailed explanation of the implementation principle of go Distributed Link Tracking
手机炒股开户安全嘛!?
History, selection strategy and in-depth evaluation of note taking software
Simple usage of LinkedList (2022.6.13-6.19)
[multithreading] use the thread pool to implement a simple thread pool
“更福特、更中国”拨云见日,长安福特王牌产品订单过万
盘点华为云GaussDB(for Redis)六大秒级能力
qt中toLocal8Bit和toUtf8()有什么区别
matlab 将三角剖分结果保存为STL文件
更智能!AIRIOT加速煤炭行业节能减排升级
在广州的朋友,有机会可以参加下
#夏日挑战赛#【FFH】HarmonyOS手机遥控Dayu开发板相机
力扣------统计包含给定前缀的字符串
WordPress 博客使用火山引擎 veImageX 进行静态资源 CDN 加速(免费)
Await and async
pycharm从安装到全副武装,学起来才嗖嗖的快,图片超多,因为过度详细!
VR全景中特效是如何编辑的?细节功能如何展示?