<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

相关推荐
TechWayfarer2 小时前
CDN智能调度实战:基于IP段归属查询实现电信/联通/移动流量分离(附Nginx Lua代码)
网络协议·tcp/ip·nginx
Vis-Lin2 小时前
BLE 协议栈:HCI ACL 数据详解
网络·物联网·网络协议·蓝牙·iot·ble
TechWayfarer2 小时前
攻防对抗:利用IP段归属查询快速定位攻击源并联动防火墙(iptables/UFW)自动封禁
网络·网络协议·tcp/ip
Predestination王瀞潞3 小时前
Java EE3-我独自整合(第二章:Spring IoC 入门案例)
数据库·spring·java-ee
一个有温度的技术博主3 小时前
网安实验系列三:信息收集之Ip收集
网络·网络协议·tcp/ip
Hello_Embed4 小时前
嵌入式上位机开发入门(五):UDP 编程 —— Server 端实现
笔记·单片机·网络协议·udp·嵌入式
计算机学姐4 小时前
基于SpringBoot的新能源充电桩管理系统
java·vue.js·spring boot·后端·mysql·spring·java-ee
她说..4 小时前
排查接口响应慢问题
java·jvm·spring boot·spring cloud·java-ee
会飞的大可5 小时前
服务间通信:OpenFeign vs Dubbo 的 RPC 选型
网络协议·rpc·dubbo
稻草猫.5 小时前
Spring AOP
java·后端·spring·java-ee·idea