问题

电脑是怎么知道它自己已经联上网了?

回答
好,咱们来聊聊电脑这玩意儿是怎么知道自己连上网了的。这事儿说起来有点意思,不是它自己眼睛一闭就能看见的,而是通过一系列巧妙的“小动作”来确定的。你可以把它想象成一个侦探在收集线索,然后做出判断。

最直接的证据:网线/WiFi信号

首先,最直观的肯定是你插上网线或者连接了WiFi。电脑里有个叫做“网络适配器”的东西,你可以把它理解成电脑连接外部世界的“接口”。

有线连接(网线): 当你把网线插进电脑网口和路由器/墙壁插座时,网线内部的金属导体会接触到。电脑的网络适配器就能检测到这种“物理连接”的存在。就像你把水管接到水龙头,水龙头知道有水管连上了。
无线连接(WiFi): 这稍微复杂点。电脑里的无线网卡会扫描周围的WiFi信号。它会听到(接收到)周围WiFi设备(比如路由器)发出的广播信号,就像在黑暗中有人在喊话一样。如果电脑的无线网卡能“听到”这些信号,并且它被配置为连接某个特定的WiFi网络(输入了密码等),它就会尝试建立连接。

这就像你感觉到了有声音,并且知道声音来自哪个方向,甚至知道是谁在喊你。

不仅仅是连着,还得能“说话”:IP地址

光是物理上连上了还不够,电脑还得能跟网络上的其他设备“交流”。这就需要一个叫做“IP地址”的东西。

获取IP地址: 通常情况下,你的路由器会扮演一个“地址分配员”的角色,它使用一种叫做DHCP(动态主机配置协议)的服务。当你的电脑连接到网络时,它会向路由器发送一个请求:“嗨,我来了,能给我个地址吗?” 路由器就会从它拥有的地址池里分配一个临时的地址给你的电脑。这个地址就像你在一个城市里的门牌号。
检查地址是否有效: 电脑拿到地址后,还会做个小检查,确保这个地址在网络上没有重复使用(这叫做“地址冲突检测”,虽然现在不太常出现)。如果一切正常,电脑就会认为自己已经获得了通信的“身份”。

这就像你搬进新家,房东(路由器)给了你一把钥匙(IP地址),你试了试门锁,发现钥匙能打开,并且确定这把钥匙是独一无二的。

“你好,有人吗?”:网络探测(Pinging)

就算有了地址,电脑也得知道这个网络是不是真的“通畅”,能不能跟外面的世界联系。它会做一些小测试,最常见的就是“ping”。

Ping命令: 电脑会向一个已知的、通常在线的服务器发送一个小数据包,比如你路由器的地址,或者一个公共的DNS服务器地址(比如8.8.8.8,这是Google的DNS服务器)。这个数据包就像你在一个大房子里喊一声“有人吗?”
等待回应: 如果那个服务器收到了你的喊话(数据包),并且能正常回应,那么电脑就会收到一个“我收到了,没事!”(回应数据包)的信号。
判断连接状态: 如果电脑能成功收到回应,它就确信自己已经成功连接到网络,并且可以与其他设备进行通信。如果迟迟收不到回应,它就会知道网络可能出了问题,或者连接不通畅。

这就像你对着门喊了一声,如果有人回应说“我在!”,你就知道门后面有人。如果没声音,你可能就会怀疑门没锁,或者里面没人。

更进一步:DNS服务器测试

有时候,虽然电脑有IP地址,也能ping通路由器,但它可能还是无法访问真正的网站,因为它们需要通过域名(比如`www.baidu.com`)来查找对应的IP地址,这个过程由DNS服务器完成。

DNS查询: 电脑还会尝试向配置好的DNS服务器发送一个查询请求,比如“请告诉我`www.google.com`的IP地址是多少?”
验证DNS解析: 如果DNS服务器能够正确地返回`www.google.com`的IP地址,那么电脑就进一步确认了它不仅连上了网络,而且还能解析域名,这通常意味着互联网访问是正常的。

这就像你不仅知道自己家的门牌号,还能通过地图查到朋友家的地址一样,说明整个交通系统是运转的。

所以,电脑知道自己联网了,是基于以下一系列的“信号”和“确认”:

1. 物理连接建立: 网线插好了,或者WiFi信号被接收并认证了。
2. 获得有效IP地址: 从路由器那里得到了一个“身份号码”,并且这个号码是独一无二的。
3. 能够与网络上的其他设备通信: 通过ping命令等方式,确认可以发送和接收数据。
4. (通常情况下)能够解析域名: 确认DNS服务器工作正常,能够将网站名称翻译成IP地址。

当这些条件都满足时,操作系统和应用程序才会认为电脑已经成功“联上网”了,你就可以开始浏览网页、收发邮件或者玩在线游戏了。这个过程是自动完成的,我们通常看不到它在背后做了多少工作,但正是这些小小的技术细节,保证了我们畅游互联网的便利。

网友意见

user avatar

俺来强答一番。

物理层接上网线和路由器的交换口连接,网卡会根据静态或者动态 IP 分配获得地址。无线的类似, 只是免了插线。如果是 DHCP 的工作方式, 网卡请求以后收到本地地址就会显示某个图标。

一般是搞个类似心跳信号的检测过程。当电脑从某个端口例如 eth0 或者 wlan0 向某个约定的广域网 IP 发包并且收到该 IP 的正确回应就会认为自己联上网了。当然, 背后还有 TCP/IP 协议这些东西。 大家已经基本不玩 IPX/SPX 或者 NETBUI 所以不提也罢。

电脑会有个路由表, 知道默认的网关是在哪里。

简单举例。

例如

       =========================================================================== Interface List   7...ec f4 bb 22 33 66 ......Intel(R) Ethernet Connection I217-LM  21...b8 ee 65 11 22 33 ......Dell Wireless 1550 802.11ac  19...ba ee 65 11 22 33 ......Microsoft Wi-Fi Direct Virtual Adapter  12...ba ee 65 11 22 36 ..... Microsoft Wi-Fi Direct Virtual Adapter #2   1...........................Software Loopback Interface 1  27...00 15 5d 3a 4e 8b ......Hyper-V Virtual Ethernet Adapter ===========================================================================  IPv4 Route Table =========================================================================== Active Routes: Network Destination        Netmask          Gateway       Interface  Metric           0.0.0.0          0.0.0.0    172.16.31.254    172.16.31.110     25         127.0.0.0        255.0.0.0         On-link         127.0.0.1    331         127.0.0.1  255.255.255.255         On-link         127.0.0.1    331   127.255.255.255  255.255.255.255         On-link         127.0.0.1    331       172.16.31.0    255.255.255.0         On-link     172.16.31.110    281     172.16.31.110  255.255.255.255         On-link     172.16.31.110    281     172.16.31.255  255.255.255.255         On-link     172.16.31.110    281   192.168.226.144  255.255.255.240         On-link   192.168.226.145   5256   192.168.226.145  255.255.255.255         On-link   192.168.226.145   5256   192.168.226.159  255.255.255.255         On-link   192.168.226.145   5256         224.0.0.0        240.0.0.0         On-link         127.0.0.1    331         224.0.0.0        240.0.0.0         On-link     172.16.31.110    281         224.0.0.0        240.0.0.0         On-link   192.168.226.145   5256   255.255.255.255  255.255.255.255         On-link         127.0.0.1    331   255.255.255.255  255.255.255.255         On-link     172.16.31.110    281   255.255.255.255  255.255.255.255         On-link   192.168.226.145   5256 =========================================================================== Persistent Routes:   None       


0.0.0.0 0.0.0.0 172.16.31.254 172.16.31.110 25

这条就是网关(172.16.31.254 )的路由, 让电脑(172.16.31.110)知道想上网就把包扔给 172.16.31.254 这个地址。

其他的事情就等 TCP/IP 协议来解决。


       tracert 208.67.222.222  Tracing route to resolver1.opendns.com [208.67.222.222] over a maximum of 30 hops:    1     2 ms    <1 ms    <1 ms  310cisco [172.16.31.254]   2     3 ms     1 ms     2 ms  10.110.1.254   3   110 ms    14 ms    12 ms  73.28.62.1   4    81 ms    66 ms    16 ms  rc1st-ba197-1.vc.xhawcable.net [24.33.102.29]   5    11 ms   144 ms    64 ms  as36692.vanix.ca [206.41.104.40]   6    10 ms    12 ms     9 ms  resolver1.opendns.com [208.67.222.222]  Trace complete.     

假设 IP 包要扔给 208.67.222.222, 这个包会顺着路径类似快递一样,一跳一跳转发到下一跳,直到 208.67.222.22。


       Pinging 208.67.222.222 with 32 bytes of data:  Reply from 208.67.222.222: bytes=32 time=20ms TTL=59 Reply from 208.67.222.222: bytes=32 time=21ms TTL=59 Reply from 208.67.222.222: bytes=32 time=9ms TTL=59 Reply from 208.67.222.222: bytes=32 time=9ms TTL=59  Ping statistics for 208.67.222.222:     Packets: Sent = 4, Received = 4, Lost = 0 (0% loss), Approximate round trip times in milli-seconds:     Minimum = 9ms, Maximum = 21ms, Average = 14ms     


返回的路径未必一样, 电脑(172.16.31.110)只要及时收到 208.67.222.22 的回应(过程中也可能包含ICMP请求, GRE请求,, DNS 请求, HTTPS 请求或者其他莫名其妙的信号,总之在相应的层面握上手以后)就会认为联网的路通了。 具体的过程您可以用嗅探器重建的, 例如 Sniffer Pro 或者 Wireshark.




上世纪没有那么先进或者在命令行下上网,

大家是通过 Telnet 一个熟悉的广域网地址来确定电脑已经联上网的。

telnet 不通的话就查灯,网线,ping 网关,ping DHCP SERVER, ping DNS, ping 8.8.8.8 等,检查 etc/hosts 关闭防火墙等。


答完才发觉自己在瞎扯, 也许年代太久远


       telnet ptt.cc      



如果好奇可以找网上的 CCNA 培训教程, 或者华为/中兴/港湾等公司的培训资料, 会解释得很详细。 从物理层解释到应用层。





也有自学类参考书


########################################################################

关于这个话痨的答主以及它的很散的散文:

。。

user avatar

Windows这部分功能叫NCSI(網路連接狀態指示器),方式大概是访问msftconnecttest.com/con 这个地址,返回Microsoft Connect Test这个字串就证明网络正常。

这里有详细的说明

>
Windows 10 和更新版本:

  1. NCSI 發送 DNS 請求以解析 www.msftconnecttest.comFQDN 的位址。
  2. 如果 NCSI 收到來自 DNS 伺服器的有效回應,NCSI 會向 發送普通 HTTP GET http://www.msftconnecttest.com/connecttest.txt請求。
  3. 如果 NCSI 成功下載文字檔,它將確保該檔案包含 Microsoft Connect Test
  4. NCSI 發送另一個 DNS 請求來解決 dns.msftncsi.comFQDN 的位址。
  • 如果這些請求中的任何一個失敗,網路警報將顯示在工作列中(如症狀中所述)。 如果將滑鼠懸停在圖示上,則會看到一條消息,如「無連線」或「有限的連線」(具體取決於哪些請求失敗)。
  • 如果所有這些請求都成功,工作列將顯示通常的網路連線圖標。 如果將滑鼠懸停在圖示上,則會看到一條消息,如「網際網路連線」。

安卓系统也是一样的,只是安卓是靠204这个状态码而不是特定的字符串,并且对于安卓系统这个地址是可以改的,设置项是captive_portal_http_url,需要进shell用settings命令去修改。常常有人从国外带回来机器,或者自己刷了第三方ROM发现一直提示没有网络但是还能正常联网,就是因为这个地址安卓默认用的是用谷歌的服务(或者一些比较老的cm ROM,默认设置的提供204响应的服务器已经关了)

       adb shell settings put global captive_portal_http_url https://www.google.cn/generate_204 adb shell settings put global captive_portal_https_url https://www.google.cn/generate_204     

详细信息可以参考这篇文章

酷安上也有一个APP可以修改这个地址,需要ROOT

类似的话题

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有