<JavaEE> TCP 的通信机制(三) -- 滑动窗口

目录

TCP的通信机制的核心特性

四、滑动窗口

1)什么是滑动窗口?

2)滑动窗口的作用是什么?

3)批量传输出现丢包如何处理?

[1> 接收端ACK丢包](#1> 接收端ACK丢包)

[2> 发送端数据包丢包](#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 的通信机制(四) -- 流量控制 和 拥塞控制 》

<JavaEE> TCP 的通信机制(四) -- 流量控制 和 拥塞控制-CSDN博客介绍了 TCP 的通信机制 -- 流量控制 和 拥塞控制https://blog.csdn.net/zzy734437202/article/details/135257678

相关推荐
一天八小时2 小时前
计算机网络————(一)HTTP讲解
网络协议·计算机网络·http
逸狼9 小时前
【JavaEE进阶】Spring MVC(3)
spring·java-ee·mvc
哑巴语天雨14 小时前
前端面试-网络协议篇
websocket·网络协议·http·面试·https
ktkiko1115 小时前
Websocket——心跳检测
网络·websocket·网络协议
桃木山人15 小时前
BigData File Viewer报错
大数据·java-ee·github·bigdata
小梁不秃捏17 小时前
HTTP 常见状态码技术解析(应用层)
网络·网络协议·计算机网络·http
Lojarro18 小时前
JavaEE基础之- Servlet相关
java·servlet·java-ee
yourkin66619 小时前
HTTPS(下)
服务器·网络协议·https
逸Y 仙X19 小时前
Git常见命令--助力开发
java·大数据·git·java-ee·github·idea
元气满满的热码式19 小时前
logstash中的input插件(http插件,graphite插件)
网络·网络协议·http·elasticsearch·云原生