題 Windows如何知道它是否具有Internet訪問權限,或者Wi-Fi連接是否需要瀏覽器內身份驗證?


在Windows 7中,如果沒有Internet訪問,通知區域網絡圖標將顯示錯誤指示符 wifi-err,一旦成功連接到互聯網,錯誤圖標就會消失 networking normal。有時,如果WiFi連接需要瀏覽器內的身份驗證步驟,例如酒店或大學中的許多訪客網絡,則會出現以下彈出式氣泡,並說: additional log on information may be required, click to open your browser

Windows如何知道它是否具有成功的互聯網連接?
 據推測,它正在檢查一些在線Microsoft服務,以查看它是否有成功連接,被重定向到其他頁面,或者根本沒有得到任何響應,但我沒有看到任何地方,這個過程或所使用的服務都記錄在案。誰能解釋一下這是如何工作的?我更喜歡提及事實的答案,而不僅僅是猜測,但如果你有答案 真的很好 猜猜,然後去吧。

這個問題是一個 本週超級用戶問題
  閱讀2011年5月16日 博客文章 了解更多詳情或 提交你自己的 本週的問題。


130
2018-05-02 07:50


起源


如果要檢查Microsoft服務,它將如何通過瀏覽器內激活步驟?還是我誤解了你? (+1順便說一句,有趣的問題) - slhck
@slhck:這是它檢查的重點:如果它無法正確訪問服務,但它的嘗試得到了 一些 響應,它假設可能存在瀏覽器中的步驟。如果沒有回應 所有,它假設只有本地訪問。我只是不確定這個過程究竟是如何運作的。我已將我的問題更新得更清楚了(希望如此)。 - nhinkle♦
@nhinkle我沒有Windows PC但也許有人可以啟動Wireshark來查看機器在這種情況下實際做了什麼。 - slhck
當錯誤指示符顯示無法訪問Internet時,請打開網絡故障排除程序。當故障排除程序運行時,您可以清楚地看到“嘗試連接到Microsoft.com”的步驟。所以我的猜測是它使用了一項服務。 - Mayank


答案:


經過一番挖掘(Windows中大量的網絡和互聯網相關服務令人驚訝),我想我找到了它。 Windows Vista和7具有各種網絡感知功能,其中一個是網絡連接狀態指示器,它執行連接測試,而連接測試又由網絡系統托盤圖標使用。互聯網連接測試很簡單:

  1. NCSI嘗試通過HTTP(更確切地說:文本文檔)加載特定頁面並測試是否可以檢索它。
  2. 如果不成功,Windows將報告“無法訪問Internet”。

該機制還檢查文檔託管的域是否解析為預期的IP地址。因此,如果此測試成功但無法檢索文檔,它也可能會假設正確的Internet訪問。

當您未在Hotspot上進行身份驗證時,它報告“無法訪問Internet”的原因在於Hotspot的工作方式。它會阻止除80和443之外的所有端口(分別用於HTTP和HTTPS),這些端口將被重定向到Hotspot的身份驗證服務器,並可能以某種方式混淆DNS請求。因此,NCSI既不能解析其測試文件所託管的域,即使它可能無法到達實際文件,因為HTTP流量被重定向到認證服務器。

資源: http://technet.microsoft.com/en-us/library/cc766017%28WS.10%29.aspx


89
2018-05-02 10:00



熱點必須允許DNS,否則任何通過主機名(而不是IP地址)訪問服務器的嘗試都將失敗並顯示“無法解析地址”類型錯誤。根據熱點的設置,它可以將所有名稱解析為其auth服務器的地址,也可以正確解析名稱,並且僅依賴於http(s)連接到auth服務器的重定向。喜歡文檔中描述的檢查的DNS部分是驗證dns.msftncsi.com解析為正確的地址,而不是它是否解析。 - Dave Sherohman
這確實是對的。我更新了答案以反映這一點。 - Tobias Plutat
很棒的發現,並很好地描述了它的工作原理!如果沒有更好的答案出現,很快就會有你的獎勵。 - nhinkle♦
它還說 No Internet access 如果你是代理人;) - Oscar Mederos
我不懷疑這大多是正確的,但似乎是不完整的。有時,您將遇到DNS問題,連接圖標將顯示一個彈出窗口,表明您可以訪問Internet但DNS失敗。我認為在步驟1之前(或可能在步驟1之後)必須有一個步驟,即嘗試解析DNS。如果成功(但頁面未加載),則會收到DNS錯誤消息。 - krowe2


以下是連接狀態確定的詳細信息 處理

以下列表描述了NCSI如何與網站通信以確定網絡是否具有Internet連接:

  1. DNS名稱解析請求 dns.msftncsi.com

  2. HTTP請求 http://www.msftncsi.com/ncsi.txt返回200 OK和文本 Microsoft NCSI

可以使用註冊表設置禁用此功能。如果你設置

 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\
     NlaSvc\Parameters\Internet\EnableActiveProbing

0,Windows將不再探測互聯網連接。

Apple在iOS中做了類似的事情來檢測互聯網連接和可能的酒店“登錄”wifi頁面等。


68
2018-05-02 10:51



較新的(我認為Gingerbread和更新...)版本的Android也是這樣做的......如果它們可以連接到網絡,它們將顯示白色的wifi圖標,如果它可以打到一些google託管,它將變為綠色頁。它背後的想法是一樣的。 - TM.
不知何故,kindle也這樣做了。當我連接到wifi時,它通知我需要打開瀏覽器並接受使用條款。我想知道這是怎麼發生的。 - Kortuk
因此,如果 msftncsi.com 發生故障,每台Windows 7電腦都無法顯示在線信號?多才多藝! - liamzebedee


正如Jeff所說,為了檢測Internet連接,Windows將執行以下操作:

  1. 對服務器的DNS請求
  2. 已知內容的HTTP請求

除了傑夫的回答,我懷疑:

3。如果HTTP請求被重定向到外部Microsoft(或未返回預期內容),請在屏幕截圖中顯示該消息。


8
2018-05-02 12:29





對於需要額外登錄信息的連接,更有可能通過Jeff提到的DNS解析步驟確定,發生以下三種情況:

  • 如果系統解析了正確的地址,則連接全部清除。 (互聯網連接)
  • 如果系統解析了dns請求但不是正確的地址,則會有重定向(可能需要添加登錄信息)
  • 如果系統無法解決DNS請求,則存在互聯網連接問題(連接建立到網絡/接入點但沒有互聯網連接)

我假設請求:

http://www.msftncsi.com/ncsi.txt

是一種快速測試方法,可以測試與互聯網的連接是否清晰。之後,運行dns請求以確定連接的完整狀態。


3
2018-05-04 23:16