当前位置: 首页 > news >正文

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

目录

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 的通信机制(四) -- 流量控制 和 拥塞控制 》

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

http://www.lryc.cn/news/271479.html

相关文章:

  • 听GPT 讲Rust源代码--library/portable-simd
  • CMake入门教程【基础篇】CMake+Minggw构建项目
  • 2024年原创深度学习算法项目分享
  • Linux自定义shell编写
  • 堆的应用:堆排序和TOP-K问题
  • element表格排序功能
  • HNU-Java程序设计基础训练-2023
  • 数据库和数据库编程
  • 爬虫基础一(持续更新)
  • 右键菜单“以notepad++打开”,在windows文件管理器中
  • JSON.parseObject强制将自动转化的Intage型设置为Long型
  • Redis的集群模式:主从 哨兵 分片集群
  • Note: An Interesting Festival
  • iview表格固定列横向滚动条无法拖动问题
  • Python序列之集合
  • 智慧园区物联综合管理平台之架构简述
  • 国科大图像处理2023速通期末——汇总2017-2019
  • oracle 9i10g编程艺术-读书笔记2
  • PACC:数据中心网络的主动 CNP 生成方案
  • 我最喜欢的趣味几何书-读书笔记
  • Stable Diffusion模型概述
  • 二叉树详解(深度优先遍历、前序,中序,后序、广度优先遍历、二叉树所有节点的个数、叶节点的个数)
  • C++日期类的实现
  • B+树的插入删除
  • c# Avalonia 绘图
  • springboot 双数据源配置
  • Redis内存使用率高,内存不足问题排查和解决
  • bootstrap5开发房地产代理公司Hamilton前端页面
  • 2024年Mac专用投屏工具AirServer 7 .27 for Mac中文版
  • 关于MySql字段类型的实践总结