前言
TCP在OSI七层模型中,属于第四层(传输层),帮我们处理了传输层的细节。包括限流、丢包、网络传输乱序等问题。那TCP到底是如何实现限流的呢?
如果你需要复习一下基础知识,请戳这里《TCP/IP基础十分钟入门》 ,博主比较懒,下周补上
接收端缓冲区被塞满
如果sender发送速度快,reciever处理速度慢。会发生什么事?
过一段时间,reciever的缓冲区被打满。
-
当reciever缓冲区被打满后,通过ack(win=0)告诉sender不要给我发送数据了,我处理不了了。
-
sender就会停止发送数据。
-
过一会,reciever处理数据后,缓冲区有了空闲空间。
-
通过ack声明自己的窗口大小
-
sender继续发送数据
滑动窗口出场
通过动画我们可以直观的看到窗口向右滑动,所以叫做滑动窗口。
分解动作
滑动前
图示都包含哪些信息呢?我们分解来看。