图文秒懂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回复,重发时间是有选择的,这个不深入了。

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

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

相关文章
|
1月前
|
网络协议 算法 网络性能优化
tcp拥塞控制整理
tcp拥塞控制整理
38 1
|
1月前
|
缓存 人工智能 算法
TCP的滑动窗口和拥塞控制
TCP的滑动窗口和拥塞控制
33 0
|
1月前
|
消息中间件 Kubernetes 网络协议
Tcp/ip 定时器与滑动窗口(持续更新)
Tcp/ip 定时器与滑动窗口(持续更新)
|
1月前
|
网络协议 Unix Linux
【Unity 3D】C#中Socket及TCP三次握手与四次挥手详解(超详细 图文解释)
【Unity 3D】C#中Socket及TCP三次握手与四次挥手详解(超详细 图文解释)
89 0
|
7月前
|
缓存 网络协议 算法
图解TCP、UDP,流量控制,拥塞控制,一次看懂
图解TCP、UDP,流量控制,拥塞控制,一次看懂
|
8月前
|
网络协议
TCP特性的滑动窗口,流量控制
TCP特性的滑动窗口,流量控制
|
10月前
|
缓存 网络协议 算法
窗口到底有多滑动?揭秘TCP/IP滑动窗口的工作原理
当涉及网络性能优化和数据传输可靠性时,TCP/IP滑动窗口是一个关键的技术。本文的摘要将深入揭示TCP/IP滑动窗口的工作原理,探讨其在确保数据准确性和实现高效通信方面的重要性。通过对滑动窗口大小、流控制和数据包确认机制的解析,我们将揭示如何通过优化窗口大小和流控制参数来提升网络性能。此外,我们还将介绍滑动窗口在解决网络拥塞和丢包问题方面的作用,以及如何通过精准的窗口调整实现零丢失、百分之百到达的数据传输。通过理解滑动窗口的工作原理,读者将能够更好地理解网络通信的内部机制,并为优化其应用程序的性能提供有价值的见解。
180 0
窗口到底有多滑动?揭秘TCP/IP滑动窗口的工作原理
|
10月前
|
网络协议
TCP协议报头格式和滑动窗口
TCP协议报头格式和滑动窗口
60 0
TCP协议报头格式和滑动窗口
|
10月前
|
网络协议 程序员 网络性能优化
动图图解 | UDP就一定比TCP快吗?
动图图解 | UDP就一定比TCP快吗?
106 0
|
10月前
|
域名解析 缓存 网络协议
传输方式的分类【图解TCP/IP(笔记五)】
传输方式的分类【图解TCP/IP(笔记五)】
172 0