首页 > 代码库 > tcp 状态转换.
tcp 状态转换.
命令行:
root@ubuntu:/home/linson# netstat -apt | grep 3030
server,listen
tcp 0 0 localhost:3030 *:* LISTEN 11170/epoll
server 还没应答之前
tcp 0 0 localhost:3030 *:* LISTEN 11170/epoll
tcp 0 0 localhost:3030 localhost:33092 ESTABLISHED -
tcp 0 0 localhost:33092 localhost:3030 ESTABLISHED 11504/esocket6
应答之后
tcp 0 0 localhost:3030 *:* LISTEN 11170/epoll
tcp 0 0 localhost:3030 localhost:33092 ESTABLISHED 11170/epoll
tcp 0 0 localhost:33092 localhost:3030 ESTABLISHED 11504/esocket6
客户端关闭.服务断还未应答.
tcp 0 0 localhost:3030 *:* LISTEN 11170/epoll
tcp 1 0 localhost:3030 localhost:33092 CLOSE_WAIT 11170/epoll
tcp 0 0 localhost:33092 localhost:3030 FIN_WAIT2 11504/esocket6
服务端应答
tcp 0 0 localhost:3030 *:* LISTEN 11170/epoll
tcp 0 0 localhost:33092 localhost:3030 TIME_WAIT -
服务端应答 之后某几分钟之内.
tcp 0 0 localhost:3030 *:* LISTEN 11170/epoll
知识点
1)客户端的fin_wait_1在局域网应该是看不到的.猜测是服务端内核马上发送 ack (cfin+1),
但是服务端的fin是要等待调用close才会发送.
2)客户断的 TIME_WAIT是等待2msl.因为最后一个分组信息是客户端发送的.发送完毕之后.服务端并不会回应.所以
客户端辛苦一点,迟点下班,万一路由发生错误,还可以再发一次.
3)客户端连续发送2次close,是会导致发送rst?这个要再测试下.
tcp 状态转换.