<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

相关推荐
测试员周周42 分钟前
【skills5】一份 spec 生成 k6/JMeter/Locust:性能压测 + 全站截图,上线前的双保险
功能测试·网络协议·测试工具·jmeter·http·自动化·集成测试
酣大智1 小时前
常用 IP 协议号大全(IP 层承载的上层协议)
网络·网络协议·tcp/ip
paopaokaka_luck8 小时前
基于Springboot3+vue3的旅游景区点评系统(AI审核、webSocket聊天、协同过滤算法、Echarts图形化分析)
websocket·网络协议·旅游
熬夜苦读学习10 小时前
基于websocket的多用户五子棋网页游戏
linux·服务器·网络·websocket·网络协议·游戏·五子棋
广州灵眸科技有限公司13 小时前
xfce桌面旋转说明:基于灵眸科技EASY-EAI-Nano-TB
网络·网络协议·tcp/ip·算法·php
GlobalSign数字证书13 小时前
ACME 的 HTTP 验证和 DNS 验证,哪种更适合自动续期?
网络·网络协议·http
XS03010613 小时前
JavaEE 核心知识
java·java-ee
微硬创新13 小时前
耐达讯自动化PROFINET转DeviceNet网关:医药包装生产线的合规与效率双保障
服务器·人工智能·物联网·网络协议·自动化·信息与通信
米尔的可达鸭14 小时前
深入操作系统 Socket 底层:EPOLLOUT 可写事件管理 + 非阻塞异步
开发语言·网络·数据结构·经验分享·websocket·网络协议
2501_9160074714 小时前
抓包工具对比 Charles、Fiddler、TraceEagle、Wireshark 与 Proxyman
前端·网络协议·ios·adb·https·fiddler·wireshark