一 滑动窗口
通信双方要'读懂'对方的'反馈'信息,并进行'调整'
TCP Window Full 和 TCP Zero Window
- ++++++++++++++ "特殊的场景" ++++++++++++++
-
- 1、TCP Window Full 是站在'发送端'角度说的
-
- 特点: 表示发送端'不能再发数据'给对方,除非发送的数据包'得到ACK'响应
-
- 2、TCP zero window 是站在'接收端'角度来说的
-
- 特点: 是'接收端'接收窗口'满',自动告知'发送方'不能再发送数据给'自己'
-
- 3、TCP中的Window窗口
-
- 特点: TCP的'流量控制',窗口'起始于'确认序号字段指明的值,这个值是'接收端期望'接收的字节数
① 引入窗口概念的原因

- 图谱'解读'
-
- 传输方式'缺点':数据包的往返时间越'长',通信的效率就越'低'

- 引入: 窗口 'windows'
-
- 补充: 滑动窗口协议并'不是TCP特有'的


② 累计确认
![]()
- 窗口大小: 就是指'无需等待 ACK确认应答',而可以'继续'发送数据的'最大 max'值
-
- 通俗: 在发送方的'能力范围内',我能'无脑'的发送'多少'数据

③ 窗口大小由哪一方决定?
- 1、通常窗口的大小是由'接收方的窗口大小'来决定的
-
- 2、发送方发送的数据大小'不能超过'接收方的窗口大小,否则接收方就'无法正常接收'到数据

④ 发送方的窗口


- 类比: 高速路的'收费站'为例
-
- 1、还'未进入入口收费站'的车辆
-
- 2、已'进入收费站'但'未进入高速路'的车辆
-
- 3、在'高速公路上行驶'的车辆
-
- 4、到达'出口收费站'的车辆
-
- ++++++++++++++++++ "分割线" ++++++++++++++++++
-
- 重点: 体会'1'、'2'、'3'、'4'
-
- 细节: '发送'窗口包括'可用'窗口,明确二者的'概念'和'关系'
-
- 会续通过'wiresahrk'分析'WIndows'滑动窗口

+++++++++++ "继续探究" +++++++++++

⑤ 程序是如何表示发送方的四个部分的呢?
- '发送'窗口大小 = SND.WND
-
- '可用'窗口大小 = SND.WND -(SND.NXT - SND.UNA)

⑥ 接收方的滑动窗口
- 对于'接受方滑动窗口',我们也可以把'数据包'看成'车辆',分类它们的'状态':
-
- 1、还'未到达出口收费站'的车辆:状态为Not Received
-
- 特点: 表示'还没有被接收'的数据
-
- 2、到达出口收费站但'未完成缴费'的车辆:状态为Received Not ACK
-
- 特点: 表示已经'被接受'但是'还没有回复' ACK
-
- 3、缴完费并'离开出口收费站'的车辆:状态为Received and ACK
-
- 特点: 表示已经'被接受并回复'了 ACK

Zero Window是指TCP连接中'接收方'的'接收窗口'大小为'0'的情况
⑦ 接收窗口和发送窗口的大小是相等吗?

⑧ 滑动窗口小结
![]()
