图文秒懂TCP滑动窗口

简介: 小马无意中发现一个比较清晰的TCP滑动窗口视频教程,总结后在此分享,图文结合,一分钟即可秒懂窗口滑动原理,再也不怕面试官吓唬你了。视频源地址点这里,感谢原作者分享。

小马无意中发现一个比较清晰的TCP滑动窗口视频教程,总结后在此分享,图文结合,一分钟即可秒懂窗口滑动原理,再也不怕面试官吓唬你了。视频源地址点这里,感谢原作者分享。

TCP如何实现可靠传输和流量控制

1.以字节为单位的滑动窗口技术(主要解决流量控制)

2.重传机制

滑动机制

发送窗口只有收到发送窗口内字节的ACK确认,才会移动发送窗口的左边界。

接收窗口只有在前面所有的段都确认的情况下才会移动左边界。当在前面还有字节未接收但收到后面字节的情况下,窗口不会移动,并不对后续字节确认。以此确保对端会对这些数据重传。

遵循快速重传、累计确认、选择确认等规则。

发送窗口大小由接收窗口接收缓存大小决定。比如发送方发的window size = 20;就是接收端最多发送20字节,这个20一般就是发送方接收缓存的大小。

百科滑动窗口协议在这里,但小马觉得要是图文结合更易懂一点。

举个栗子

假设A往B发送数据包(比如一个文件,整个是1-32字节),接收窗口大小20字节,当然实际可能是几千几万。参考教程。
image.png

A往B分别发送了窗口大小20字节内的数据包,4个。窗口大小外的数据包不能发送。
image.png

B发现收到的是连续的,就回复A说已经收到6了,下一个包可以发7了。此时的场景相当于我们下载文件时的临时文件,文件还没传完。
image.png

窗口后移(不用等窗口里的1-20全部确认发完才后移),并删除已确认的数据包1-6。后移后窗口中的数据21-26可以继续发送。
image.png

计算机程序可以处理1-6的数据包数据了。
image.png

如果发送过程中,7-9丢包。B只会发送到1-6的确认包,也就是下一个包是7。接收者B的选择性确认SACk告诉A哪一段缺失了,A只重发缺失的,后面已经确认收到的10-12不重发。未收到确认的数据包不能移窗口(收到12 但是前面不连续,所以不能后移,要等重发)。

A如果超时没有收到B回复,重发时间是有选择的,这个不深入了。

附上一个模拟动画:下载地址

网络通信原理(很详细易懂的教程)。

相关文章
|
6月前
|
网络协议 算法 网络性能优化
tcp拥塞控制整理
tcp拥塞控制整理
70 1
|
1月前
|
缓存 网络协议 算法
TCP的滑动窗口与拥塞控制
【10月更文挑战第7天】这段内容详细介绍了TCP协议中确保数据包可靠传输的机制,包括使用ID确保顺序性与累计确认、发送端与接收端的缓存管理、超时重传策略及自适应重传算法,以及拥塞控制机制如慢启动、拥塞避免和快速重传。
|
6月前
|
缓存 人工智能 算法
TCP的滑动窗口和拥塞控制
TCP的滑动窗口和拥塞控制
72 0
|
6月前
|
消息中间件 Kubernetes 网络协议
Tcp/ip 定时器与滑动窗口(持续更新)
Tcp/ip 定时器与滑动窗口(持续更新)
|
6月前
|
网络协议 Unix Linux
【Unity 3D】C#中Socket及TCP三次握手与四次挥手详解(超详细 图文解释)
【Unity 3D】C#中Socket及TCP三次握手与四次挥手详解(超详细 图文解释)
235 0
|
网络协议
TCP特性的滑动窗口,流量控制
TCP特性的滑动窗口,流量控制
|
缓存 网络协议 算法
窗口到底有多滑动?揭秘TCP/IP滑动窗口的工作原理
当涉及网络性能优化和数据传输可靠性时,TCP/IP滑动窗口是一个关键的技术。本文的摘要将深入揭示TCP/IP滑动窗口的工作原理,探讨其在确保数据准确性和实现高效通信方面的重要性。通过对滑动窗口大小、流控制和数据包确认机制的解析,我们将揭示如何通过优化窗口大小和流控制参数来提升网络性能。此外,我们还将介绍滑动窗口在解决网络拥塞和丢包问题方面的作用,以及如何通过精准的窗口调整实现零丢失、百分之百到达的数据传输。通过理解滑动窗口的工作原理,读者将能够更好地理解网络通信的内部机制,并为优化其应用程序的性能提供有价值的见解。
371 0
窗口到底有多滑动?揭秘TCP/IP滑动窗口的工作原理
|
网络协议 程序员 网络性能优化
动图图解 | UDP就一定比TCP快吗?
动图图解 | UDP就一定比TCP快吗?
126 0
|
存储 网络协议 网络性能优化
TCP 滑动窗口详解(非常实用)
TCP 滑动窗口详解(非常实用)
|
缓存 网络协议 网络性能优化