计算机如何知道何时在线、何时不在线?

计算机如何知道何时在线、何时不在线?

我今天正在处理路由器固件,需要重新启动才能完成更新。然后我注意到我的互联网断开了一分钟,启动完成后计算机又恢复了在线状态。它怎么知道它在线的这么精确?
它是否对您的网关进行连续的 ping 测试,然后对互联网进行测试?如果是这样,这是否会导致世界上某个服务器出现 ping 死亡?

答案1

你可以用几种不同的方式“断开连接”,因此如何它检测到您已断开连接可能会有所不同:

  • 物理上断开的电缆

    如果您的有线连接物理断开,那么 NIC 显然会知道电路已切断。这就像一盏灯因为被拔掉而熄灭一样。

  • 逻辑上断开的电缆

    如果您的有线连接在逻辑上断开(电缆仍插入,但调制解调器或路由器已关闭),则 NIC 仍然知道,因为电路在技术上仍被切断。这就像灯仍插着,但电源断了。您还会注意到 NIC(图 1)和路由器(图 2)上的链路状态 LED 熄灭。

  • 逻辑上断开的无线

    无线连接的情况稍微复杂一些。如果无线调制解调器或路由器断线,无线适配器可以检测到丢失的连接,因为即使没有物理连接,无线电波仍然表现得像直接的物理连接,并且 NIC 无线电模块中的电路设计为能够检测无线信号或无线信号的缺失。(当然,具体细节超出了本网站的范围,更适合电气工程

  • 已断开网络连接

    另一种断开连接的方式是完全断开 Internet。这类似于逻辑断开连接,因为网络适配器仍处于连接状态。不同之处在于,在这种情况下,调制解调器或路由器仍处于打开和活动状态,您甚至可以访问本地网络(如果存在)。这确实是通过 ping 来确定的,但不是网关,而是服务器外部网络;即互联网上的事物。

    在 Windows 中,从 Vista 开始,您是否连接到 Internet 是通过定期 ping Microsoft 服务器来确定的。这是由 NCSI 完成的,不要将其与具有类似缩写的电视节目混淆。网络连接状态指示器是 Windows 的一个功能,它从两个 Microsoft URL 之一获取虚拟文件(取决于您使用的是 IPv4 还是 IPv6)。如果它可以获取文件,则不会执行任何操作,但如果失败,则表明缺少 Internet 连接(图 3)。

    它只是应该偶尔这样做,但不要连续这样做(参见触发器请参阅 NCSI 页面的部分),但有些人发现这种情况不时发生(尽管这可能是由于不稳定的连接导致记录保持打开状态,因此 Windows 会不断重新检查)。不过,您可以将其更改为您自己的服务器或直接禁用它。


图1:以太网端口上的链接 LED

以太网端口上的连接 LED 照片

图 2:路由器上的连接 LED

路由器连接 LED 灯的照片

图 3:微软的 NCSI 服务报告缺乏互联网连接

Windows 已连接但未连接到 Internet 的屏幕截图

答案2

它是否会对您的网关以及互联网某处进行连续的 ping 测试?

不。

计算机并不需要互联网连接才能检测它是否连接到网络。尝试拔掉路由器(或宽带调制解调器)与外部世界之间的电缆;你会注意到计算机没有注意到任何断开连接,因为就它而言,你仍然连接到网络。网络不让你访问一个特定的网络(互联网)则完全不同。(您可以使用与互联网完全相同的技术和设备来构建一个完全独立的网络。它不会是互联网,但对于计算机而言,除非您探测具有特定已知属性的实际特定已知主机,否则它将与互联网完全无法区分。)

或者使用任意随机供电的网络交换机并在其和计算机之间连接一条网线,但不连接其他任何东西;根据计算机显示,虽然存在链接,但是它根本不会带给您任何帮助。

计算机检测是损失电气连接在网络端口上。从技术上讲,它检测到身体的或者可能是数据链接层链接。这个事实(此处解释简单)由硬件报告给操作系统,然后操作系统可以以任何它认为合适的方式将其报告给用户,包括根本不报告。

例如,普通的 Linux 只会向系统日志中发出类似于kernel: networkdriver 0000:02:00.0: eth0: link down(其中0000:02:00.0是网卡的系统硬件标识符,eth0是逻辑标识符)的信息。用户空间应用程序(例如 NetworkManager)可以获取相同的信息,并以更用户友好的形式进行报告。如果用户已登录,Windows 将获取大致相同的信息,但会将其显示在弹出消息中,内容类似于“检测到网络断开连接”。

答案3

无需持续 ping

您的计算机首先检测到以太网层连接丢失 - 这意味着其以太网端口(插入电缆的物理插座)上不再有电流。您还会注意到以太网端口旁边的绿灯熄灭了 - 当以太网电缆从两端拔出时就会发生这种情况。稍后,当您的路由器重新上线时,首先检测到了电,并且灯变绿了。很快PC 系统托盘中的图标也显示网络连接正常。此时可以说 IP 层已开始运行,计算机知道可以发送和接收 IP 数据包,因为它知道可以连接到路由器。

看一下OSI网络层模型。http://en.wikipedia.org/wiki/OSI_model

答案是 ping 程序运行于网络层但是您的计算机(作为一个使用由软件集成的不同部分的系统)“知道”所有层。因此,如果断开线路时最基本的层被破坏 - 则发生在物理层级别(线路上 - 通常是以太网)。网络适配器不断接收物理层上的发送信号。您可以将其与模拟电话网络上的载波进行比较。如果您拿起固定电话听筒,您可以听到载波音。如果您听不到,则说明电话线不工作。同样,计算机“知道”以太网线在两端断开,因为没有“载波”(如果我们使用这个比喻)。因此,无需不断使用 ping 让计算机知道它已连接到物理网络。

还记得我们谈到我们只是在谈论TCP/IP 协议栈(特别是它的 ICMP 协议)。为了说明互联网连接如何为网络浏览器工作,请考虑这一点。通常,当您的 Firefox 浏览器想要从 URL 获取页面时(例如http://tinyurl.com) 它首先询问计算机 tinyurl.com 的 IP 地址是多少。然后系统使用其解析器库查询 DNS 服务器,DNS 服务器给出答案,例如 195.66.135.249。然后 Firefox 要求您的计算机从 tinyurl.com 获取默认网页。您的计算机与 IP 为 195.666.135.249 的计算机建立 TCP 连接,并发送请求默认网页的 http 协议消息。然后,tinyurl.com 通过 http 协议发回默认页面,该页面沿着 TCP 协议创建的虚拟“管道”传输。这也许可以让您感受到 TCP/IP 协议的不同部分如何互操作,并说明计算机可以通过多种方式“知道”它是否连接到物理网络、本地网络和互联网。

为了更好地理解层次,你也许应该看看一些图表和更多的理论http://www.hardwaresecrets.com/article/The-OSI-Reference-Model-for-Network-Protocols/431/1。关键思想是,每个级别的协议都可以“假装”与远程计算机上的同一级别协议进行通信,而实际上不需要了解其他协议,只需要知道如何接收/传递消息给上/下级协议。我相信你会发现用字母相互填充的类比非常方便。

您将在 OSI 模型中看到 - TCP/IP 套件并不是唯一的网络协议。几年前,Netware IPX/SPX 协议在办公室网络环境中更成熟,而 TCP/IP 则是一种新事物。当时的电缆通常是同轴电缆,而不是以太网双绞线。

相关内容