网线断了是什么状态

两个主机,A(WinXP)的IP为192.168.1.100,B(Win7)为192.168.1.200,顺便说一下以太网口上的两个用于指示状态的LED灯,后面说到左右,都是指从正面看,如下图:

经测试发现,左边的灯指示目前是否有数据传输,闪烁表示有数据,闪烁的频率体现了数据收发的频繁程度。亮起的时候是黄色:
右边的灯指示了该网卡当前的带宽,在操作系统中可对网卡带宽进行设置,上限自然是该网卡的物理上限。

这里的A,B安装的都是千兆网卡,对B网卡的带宽进行调整,其右灯呈现出不同颜色。

1.0 Gbps,即默认带宽,绿色常亮:

100 Mbps,琥珀色常亮:

10 Mbps,常暗:

颜色越透亮,说明路越宽,到10 Mbps的时候,直接黑掉了,说明这是最糟糕的情况。

后来又用装有100 Mbps的网卡进行了测试,它在默认情况下,也就是100 Mbps的时候,灯也是绿色。这说明绿色对应的是该网卡所能提供的最大带宽。其他颜色依次向下排就行了。

编写两个简单的TCP程序,作为服务端的s.exe程序部署到B主机上,客户程序c.exe部署到主机A上。两个程序均使用非阻塞socket,功能很简单,连接建立后,就周期性地互发字符串,把自己收到的字符串打印出来即可。例如:c向s发“I am client.”,s向c发“I am server.”,具体内容无所谓。

令s.exe监听12000端口。
当c与s建立连接,且能正常工作时,测试如下几种情况:

一、 从B主机(win7+s.exe)上拔掉网线

拔出网线,网卡肯定能感知到这个变化,因而主机B操作系统提示“网络电缆没有插好”。由于A,B是用一根线直连的,拔掉B端,就如同电线断电一样,A也是能感知到的,因此,A主机上的操作系统也会提示“网络电缆没有插好”。

B系统当时所给出的TCP状态是“ESTABLISHED”(用netstat查看),当B系统提示“网络电缆没有插好”时,让s.exe执行如下几个特殊动作。

  • s.exe不执行send/recv操作:TCP状态始终是“ESTABLISHED”。
  • s.exe仅执行一次recv操作:TCP状态始终是“ESTABLISHED”。
  • s.exe仅执行一次send操作:从执行完send开始算起,经过20秒左右(通常为20秒),系统将连接销毁。

A系统当时所给出的TCP状态也是“ESTABLISHED”(用netstat查看),当A系统提示“网络电缆没有插好”时,同样让c.exe执行如下几个特殊动作。

  • c.exe不执行send/recv操作:10秒左右(通常为10秒),系统将连接销毁。
  • c.exe仅执行一次recv操作:10秒左右(通常为10秒),系统将连接销毁。
  • c.exe仅执行一次send操作:10秒左右(通常为10秒),系统将连接销毁。

也就是说不论是否执行send/recv操作,在一定时间内,连接都会被销毁,这三种情况可视为一种。

当连接被系统销毁后,若再对socket进行操作(send/recv),就会引发WSAECONNRESET错误。

二、 从A主机(winXP+c.exe)上拔掉网线

测试结论同上。A,B二者单线直连,拔掉谁的插头其实效果一样。

三、 剪断网线

这个操作感觉上要比前两个特别些,但实际测试结果还是同上,要说特别的地方,就是网线不能再用了。

用一根线连接的两个主机,不论是拔掉其中一端或是剪断,其效果都是一样的,就是线路上没有电流了。机器可以马上感知到。