🔌 第五章 服务器端的局域网中有什么玄机
📄 一句话概括

让用户访问最近节点,主流做法靠 DNS:CDN 的 DNS 看客户端用的是哪家的 DNS 服务器,结合路由信息估计位置,返回最近的节点——准头取决于 DNS 离用户近不近。

📝 本节和前面几节的关系

5.5.1 说要【就近访问】;本篇解决【怎么知道哪近】。

一、DNS 判断法

用户查域名时,CDN 的 DNS 能看到 【是谁家的 DNS 服务器在替用户问】; 据此结合路由信息估计客户端位置,返回最近节点。

二、准头的天花板

判断依据是客户端的 DNS 服务器位置—— DNS 离用户近就准; 用户手动改了 DNS(比如改到国外), 就会被当成 DNS 所在地的用户。

三、动手 Demo:怎么找到最近的节点

CDN 要回答:这个用户该去哪个节点?用 DNS 判断:

for s in ['1. 用户查询 www.example.com',
    2. CDN 的 DNS 看看【是谁的 DNS 服务器在问】',
    3. 根据路由信息估计客户端位置,返回最近的节点']:
    print(s)
print()
print('判断依据是客户端的 DNS 服务器在哪')

实跑输出:

--------------------------------------------------------------------
怎么找到最近的节点
--------------------------------------------------------------------
  CDN 要回答:这个用户该去哪个节点?用 DNS 判断:

    1. 用户查询 www.example.com
    2. CDN 的 DNS 看看【是谁的 DNS 服务器在问】
    3. 根据路由信息估计客户端位置,返回最近的节点

  判断依据是客户端的 **DNS 服务器**在哪——
  所以准头取决于【用户的 DNS 与用户本身离得近不近】。

⭐ 2026 现状:EDNS Client Subnet 等扩展 能把客户端网段带给 CDN,位置判断更准。

30 秒实验

  1. 改一下设备的 DNS 再访问大网站,感受节点变化。
  2. 想想为什么【DNS 位置=用户位置】只是近似。
  3. 查查 EDNS Client Subnet 是什么。

常见误区

  1. 以为 CDN 能直接知道用户位置——它只能看 DNS 问路人。
  2. 以为就近判断总是准的——换 DNS 就可能【认错老家】。
自测三问(点开对答案) 1. CDN 判断位置看什么? —— 客户端用的 DNS 服务器在哪。 2. 什么情况下会判断错? —— DNS 与用户不在一地。 3. 返回给用户的是什么? —— 最近节点的 IP。

相关笔记