TCP 滑动窗口详解(非常实用)

简介: TCP 滑动窗口详解(非常实用)

一、滑动窗口简介


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


       TCP 中采用滑动窗口来进行传输控制,滑动窗口的大小意味着接收方还有多大的缓冲区可以用于 接收数据。发送方可以通过滑动窗口的大小来确定应该发送多少字节的数据。当滑动窗口为 0 时,发送方一般不能再发送数据报。滑动窗口是 TCP 中实现诸如 ACK 确认、流量控制、拥塞控制的承载结构。


说明:


       1、可以把窗口理解为缓冲区的大小;


       2、滑动窗口的大小会随着发送数据和接收数据而变化;


       3、通信双方都有发送缓冲区和接收缓冲区;


               服务器:


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

                       接收缓冲区(接收缓冲发窗己)


               客户端:

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

                       接收缓冲区(接收缓冲发窗己)


二、滑动窗口图文解释


123db2b2ddbc422c8682369abb79ddc5.png

1、发送缓冲区


       白色格子:空闲的空间;


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


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


2、接收缓冲区


       白色格子:空闲的空间;


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


三、滑动窗口工作流程


e5f384f3833e440cb5137f50d7c02709.png

# mss:Maximum segment size(一条数据的最大的数据量)


# win:滑动窗口


1、客户端向服务器发起连接,客户端的滑动窗口是4096,一次发送的最大数据量是1460(第一次握手);


2、服务器接收连接情况,告诉客户端服务器的窗口大小是6144,一次发送的最大数据量10243(第二次握手);


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、第15、16次,通知客户端滑动窗口的大小;


11、第17次,第三次挥手服务器端给客户端发送FIN ,请求断开连接;


12、第18次,第四次回收各户端同意了服务器端的断开请求。


说明:1-3是三次握手,4-9是进行通信;第一次和第二次握手时不能带有通信数据,因为还没有建立连接,第三次握手时可以带通信数据;


四、TCP 通信图解


1、三次握手


c1306c1c8bca4ae3a47790a8497e25b3.png


2、四次挥手


191aca4e3022428198d2729f7c3f8701.png

相关文章
|
9月前
|
网络协议 算法 网络性能优化
TCP滑动窗口、流量控制及拥塞控制详解
TCP滑动窗口、流量控制及拥塞控制详解
|
4月前
|
缓存 网络协议 算法
TCP的滑动窗口与拥塞控制
【10月更文挑战第7天】这段内容详细介绍了TCP协议中确保数据包可靠传输的机制,包括使用ID确保顺序性与累计确认、发送端与接收端的缓存管理、超时重传策略及自适应重传算法,以及拥塞控制机制如慢启动、拥塞避免和快速重传。
|
8月前
|
网络协议 算法 Linux
TCP是如何进行拥塞控制的?
TCP是如何进行拥塞控制的?
89 1
|
9月前
|
网络协议 安全 Unix
详解 TCP 原理
详解 TCP 原理
|
8月前
|
网络协议 网络性能优化
TCP原理
TCP原理
74 0
|
9月前
|
网络协议 网络架构
什么是TCP重传?
TCP(Transmission Control Protocol)是一种可靠的、面向连接的传输层协议,用于在网络上可靠地传输数据。在TCP中,数据通过数据包进行传输,而TCP重传是TCP协议中的一个重要机制,用于确保数据的可靠传输。
63 1
|
9月前
|
缓存 人工智能 算法
TCP的滑动窗口和拥塞控制
TCP的滑动窗口和拥塞控制
105 0
|
9月前
|
网络协议 算法 网络性能优化
TCP 重传、滑动窗口、流量控制、拥塞控制
TCP 重传、滑动窗口、流量控制、拥塞控制
|
XML JSON 网络协议
【JaveEE】UDP 与 TCP 原理
1. 应用层协议(自定义组织格式) 对应后面的一个章节HTTP协议,应用层的代表协议,到时候重点讲解
121 0
|
网络协议 算法 5G
TCP 拥塞控制详解 | 7. 超越 TCP(下)
TCP 拥塞控制详解 | 7. 超越 TCP(下)
651 1
TCP 拥塞控制详解 | 7. 超越 TCP(下)