📄 一句话概括
让用户访问最近节点,主流做法靠 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 秒实验
- 改一下设备的 DNS 再访问大网站,感受节点变化。
- 想想为什么【DNS 位置=用户位置】只是近似。
- 查查 EDNS Client Subnet 是什么。
常见误区
- 以为 CDN 能直接知道用户位置——它只能看 DNS 问路人。
- 以为就近判断总是准的——换 DNS 就可能【认错老家】。
自测三问(点开对答案)
1. CDN 判断位置看什么? —— 客户端用的 DNS 服务器在哪。 2. 什么情况下会判断错? —— DNS 与用户不在一地。 3. 返回给用户的是什么? —— 最近节点的 IP。- ☐ 下一节(5.5.3 通过重定向向服务器分配访问目标)
相关笔记
- 寻找相应的DNS服务器并获取IP地址 — DNS 接力复习
- 通过重定向向服务器分配访问目标 — 另一种分配法
- 🔌 网络是怎样连接的 · 索引