<JavaEE> TCP 的通信机制(三) -- 滑动窗口
发布时间:2023年12月27日
目录
TCP的通信机制的核心特性
四、滑动窗口
1)什么是滑动窗口?
2)滑动窗口的作用是什么?
3)批量传输出现丢包如何处理?
1> 接收端ACK丢包
2> 发送端数据包丢包
4)适用性
TCP的通信机制的核心特性
TCP的通信机制最核心的特性是可靠传输。 |
TCP至少通过以下机制来保证传输的可靠性,在保证可靠性的同时也采取一些机制来提升传输效率: |
<1> 确认应答 | <6> 阻塞控制 |
<2> 超时重传 | <7> 延时应答 |
<3> 连接管理 | <8> 捎带应答 |
<4> 滑动窗口 | <9> 面向字节流 |
<5> 流量控制 | <10> 异常情况处理 |
阅读指针 -> 《 TCP 的通信机制(二) -- 连接管理(三次握手和四次挥手 》<JavaEE> TCP 的通信机制(二) -- 连接管理(三次握手和四次挥手)-CSDN博客介绍了TCP协议中的“连接管理”机制,即“三次握手”建立连接和“四次挥手”断开连接https://blog.csdn.net/zzy734437202/article/details/135231067
四、滑动窗口
1)什么是滑动窗口?
无需等待确认应答,可以继续发送数据的最大值称为窗口大小,窗口越大,网络吞吐率就越高。 |
在传输数据时,批量进行数据传输,达到批量传输上限后,再等待ACK。 |
此后每返回一个ACK,则可以发送出一个后续数据。类似于窗口滑动的效果。 |
为了维护滑动窗口,操作系统内核开辟了发送缓冲区,用于记录已发送的数据还有哪些尚未接收到ACK。接收到ACK的数据,才能从缓冲区删除。 |
2)滑动窗口的作用是什么?
作用是批量传输数据,缩短确认应答的等待时间,提高传输效率。 |
3)批量传输出现丢包如何处理?
有两种丢包情况:接收端ACK丢包 和 发送端数据包丢包。 |
1> 接收端ACK丢包
传输过程中,ACK丢包并不需要重传数据。 |
TCP的数据报格式中存在序号和确认序号两个属性。发送端接收到后续的ACK,就意味着这个ACK记录的确认序号之前的数据包都已经正常接收。 |
2> 发送端数据包丢包
还是通过TCP的数据报格式中的序号和确认序号两个属性进行判断和处理。 |
传输过程中,发送端数据包丢包,则接收端接收不到对应的数据包的序号。 |
此时接收端会重复向发送端发送包含同一确认序号的ACK,当发送端接收到三次这个同一确认序号的ACK时,就会重新发送这个确认序号的数据包。 |
中间数据包的丢包,并不影响后续数据包的传输,这些数据包会保存在接收端的接收缓存区中。当接收端正常接收到重发的丢包数据后,就会按序号顺序从接收缓存区中读取数据。 |
上述重传过程中,只会重传丢包的数据包,没有其他冗余的传输操作。这种机制被称为“高速重发机制”,也称为“快重传”。 |
4)适用性
在数据量小的场景下,使用普通的确认应答和超时重传即可。 |
在数据量大的场景下,使用活动窗口更合适。 |
阅读指针 -> 《?TCP 的通信机制(四) -- 流量控制 和 拥塞控制?》
链接生成中.......
文章来源:https://blog.csdn.net/zzy734437202/article/details/135235928
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:chenni525@qq.com进行投诉反馈,一经查实,立即删除!