⚠ Switch to EXCALIDRAW VIEW in the MORE OPTIONS menu of this document. ⚠ You can decompress Drawing data with the command palette: ‘Decompress current Excalidraw file’. For more info check in plugin settings under ‘Saving’

Excalidraw Data

Text Elements

发送缓存

1

2

3

4

5

6

7

8

9

10

发送应用程序

持续写入数据到缓存中

发送窗口

接收缓存

接收窗口

接收应用程序

持续从缓存中读取

1

2

3

4

1

2

3

4

Seq=1, DATA

Seq=101, DATA

Seq=201, DATA

Seq=301, DATA

发送缓存

10

9

8

7

6

5

发送应用程序

持续写入数据到缓存中

接收缓存

接收应用程序

持续从缓存中读取

1

2

3

4

ACK=1,ack=401

5

6

7

8

5

6

8

Seq=401, DATA

Seq=501, DATA

丢失

Seq=701, DATA

发送缓存

10

9

8

7

6

5

发送应用程序

持续写入数据到缓存中

接收缓存

接收应用程序

持续从缓存中读取

5

6

8

9

10

7

8

ACK=1, ack=601

Seq=601, DATA

Seq=701, DATA

Seq=801, DATA

9

10

7

8

Seq=901, DATA

已经读取的报文段从缓存中删除

接收方已经确认接收的报文段从缓存中删除

这里报文 8 重新发送了一次,其实这样的话有点浪费了,如果使用了选择确认技术(SACK)那么就只会重新发送 7,8 不会再发

发送方 A

接收方 B