4.18、TCP滑动窗口

news/2024/10/30 13:35:13/

4.18、TCP滑动窗口

  • 1.滑动窗口的介绍
  • 2.滑动窗口通信的例子

1.滑动窗口的介绍

滑动窗口(Sliding window)是一种流量控制技术。早期的网络通信中,通信双方不会考虑网络的拥挤情况直接发送数据。由于大家不知道网络拥塞状况,同时发送数据,导致中间节点阻塞掉包,谁也发不了数据,所以就有了滑动窗口机制来解决此问题。滑动窗口协议是用来改善吞吐量的一种技术,即容许发送方在接收任何应答之前传送附加的包。接收方告诉发送方在某一时刻能送多少包(称窗口尺寸)。

TCP 中采用滑动窗口来进行传输控制,滑动窗口的大小意味着接收方还有多大的缓冲区可以用于接收数据。发送方可以通过滑动窗口的大小来确定应该发送多少字节的数据。当滑动窗口为 0时,发送方一般不能再发送数据报。

滑动窗口是 TCP 中实现诸如 ACK 确认、流量控制、拥塞控制的承载结构。

  • 窗口理解为缓冲区的大小
  • 滑动窗口的大小会随着发送数据和接收数据而变化。
  • 通信的双方都有发送缓冲区和接收数据的缓冲区
    • ;服务器:
      • 发送缓冲区(发送缓冲区的窗口)
      • 接收缓冲区(接收缓冲区的窗口)
    • 客户端
      • 发送缓冲区(发送缓冲区的窗口)
      • 接收缓冲区(接收缓冲区的窗口)

在这里插入图片描述

  • 发送方的缓冲区:
    • 白色格子:空闲的空间
    • 灰色格子:数据已经被发送出去了,但是还没有被接收
    • 紫色格子:还没有发送出去的数据
  • 接收方的缓冲区:
    • 白色格子:空闲的空间
    • 紫色格子:已经接收到的数据

2.滑动窗口通信的例子

在这里插入图片描述

# mss: Maximum Segment Size(一条数据的最大的数据量)
# win: 滑动窗口
1. 客户端向服务器发起连接,客户单的滑动窗口是4096,一次发送的最大数据量是1460
2. 服务器接收连接情况,告诉客户端服务器的窗口大小是6144,一次发送的最大数据量是1024
3. 第三次握手
4. 4-9 客户端连续给服务器发送了6k的数据,每次发送1k
5.10次,服务器告诉客户端:发送的6k数据以及接收到,存储在缓冲区中,缓冲区数据已经处理了2k,窗
口大小是2k
6.11次,服务器告诉客户端:发送的6k数据以及接收到,存储在缓冲区中,缓冲区数据已经处理了4k,窗
口大小是4k
7.12次,客户端给服务器发送了1k的数据
8.13次,客户端主动请求和服务器断开连接,并且给服务器发送了1k的数据
9.14次,服务器回复ACK 8194, a:同意断开连接的请求 b:告诉客户端已经接受到方才发的2k的数据
c:滑动窗口2k
10.1516次,通知客户端滑动窗口的大小
11.17次,第三次挥手,服务器端给客户端发送FIN,请求断开连接
12.18次,第四次回收,客户端同意了服务器端的断开请求

http://www.ppmy.cn/news/43940.html

相关文章

Linux系统调用之mmap,munmap函数

前言 如果,想要深入的学习Linux系统调用中的mmap,munmap函数,还是需要去自己阅读Linux系统中的帮助文档。 具体输入命令: man 2 mmap/munmap即可查阅到完整的资料信息。 mmap函数 在Linux中,mmap()是一个用于创建内存映射的系统…

Python 字符串format()格式化 / 索引

前言 嗨喽~大家好呀,这里是魔王呐 ❤ ~! 为了确保字符串按预期显示,我们可以使用 format() 方法对结果进行格式化。 字符串 format() format() 方法允许您格式化字符串的选定部分。 有时文本的一部分是你无法控制的,也许它们来自数据库或…

为什么这么优秀的女生要找男程序员做老公?

这篇文章呢我们谈一下 学计算机的男生这个问题 这个话题主要是来自于 有一个舞蹈老师 有一天跟我聊起来 说他的一个学生 长得非常漂亮是个女士 身材非常棒然后 在这边就是在温哥华这边呢 正在申请PR这个是没有问题的 有工作然后就想找一个程序员 老公那就是这样的一个状态 我说…

文章生成器写出来的原创文章

文章生成机器人 文章生成机器人是一种基于人工智能技术和自然语言处理算法的程序,可以自动地生成高质量、原创的文章。 文章生成机器人的优点如下: 提高工作效率:文章生成机器人能够在较短的时间内自动帮助用户生成大量的文章,提…

JAVA数据结构之顺序表线性表的顺序查找,线性查找的两种方式------JAVA入门基础教程

//顺序查找,线性查找 //int[] arr1 new int[]{34,54,3,2,65,7,34,5,76,34,67}; //int target 5; //方式1boolean flag true; for (int i 0; i < arr1.length; i) {if(arr1[i] target){System.out.println("找到了在"i"位置");flag false;break;} …

编辑文件/文件夹权限 - Win系统

前言 我们经常会遇到由于权限不够无法删除文件/文件夹的情况&#xff0c;解决方案一般是编辑文件/文件夹的权限&#xff0c;使当前账户拥有文件的完全控制权限&#xff0c;然后再进行删除&#xff0c;下文介绍操作步骤。 修改权限 查看用户权限 右键文件/文件夹&#xff0c;…

【从零开始学Skynet】基础篇(四):网络模块常用API

游戏服务端要处理客户端请求&#xff0c;作为服务端引擎&#xff0c;网络编程也是Skynet的核心功能。1、学习网络模块 skynet.socket模块提供了网络编程的API&#xff0c;常用的API如下表所示&#xff1a;Lua API说明socket.listen(address ,port)监听一个端口&#xff0c;返回…

MySQL 8.0 OCP (1Z0-908) 考点精析-性能优化考点1:sys.statement_analysis视图

文章目录MySQL 8.0 OCP (1Z0-908) 考点精析-性能优化考点1&#xff1a;sys.statement_analysis视图视图sys.statement_analysis各列定义视图sys.statement_analysis视图的定义视图sys.statement_analysis各列解释例题例题解析参考MySQL 8.0 OCP (1Z0-908) 考点精析-性能优化考点…