如果A机器与B机器网络connect成功后从未互发过数据,此时其中一机器突然断电,则另外一台机器与断电的机器之间的网络连接处于哪种状态?
笔者实测如下:
虚拟机A:
CentOS 7,192.168.133.131,TCP Server
虚拟机B:
CentOS 7,192.168.133.128,TCP Client
1、建立连接时:
A机器
[root@localhost ~]# netstat -nalp|grep 1883
tcp 0 0 0.0.0.0:1883 0.0.0.0:* LISTEN 48261/epltest
tcp 0 0 192.168.133.131:1883 192.168.133.128:39170 ESTABLISHED 48261/epltest
B机器
[root@localhost firecat]# netstat -nalp|grep 1883
tcp 0 0 192.168.133.128:39170 192.168.133.131:1883 ESTABLISHED 7470/./eplClient
2、B机器断电时,A机器查看状态如下:
[root@localhost ~]# netstat -nalp|grep 1883
tcp 0 0 0.0.0.0:1883 0.0.0.0:* LISTEN 48261/epltest
tcp 0 0 192.168.133.131:1883 192.168.133.128:39170 ESTABLISHED 48261/epltest
结论:断电后,继续保持ESTABLISHED的网络状态。
3、笔者继续实测,让A断电,B保持,结论还是一样,ESTABLISHED。
4、如果A不变,B机器kill client进程,则B机器会出现TIME_WAIT的网络状态。
[root@localhost firecat]# kill -9 7459
[root@localhost firecat]# netstat -nalp|grep 1883
tcp 0 0 192.168.133.128:60114 192.168.133.131:1883 TIME_WAIT -