同事在群里问:家里宽带断了,但微信还能发消息,这算不算没网。问题绕回一个老词,因特网。

因特网就是 Internet 的音译

因特网是 Internet 的中文音译,港台叫网际网络。它不指某个网站,也不指某家运营商,而是把全球几万个独立网络连起来的那张网。互联网是意译,两者说的是同一个东西,只是翻译路子不同。

它由三样东西拼起来

  • IP 协议:给每台设备一个地址,IPv4 是 32 位,约 43 亿个,2011 年前后就分完了
  • TCP 和 UDP:把数据切包、编号、重传、按序拼回
  • 路由器:按路由表一跳一跳转发,不关心包里装的是网页还是视频

一个包要经过多少跳

浏览器输入域名,系统先查 DNS 拿到 IP,比如 93.184.216.34。本机按目标网段决定走网关还是直连,包从家里路由器出去,进运营商城域网、骨干网,穿过十几个自治系统,最后落到对方机房。全程二十跳上下,每跳几毫秒到几十毫秒。Windows 上 tracert example.com,Linux 上 traceroute,都能看到每跳的地址和延迟。中间出现星号不代表断网,很多路由器不回应 ICMP。

家里 IP 为什么都是 192.168 开头

10.0.0.0/8、172.16.0.0/12、192.168.0.0/16 是私有地址,只在局域网内有效。路由器做 NAT,把内网地址换成公网地址再发出去。所以你家电脑是 192.168.1.7,邻居家也是,不冲突,出了门就被改写了。

根服务器真的只有 13 台

常说的 13 台根服务器指的是 13 个 IP,背后是上千台镜像节点,用 anycast 分布在全球各地。国内有 F、I、J 等根的镜像,解析请求不一定出国。

断网时哪些东西还能用

微信还能发消息,多半是连到了运营商内网或 CDN 边缘节点,数据没走完整条公网链路。局域网共享、本地缓存、内网办公系统,本来就不依赖公网。判断方法很土但有效:ping 223.5.5.5 通、ping 域名不通,问题在 DNS;两个都不通,先看网关和光猫。

排障顺序定成网关、公网 IP、DNS 三步,比一上来就重装网卡驱动省事得多。