電腦如何知道何時上線、何時不在線上?

電腦如何知道何時上線、何時不在線上?

我今天正在處理路由器韌體,需要重新啟動它才能完成更新。然後我注意到我的網路斷開了一分鐘,啟動完成後電腦又恢復線上狀態。它怎麼知道它在線如此精確?
它是否會對您的網關執行連續的 ping 測試,然後再對某個地方的網路進行 ping 測試?如果是這樣,這是否會導致世界上某些伺服器出現 ping-of-death 現象?

答案1

您可以透過多種不同的方式“斷開連接”,因此如何它偵測到您已斷開連線可能會有所不同:

  • 物理上斷開的電纜

    如果您的有線連接在物理上斷開,那麼顯然 NIC 會知道電路已被切斷。這就像一盞燈因為插頭被拔掉而熄滅。

  • 邏輯上斷開的電纜

    如果您的有線連接在邏輯上斷開(電纜仍然插入,但數據機或路由器已關閉),那麼 NIC 仍然知道,因為電路在技術上仍然被切斷。這就像燈仍然插著,但電源熄滅了。您也會注意到 NIC(圖 1)和路由器(圖 2)上的連結狀態 LED 關閉。

  • 邏輯上斷開的無線連接

    無線連線的情況稍微複雜一點。如果無線數據機或路由器發生故障,無線適配器可以偵測到遺失的連接,因為即使沒有實體連接,無線電波仍然存在表現得像直接的物理連接,NIC 無線電模組中的電路被設計為能夠檢測無線訊號或無線訊號的缺失。 (當然具體細節超出了本網站的範圍,更適合電機工程.)

  • 與互聯網斷開連接

    您可能會遇到斷線的另一種方式是與整個互聯網斷線。這與邏輯斷開類似,因為網路適配器仍處於連線狀態。不同的是,在這種情況下,即使數據機或路由器仍然打開並處於活動狀態,您甚至可以存取本地網路(如果存在)。這確實是透過 ping 確定的,但不是網關,而是伺服器外部網路;也就是說,網路上的東西。

    在 Windows 中,從 Vista 開始,您是否連接到 Internet 是透過定期 ping 微軟伺服器來完成的。這是由 NCSI 完成的,不要與具有類似縮寫的電視節目混淆。這網路連線狀態指示燈是一個 Windows 函數,它從兩個 Microsoft URL 之一取得虛擬檔案(取決於您使用的是 IPv4 還是 IPv6)。如果它可以取得該文件,則不會執行任何操作,但如果失敗,則表示缺少 Internet 連線(圖 3)。

    這只是應該偶爾執行此操作,但不是連續執行(請參閱觸發器NCSI 頁面的部分),但有些人發現這種情況偶爾會發生一次(儘管這可能是由於不穩定的連線保持記錄,因此 Windows 不斷重新檢查)。不過,您可以將其變更為您自己的伺服器或完全停用它。


圖1:乙太網路連接埠上的連結 LED

乙太網路連接埠上的連接 LED 的照片

圖2:路由器上的連接 LED

路由器連接 LED 照片

圖3:微軟的 NCSI 服務報告缺乏網路連接

Windows 已連線但未連線至 Internet 的螢幕截圖

答案2

它是否會對您的網關執行連續的 ping 測試,然後再對某個地方的網路進行 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 伺服器,該伺服器給出答案,例如 195.66.135.249。然後,Firefox 會要求您的電腦從tinyurl.com 取得預設網頁。您的電腦與 IP 195.666.135.249 的電腦建立 TCP 連接,並發送 http 協定訊息,請求預設網頁。然後,tinyurl.com 透過 http 協定發回預設頁面,該頁面經過 TCP 協定創建的虛擬「管道」。這也許會讓您感受到 TCP/IP 協定的不同部分如何互通,並說明電腦可以透過多種方式「知道」它是否連接到實體網路、本機網路和 Internet。

為了更好地理解層,您也許應該查看一些圖表和更多理論http://www.hardwaresecrets.com/article/The-OSI-Reference-Model-for-Network-Protocols/431/1。關鍵思想是每個層級上的協議都可以「假裝」與遠端電腦上的同一層級協議進行對話,並且實際上不需要了解太多其他協議,只需要如何接收/傳遞訊息到上/下層協議。我相信你會發現字母互相填充的類比非常方便。

您將在 OSI 模型中看到 - TCP/IP 套件並不是唯一的網路協定。幾年前,Netware IPX/SPX 協定在辦公室網路設定中得到了更好的建立,而 TCP/IP 是一個新來者。當時的電纜通常是同軸電纜而不是乙太網路雙絞線。

相關內容