CodeGym /Java 课程 /模块 3 /网络地址转换

网络地址转换

模块 3
第 8 级 , 课程 4
可用

5.1 NAT简介

另一个非常有趣的话题是 NAT。NAT 代表网络地址转换,通常作为服务存在于每个路由器中。那么它是什么以及为什么需要它?

NAT是本地网络可以连接到全球网络(例如因特网)的点。

如您所知,在本地网络上,所有计算机(以及连接到网络的其他设备)都有自己的本地 IP 地址。并且为了与 Internet 上的服务器交换数据,我们的计算机可以向服务器发送请求并且服务器可以向我们发送响应是必要的。如果我们的 IP 地址在我们的本地网络之外是未知的,他应该在哪里发送响应?

想象一下,您正在给唐纳德特朗普写一封纸质信。特朗普是公众人物,他是唯一的——这是我们的公共服务器。你在信中注明了玛莎作为回信地址。捣碎很多。应该将答案发送给哪个玛莎?

因此,您从华盛顿给您的熟人(也是公众人物)寄了一封信,并严格指示要将其寄给特朗普。您的朋友收到一封信,将其寄给特朗普,并提供他在华盛顿的地址作为回信地址。

然后,在收到特朗普的回复后,熟人转发给你。与IP数据包相同...

私有IPv4地址的设备要访问本地网络外的设备和资源,必须先将私有地址修改为公共公共地址。

Just NAT 将私有地址转换为公共地址。这允许具有本地 IP 地址的设备访问其专用网络之外的资源。NAT 与本地 IP 地址相结合,已被证明是维护公共 IPv4 地址的有用方法。

世界上有 80 亿人,已经有更多的网络设备:电话、笔记本电脑、智能手表、服务器,任何智能设备。而且只有 40 亿个 IP 地址。以前看起来很多,但是随着互联网的飞速发展,大家都清楚这还不够。

这时 NAT 就派上用场了:一个公共 IPv4 地址可以被成百上千台设备使用,每台设备都有一个本地 IPv4 地址。NAT 具有为网络增加一定程度的隐私和安全性的额外好处,因为它对外部网络隐藏了内部 IPv4 地址。

5.2 NAT 中的子网

LAN 通常设计有专用 IP 地址。这些是来自私有子网的地址10.0.0.0/8172.16.0.0/12192.168.0.0/16。这些 IP 地址由组织或站点在内部使用,以允许设备在本地进行通信,它们无法在 Internet 上路由。

启用 NAT 的路由器可以配置一个或多个有效的公共 IPv4 地址。这些公共地址称为 NAT 池。

当内部网络上的设备将流量从网络发送到外部时,启用 NAT 的路由器会将设备的内部 IP 地址转换为来自 NAT 池的公共 IP 地址。对于外部设备,所有进出网络的流量似乎都有一个公共 IP 地址。

NAT 路由器通常运行在 Stub 网络的边缘。存根网络是网络理论中的一个术语:存根网络与相邻网络有一个连接,网络有一个入口和出口。

当 Stub 网络内的设备想要与其网络外的设备通信时,数据包被转发到路由器并执行 NAT 过程,将设备的内部专用地址转换为公共、外部、可路由地址。

5.3 NAT 术语

如果深究网络理论,那么NAT就是一个内部网络,就是要翻译的一组子网。外部网络是指所有其他网络。

使用 NAT 时,IP 地址根据它们是在专用网络上还是在公共网络上(在 Internet 上)以及流量是传入还是传出而具有不同的名称。

NAT包括四种类型的地址:

  • 内部本地地址(Inside local address);
  • 内部全局地址(Inside global address);
  • 外部本地地址
  • 外部全球地址 (Outside global address);

在确定正在使用哪种类型的地址时,请务必记住,NAT 术语始终是从具有转换地址的设备的角度应用的:

  • 内部地址(Inside address)——被NAT转换的设备地址;
  • 外部地址——目标设备地址;
  • 本地地址是网络内部出现的任何地址;
  • 全局地址是出现在网络外部的任何地址。

让我们用图表示例来看一下。

左图中的计算机有一个内部本地(Inside local)地址192.168.1.5,从它的角度来看,Web 服务器有一个外部(outside)地址208.141.17.4。当数据包从计算机发送到 web 服务器的全局地址时,PC 的内部本地( Inside local208.141.16.5 )地址被转换为(inside global)。外部设备地址通常不会被转换,因为它是一个公共 IPv4 地址。

值得注意的是,一台计算机有两个地址:本地地址和全局地址,而 Web 服务器具有相同的公共 IP 地址。在他看来,源自电脑的流量来自于内部全局地址208.141.16.5。NAT 路由器是内部和外部网络之间以及本地和全局地址之间的分隔点。

术语“内部”“外部”与术语“本地”“全局”结合使用以指代特定地址。在图中,路由器配置为提供 NAT,并有一个公共地址池可分配给内部主机。

5.4 数据包路径

如果你已经累了,那就去听下一课吧。如果您仍然感兴趣,那么欢迎深入虫洞。

下图显示了流量如何通过支持 NAT 的路由器从内部计算机发送到外部 Web 服务器、发送出去并中继回来。

NAT 3 中的子网
路由器 NAT 表
个人电脑 网络服务器
全球保险业协会 本地内部 本地以外 全球以外
208.141.17.4 192.168.1.5 208.141.16.5 208.141.16.5

内部本地地址- 从内部网络看到的源地址。在图中,地址192.168.1.5被分配给计算机——这是它的内部本地地址。

内部全局地址 - 从外部网络看到的源地址。图中,当来自计算机的流量发送到位于 的 Web 服务器时208.141.17.4,路由器会将内部本地地址(local address)转换为内部全局地址(Inside global address)。在这种情况下,路由器将IPv4源地址从更改192.168.1.5208.141.16.5

外部全局地址 - 从外部网络看到的目的地地址。这是分配给 Internet 上主机的全球可路由 IP 地址。在图中,Web 服务器位于208.141.17.4。大多数情况下,外部本地地址和外部全局地址是相同的。

外部本地地址 - 从内部网络看到的收件人地址。在此示例中,计算机将流量发送到位于208.141.17.4

现在让我们看看整个包路径。具有该地址的计算机192.168.1.5正在尝试与 Web 服务器通信208.141.17.4。当数据包到达支持 NAT 的路由器时,它会读取数据包的目标 IP 地址以确定数据包是否符合指定的转换标准。在此示例中,源地址与条件匹配,并从192.168.1.5(内部本地地址)转换为208.141.16.5(内部全局地址)。

路由器将这个本地到全局的地址映射添加到 NAT 表中,并将带有转换后的源地址的数据包发送到目的地。网络服务器响应一个寻址到 PC 的内部全局地址 ( 208.141.16.5) 的数据包。

路由器收到带有目标地址的数据包208.141.16.5,并检查 NAT 表以查找该映射的条目。它使用此信息并将内部全局地址 ( 208.141.16.5) 转换回内部本地地址 ( 192.168.1.5),数据包被重定向到 PC。

5.5 NAT的优缺点

NAT 服务是一个非常强大的解决方案,随处可见。NAT 提供了许多好处,包括:

  • NAT 维护注册寻址方案,提供灵活的 LAN 操作。使用 NAT,内部主机可以为所有外部通信共享一个公共 IP 地址。这种类型的配置需要很少的外部地址来支持许多内部主机。
  • NAT 增加了 Internet 连接的灵活性。可以实现多池、备份池、负载均衡池,提供可靠的公网连接。
  • NAT 为网络的内部寻址方案提供一致性。在不使用私有 IP 地址和 NAT 的网络中,更改通用 IP 地址方案需要重定向现有网络中的所有主机。主机转发的成本可能很高。NAT 允许保留现有的 IPv4 专用寻址方案,同时允许轻松更改新的公共寻址方案。这意味着组织可以更改供应商,而不需要更改其任何内部客户。
  • NAT提供网络安全。由于专用网络不公布其地址或内部拓扑,因此在与 NAT 结合使用以获得受控的外部访问时,它们仍然相当可靠。但是,您需要了解 NAT 并不能取代防火墙。

但是 NAT 有一些缺点。互联网上的主机似乎直接与启用 NAT 的设备而不是私有网络内的实际主机对话,这一事实产生了许多问题:

  • 使用 NAT 的缺点之一与网络性能有关,尤其是对于 VoIP 等实时协议。NAT 增加了交换延迟,因为数据包标头中每个 IP 地址的转换都需要时间。
  • 使用 NAT 的另一个缺点是端到端寻址丢失。许多 Internet 协议和应用程序依赖于从源到目的地的端到端寻址。某些应用程序不适用于 NAT。使用物理地址而不是合格域名的应用程序无法到达通过 NAT 路由器转换的目的地。有时可以通过实施静态 NAT 映射来避免这种情况。
  • 端到端 IPv4 跟踪也丢失了。跟踪在多个 NAT 跃点上经历多个数据包地址更改的数据包更加困难,从而使故障排除变得困难。
  • NAT 的使用也使 IPsec 等隧道协议变得困难,因为 NAT 会更改标头中的值,这些值会干扰 IPsec 和其他隧道协议执行的完整性检查。
  • 需要从外部网络启动 TCP 连接的服务或无状态协议(例如使用 UDP 的协议)可能会中断。如果 NAT 路由器未配置为支持这些协议,则传入数据包无法到达其目的地。
评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION