Làm thế nào để Windows biết liệu nó có truy cập internet hay không nếu kết nối Wi-Fi yêu cầu xác thực trong trình duyệt?


132

Trong Windows 7, biểu tượng mạng khu vực thông báo sẽ hiển thị chỉ báo lỗi nếu không có quyền truy cập internet lỗi wifivà biểu tượng lỗi sẽ biến mất sau khi có kết nối thành công với internet kết nối mạng bình thường. Đôi khi, nếu kết nối WiFi yêu cầu bước xác thực trong trình duyệt, như trên nhiều mạng khách trong khách sạn hoặc trường đại học, thì bong bóng bật lên sau đây xuất hiện, nói lên nhiều điều: thông tin đăng nhập bổ sung có thể được yêu cầu, nhấp để mở trình duyệt của bạn

Làm thế nào để Windows biết liệu nó có kết nối internet thành công hay không?
Có lẽ họ đang kiểm tra một số dịch vụ trực tuyến của Microsoft để xem liệu nó có kết nối thành công, được chuyển hướng đến một trang khác hay không nhận được bất kỳ phản hồi nào, nhưng tôi chưa thấy bất cứ nơi nào quy trình này hoặc các dịch vụ được sử dụng được ghi lại . Bất cứ ai có thể giải thích làm thế nào điều này làm việc? Tôi thích câu trả lời đề cập đến sự thật, thay vì chỉ đoán, nhưng nếu bạn có một dự đoán thực sự tốt , thì hãy đi cho nó.

Câu hỏi này là một câu hỏi siêu người dùng trong tuần .
Đọc 16 tháng 5 năm 2011 blog entry để biết thêm chi tiết hoặc nộp riêng bạn Câu hỏi của tuần.


1
Nếu phải kiểm tra dịch vụ của Microsoft, làm thế nào để vượt qua bước kích hoạt trong trình duyệt? Hay tôi đang hiểu lầm bạn? (+1 btw, câu hỏi thú vị)
slhck

@slhck: Đó là điểm của việc kiểm tra: nếu nó không thể truy cập dịch vụ đúng cách, nhưng nỗ lực của nó nhận được một số phản hồi, nó cho rằng có thể có một bước trong trình duyệt. Nếu không có phản hồi nào cả , thì nó giả sử chỉ có quyền truy cập cục bộ. Tôi chỉ không chắc chính xác quá trình đó hoạt động như thế nào. Tôi đã cập nhật câu hỏi của mình để rõ ràng hơn một chút (hy vọng).
nhinkle

@nhinkle Tôi không có PC Windows nhưng có lẽ ai đó có thể kích hoạt Wireshark để xem máy thực sự làm gì trong trường hợp như vậy.
slhck

Khi chỉ báo lỗi nói rằng không có truy cập internet, hãy mở trình khắc phục sự cố mạng. Trong khi trình khắc phục sự cố chạy, bạn có thể thấy rõ một bước "Đang cố gắng kết nối với Microsoft.com". Vì vậy, dự đoán của tôi là nó sử dụng một dịch vụ.
Mayank

Câu trả lời:


91

Sau một số hoạt động đào (số lượng dịch vụ liên quan đến mạng và Internet trong Windows là đáng kinh ngạc), tôi nghĩ rằng tôi đã tìm thấy nó. Windows Vista và 7 có nhiều tính năng Nhận thức Mạng, một trong số đó là Chỉ báo trạng thái kết nối mạng thực hiện các kiểm tra kết nối lần lượt được sử dụng bởi biểu tượng systray mạng. Kiểm tra kết nối internet rất đơn giản:

  1. NCSI cố tải một trang cụ thể qua HTTP (chính xác hơn là: tài liệu văn bản) và kiểm tra xem nó có thể được truy xuất hay không.
  2. Nếu điều đó không thành công, Windows báo cáo "Không có quyền truy cập Internet".

Cơ chế cũng kiểm tra xem tên miền mà tài liệu được lưu trữ có phân giải thành địa chỉ IP dự kiến ​​hay không. Vì vậy, nó cũng có thể giả sử truy cập internet thích hợp nếu thử nghiệm này thành công nhưng tài liệu không thể được truy xuất.

Lý do nó báo cáo "Không có quyền truy cập Internet" khi bạn chưa xác thực trên Hotspot nhưng nằm ở cách Hotspot hoạt động. Nó chặn tất cả các cổng ngoài 80 và 443 (tương ứng cho HTTP và HTTPS), được chuyển hướng đến máy chủ xác thực của Hotspot và có thể gây rối với các yêu cầu DNS theo cách này hay cách khác. Do đó, NCSI không thể giải quyết tên miền mà tệp thử nghiệm của nó được lưu trữ trên đó và ngay cả khi nó không thể truy cập tệp thực tế vì lưu lượng HTTP được chuyển hướng đến máy chủ Xác thực.

Nguồn: http://technet.microsoft.com/en-us/l Library / cc766017% 28WS.10% 29.aspx


13
Một điểm nóng sẽ phải cho phép DNS, nếu không, bất kỳ nỗ lực nào để truy cập máy chủ theo tên máy chủ (thay vì theo địa chỉ IP) sẽ không thành công với lỗi "không thể giải quyết địa chỉ". Tùy thuộc vào thiết lập của hotspot, nó có thể phân giải tất cả các tên thành địa chỉ máy chủ xác thực của nó hoặc nó có thể phân giải chính xác các tên và chỉ dựa vào chuyển hướng các kết nối http (s) đến máy chủ xác thực. Phần DNS của các kiểm tra được mô tả trong tài liệu thích là để xác minh rằng dns.msftncsi.com giải quyết đúng địa chỉ, chứ không phải liệu nó có giải quyết được không.
Dave Sherohman

1
Điều đó thực sự chính xác. Tôi đã cập nhật câu trả lời để phản ánh điều đó.
Tobias Plutat

Tìm kiếm tuyệt vời, và mô tả tốt về cách thức hoạt động! Nếu không có câu trả lời tốt hơn xuất hiện, sẽ có một tiền thưởng đến với bạn sớm.
nhinkle

Nó cũng cho biết No Internet accessnếu bạn đứng sau một proxy;)
Oscar Mederos

1
Tôi không nghi ngờ rằng điều này chủ yếu là chính xác nhưng nó dường như là không đầy đủ. Đôi khi, bạn sẽ gặp sự cố với DNS và biểu tượng kết nối sẽ hiển thị cửa sổ bật lên cho biết bạn có quyền truy cập internet nhưng DNS đó không thành công. Tôi nghĩ rằng phải có một bước trước bước 1 (hoặc có thể sau bước 1) đó là nó cố gắng giải quyết DNS. Nếu điều đó thành công (nhưng trang không tải) thì bạn sẽ nhận được thông báo lỗi DNS.
krowe2

69

Dưới đây là chi tiết của quy trình xác định trạng thái kết nối :

Danh sách sau đây mô tả cách NCSI có thể giao tiếp với một trang Web để xác định xem mạng có kết nối Internet hay không:

  1. Yêu cầu phân giải tên DNS của dns.msftncsi.com

  2. Yêu cầu HTTP http://www.msftncsi.com/ncsi.txttrả về 200 OK và văn bảnMicrosoft NCSI

Điều này có thể bị vô hiệu hóa với một thiết lập đăng ký. Nếu bạn đặt

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

đến 0, Windows sẽ không còn thăm dò kết nối internet.

Apple làm một cái gì đó rất giống trong iOS để phát hiện kết nối internet và các trang wifi "đăng nhập" khách sạn có thể, v.v.


1
Các phiên bản Android mới hơn (tôi nghĩ Gingerbread và mới hơn ...) cũng làm điều này ... chúng sẽ hiển thị biểu tượng wifi màu trắng nếu chúng có thể kết nối với mạng và nó sẽ chuyển sang màu xanh nếu nó có thể được lưu trữ trên google trang. Ý tưởng đằng sau nó là như nhau.
TM.

kindle cũng làm điều này, bằng cách nào đó. Khi tôi kết nối với wifi, nó thông báo cho tôi rằng tôi cần mở trình duyệt của mình và chấp nhận các điều khoản sử dụng. Tôi đã tự hỏi làm thế nào điều này cũng xảy ra.
Kortuk

3
Vậy nếu msftncsi.com không hoạt động, mọi máy tính Windows 7 sẽ không thể hiển thị tín hiệu trực tuyến? Đó là thiên tài!
liamzebedee

8

Như Jeff đã nói, để phát hiện kết nối Internet, Windows sẽ làm:

  1. Yêu cầu DNS đến máy chủ
  2. Yêu cầu HTTP cho nội dung đã biết

Ngoài câu trả lời của Jeff, tôi nghi ngờ:

3. Nếu yêu cầu HTTP được chuyển hướng đến Microsoft bên ngoài (hoặc không trả lại nội dung dự kiến), hãy hiển thị thông báo trong ảnh chụp màn hình của bạn.


3

Đối với một kết nối yêu cầu thông tin đăng nhập bổ sung có nhiều khả năng được xác định thông qua bước phân giải DNS được đề cập bởi Jeff với ba tình huống sau đây xảy ra:

  • Nếu hệ thống giải quyết đúng địa chỉ, kết nối hoàn toàn rõ ràng. (Kết nối mạng Internet)
  • Nếu hệ thống giải quyết yêu cầu dns nhưng không phải là địa chỉ chính xác thì sẽ có chỉ dẫn lại (nhật ký bổ sung có thể có về thông tin cần thiết)
  • Nếu hệ thống không giải quyết yêu cầu dns, có vấn đề kết nối internet (thiết lập kết nối với mạng / điểm truy cập nhưng không có kết nối internet)

Tôi cho rằng yêu cầu:

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

là một cách nhanh chóng để kiểm tra xem kết nối với internet có rõ ràng không. Sau đó, các yêu cầu dns được chạy để xác định trạng thái đầy đủ của kết nối.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.