TCP 滑动窗口

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

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

时,发送方一般不能再发送数据报。

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

窗口理解为缓冲区的大小滑动窗口的大小会随着发送数据和接收数据而变化。

通信的双方都有发送缓冲区和接收数据的缓冲区

服务器:

发送缓冲区(发送缓冲区的窗口)

接收缓冲区支收缓冲区的窗口)

客户端:

发送缓冲区(发送缓冲区的窗口)

接收缓冲区(接收缓冲区的窗口)

滑动窗口:

发送方的缓冲区:

白色格子:空闲的空间

灰色格子:数据已经被发送出去了,但是还没有被接收

紫色格子:还没有发送出去的数据

接收方的缓冲区:

白色格子:空闲的空间

紫色格子:已经接收到的数据

#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数据以及接收到,存储在缓冲区中,缓冲区数据已经处理了2I窗口大小是2k

7.第12次,客户端给服务器发送了1k的数据

8,第13次,(第一次挥手)客户端主动请求和服务器断开连接,并且给服务器发送了1k的数据

9.第14次,(第二次挥手)服务器回复ACK8194,a:同意断开连接的请求b:告诉客户端已经接受到方才发的2k的数据c:滑动窗口2k

10.第15、16次,通知客户端滑动窗口的大小N

11.第17次,第三次挥手,服务器端给客户端发选N,请求断开连接

12.第18次,第四次挥手,客户端同意了服务器端的断开请求

有关mss 的协商,它通常发生在TCP的连接建立阶段,其中的 SYN 报文中包含了 mss 选项,以告知对方自己的最大分段大小,从而对方可以根据这个值设置自己的最大分段大小。这有助于避免在通信过程中产生过大的分段,提高数据传输的效率。

相关推荐
火车叼位6 小时前
Windows 双网关自动切换:Node.js + 计划任务实现旁路由优先
网络协议·程序员
小张小张爱学习7 小时前
网络编程高频面试题
网络
Shingmc38 小时前
【Linux】数据链路层
linux·服务器·网络
A hao8 小时前
IP65防护等级对户外LED显示屏意味着什么
网络
无心水8 小时前
【Hermes:进阶调优与性能优化】45、性能调优:降低延迟与 token 消耗的 7 个技巧 —— 让 Hermes 智能体跑得更快、花得更少
网络·性能优化·mcp协议·openclaw·养龙虾·hermes·honcho
小贾要学习9 小时前
【Linux】Linux高性能IO多路复用:epoll全方位详解(从原理到实战)
linux·服务器·网络
编程大师哥9 小时前
高效服务器管理工具 Xshell 8 下载安装配置设置详细教程
网络
想唱rap10 小时前
五种IO模型和非阻塞IO
linux·运维·服务器·网络·数据库·tcp/ip
Bruce_Liuxiaowei11 小时前
AI攻防时间差:当漏洞发现速度碾压修复速度— 聚焦技术核心
网络·人工智能·网络安全·ai·系统安全
方安乐11 小时前
交换机的自学机制
运维·服务器·网络