我读了TCP/IP Illustrated, Volume 1: The Protocols (2nd Edition) 13.2 TCP连接建立和终止,下图是TCP连接和终止的过程,让我困惑的是客户端在终止时发送的ACK序列号过程,如图所示: 当服务器向客户端发送FIN+ACK, Seq=L, ACK=K+1,(options)时,这意味着服务器需要一个序列号为 K+1 的段,所以我认为客户端应该发送ACK, Seq= K+1 , ACK=L+1, (options)到服务器,对吗?
如何理解 TCP/IP Illustrated, Volume 1: The Protocols (2nd Edition) 中 TCP 终止过程中段的序列号?
网络工程
通讯协议
协议理论
2021-07-06 17:09:21
1个回答
它在RFC 793 传输控制协议的第 3.5 节关闭连接中有明确说明:
TCP A TCP B
1. ESTABLISHED ESTABLISHED
2. (Close)
FIN-WAIT-1 --> <SEQ=100><ACK=300><CTL=FIN,ACK> --> CLOSE-WAIT
3. FIN-WAIT-2 <-- <SEQ=300><ACK=101><CTL=ACK> <-- CLOSE-WAIT
4. (Close)
TIME-WAIT <-- <SEQ=300><ACK=101><CTL=FIN,ACK> <-- LAST-ACK
5. TIME-WAIT --> <SEQ=101><ACK=301><CTL=ACK> --> CLOSED
6. (2 MSL)
CLOSED
Normal Close Sequence
Figure 13.
RFC是TCP的定义,教科书可能有错误(经常发生)。研究您正在学习的任何协议的 RFC 也是一个好主意。