公众号旧文
为什么 东京 明明是 Tokyo,但在网络中却总是被命名为 NRT?
Cloudflare 给源站做免费缓存,不亏吗?
在上面的这篇文章中,我用 F12 打开浏览器控制台,看到命中了缓存:
cf-cache-status: HIT
而命中的节点,则是
cf-ray: ...-NRT
这里的 NRT 代表东京,看到这,你可能也会好奇:
为什么东京明明是 Tokyo,在网络中,却被命名为 NRT,而不是 TOK?
因为你看到的,根本就不是城市名。
一、NRT 不是地名,而是机场代码
NRT,其实是 成田国际机场 Narita International Airport 的三字代码。
这是航空系统里面的一套全球标准,叫做:
国际航空运输协会机场代码,简称 IATA 机场代码。
类似的还有:
- 北京:PEK(首都机场)
- 上海:PVG(浦东机场)
- 洛杉矶:LAX
- 新加坡:SIN
这些名字,经常坐飞机的朋友,肯定不陌生,因为飞机行李标签上就会打印出来,比如下图中的 JFK 代表的是 纽约肯尼迪机场。

二、为什么互联网直接用了这套体系?
当然是因为好用。
1️⃣ 全球唯一,不会歧义
Tokyo 这个词,并不精确:
- 是东京都?
- 是东京市?
- 还是东京都市圈?
但 NRT 不一样,NRT 只指向单一的地方,没有歧义。
2️⃣ 更短,更适合机器
对程序来说:
- Tokyo(5个字符)
- NRT(3个字符)
显然,NRT 更省空间、更统一。
别小看这 2 字的差距,在日志、Header、路由标记里,这是很大的优化。
3️⃣ 历史原因:网络节点 ≈ 机场节点
早期的国际网络基础设施,有一个很有意思的特点:
很多骨干节点,就建在机场附近。
所以一开始:
机房怎么命名?直接用机场代码就完事了!
久而久之,这套命名就固化下来了。
三、Cloudflare 的 NRT,在表达什么?
回到浏览器控制台里的这个 Header:
cf-ray: xxxx-NRT
它表达的是,这个请求,是在东京这个节点被处理的。
但这个东京节点,并不一定在机场旁边,也不一定在成田。
它只是继承了这套命名体系。
四、一个更有意思的视角
你可以把这件事理解成:
人类世界用名字,网络世界用编号。
| 世界 | 表达方式 |
|---|---|
| 人类 | Tokyo |
| 网络 | NRT |
就像我们记朋友名字,而网站系统记用户 ID,本质是一样的。
五、一个小细节
东京其实有两个机场:
- 成田国际机场 Narita International Airport → NRT
- 东京国际机场 Haneda Airport → HND
但你在各种网络服务里,更多看到的是 NRT,却很少看到 HND。
原因是,NRT 是老牌国际枢纽,于是更早被互联网体系采用。
六、再回到最开始的问题
为什么 Cloudflare 不用 Tokyo,而用 NRT?
答案可以总结为:因为 NRT 不是地名,而是全球统一的节点编号。