为什么 tcp 连接 会停在 close_wait 状态,而不是直接到 last_ack 状态
假设客户端 A 发送 fin 给服务器 B,那么服务器 B 进入 close_wait 状态 这时候,服务器 B 发送 ack 给 客户端 A 接着服务器 B 发送 fin 给客户端 A, 服务器 B 进入 last_ack 状态
嗯? B 处在 close_wait 状态, 是因为要发送其他数据给客户端 A,等待发送完毕,才发送 Fin 给客户端 A,然后才能进入 last_ack 状态吗?
1
helloworld12 OP 那问题来了
为什么 netstat 可以看到 ``` tcp4 66186 0 192.168.1.4.63632 47.100.42.26.88 CLOSE_WAIT tcp4 49856 0 192.168.1.4.64196 47.100.42.26.88 CLOSE_WAIT ``` 这种数据,receive-Q 接收队列还有数据,不应该数据都接收完了,才收到 Fin 数据包,然后才进入 Close_wait 状态吗? |
2
junwuhui 2018-02-09 02:38:50 +08:00 via Android
close_wait 是为了可以让要处理的任务处理完,所以~
|
3
tamer 2018-02-09 09:48:53 +08:00
因为是全双工,
收发数据都要保证无残留 |