首页 时政热点 科技头条 智能AI 安全攻防 数码硬件 开发者生态 汽车 游戏 社会热点 开源推荐 医疗健康 归档 标签 关于

互联网中心化与NAT的原罪

2026-08-31 1 阅读 约6分钟阅读 robinpie
分享:
字号:
互联网中心化和 NAT 文件传输的原罪,Randall Munroe,https://xkcd.com/949,知识共享署名-非商业性 2.5 在这部漫画中,普通人拥有 FTP 服务器的概念很快就被驳回了。是的,这并不常见。对于普通计算机用户来说,有人可以……连接到您的计算机的想法感觉很奇怪,甚至很危险——看看您的 IP 地址被互联网上的其他人知道的非常常见的讽刺恐惧。如果你拿一个“擅长计算机”但不是网络人士的人来说,他们的互联网心理模型可能会涉及“服务器”或“云”的定义,以某种有意义的方式将他们与个人计算机区分开来。真正的点对点,如果他们曾经想过的话,是一种努力:WebRTC、STUN、TURN、ICE,等等。鉴于我们生活在一个充满 NAT、CGNAT 和限制性 ISP 的世界,这并不是完全错误的,但它破坏了原始互联网的优雅设计。为什么没有 FTP 服务器 网络地址转换 (NAT) 于 1994 年在 RFC 1631 中首次正式提出。在其摘要中,它指出: IP 互联网面临的两个最引人注目的问题是 IP 地址耗尽和路由扩展。正在制定这些问题的长期和短期解决方案。短期解决方案是 CIDR(无类域间路由)。长期解决方案包括针对具有更大地址的新互联网协议的各种提案。无类域间路由不是本文的重点,但基本上我们开始为人们提供更多网络规模的选择,虽然实现起来很复杂,但它在哲学上几乎没有争议。 RFC 1631 提出了路由中 IP 地址耗尽和扩展的第二种短期解决方案:NAT。虽然它与当今家庭路由器上普遍存在的 NAT 类型并不完全相同,但基本思想是相同的:它允许多个设备通过在流量路由设备上传输数据包时修改 IP 数据包标头中的网络地址信息来共享 IP 地址(从路由设备另一端的设备的角度来看)。后来我们保留了某些地址供私人使用,这些东西在大多数 IP 网络上结合使用——网络内的私人地址,NAT 到路由器上的一个公共地址。在典型的家庭路由器上,通常使用 NAT 连接到外部服务器的方式如下: 您的计算机发送如下数据包: 源 IP 10.11.70.21 源端口 50413 目标 IP 67.215.249.229 目标端口 70 它到达您的路由器,并将其修改为: 源 IP 146.7.15.85 源端口 60612 目标 IP 67.215.249.229 目标端口 70 服务器回复: 目标 IP 146.7.15.85 目标端口 60612 您的路由器将其重写回: 目标 IP 10.11.70.21 目标端口 50413 如果您已经想清楚了这一点,您可能会问:在外部服务器要先与您通信的情况下,该怎么做?发生?它发送一个数据包到 146.7.15.85,而你的路由器……哦不。它不知道将其发送到哪里。解决这个问题自然而然,人们几乎立即注意到这是一个问题,因为人们从一开始就想在自己的卧室里运行游戏服务器、FTP 服务器和 Web 服务器。因此,围绕 NAT 形成了一个完整的解决方案生态系统,其中没有一个能够恢复互联网的基本意图,也没有一个适用于所有情况。端口转发 最直接的解决方法是告诉您的路由器“嘿,当数据包进入端口 60612 时,将其发送到端口 50413 上的 10.11.70.21,不问任何问题。”这就是端口转发,也是大多数人都知道的 NAT 解决方法。端口转发的问题之一,从概念上讲,是一个公共IP+端口一次仍然只能映射到一台设备,这意味着两台设备不能同时在同一个公共IP+端口上运行服务。这实际上是一个比听起来更严重的问题。在大型企业或大学网络中,只有少量甚​​至只有一个私有 IP,这基本上会杀死本地托管,而无需执行更复杂的操作。有时,您的 ISP 也将您的外部 IP 置于 NAT 后面 - 这称为运营商级 NAT (CGNAT) - 现在您无法控制执行转换的设备,因此您无法转发端口。您获得的是 IP 地址的一小部分。另外,NAT 的另一个问题是没有人愿意打扰它,这就是我们发明的原因:UPnP UPnP 及其现代同类 NAT-PMP 和 PCP,试图通过让软件直接要求路由器转发端口来解决“没有人愿意打扰它”的问题。与手动端口转发一样,这是对路由器的请求 - 如果您的 ISP 欺骗了您,那么您就不走运了。由于错误的安全思维,它也经常被禁用——部分是因为早期的实现中有几个错误,部分是因为
这篇文章对您有帮助吗?

订阅66必读

每日精选科技资讯,直达你的邮箱