网络交互之网络接入——NAT | 豆包MarsCode AI刷题

118 阅读4分钟

在观看《后端入门 - 网络与部署L1:网络交互之网络接入》 时看到了NAT技术这个名词,以及记不太清计网教过的内容,趁此机会简单复习一下

image.png image.png

概述

NAT ( Network Address Translation ) 中文意思是"网络地址转换",是一种把内部私有网络地址(IP地址)翻译成合法网络IP地址的技术。NAT 可以让那些使用私有地址的内部网络连接到Internet或其它IP网络上。NAT路由器在将内部网络的数据包发送到公用网络时,在IP包的报头把私有地址转换成合法的IP地址。

NAT有几种不同的类型,主要包括:

  • 静态NAT:将一个私有IP地址映射到一个公共IP地址。使用场景通常是需要将内部设备暴露给外部网络(例如,Web服务器)。
  • 动态NAT:将私有IP地址池映射到公共IP地址池中的一个公共IP地址。动态NAT在内部设备请求访问外部网络时随机选择一个公共IP地址。
  • 端口地址转换(PAT) :又称为“网络地址端口转换”,是最常用的NAT形式。它允许多个内部设备通过同一个公共IP地址访问外部网络,使用不同的端口号来区分不同的会话。

工作原理

NAT工作在网络层,通常配置在路由器或防火墙上。其基本原理是在数据包通过NAT设备时,修改数据包的源IP或目标IP地址。

  • 源地址转换:当内部网络中的设备向外部网络发送数据包时,NAT设备将源IP地址替换为其公共IP地址,并在NAT表中记录此映射关系。
  • 目标地址转换:当外部设备向内部网络发送数据包时,NAT设备将目标IP地址替换为相应的内部IP地址。

实例

假设有一个家庭网络,内部有多个设备(如计算机、手机和智能电视),它们使用私有IP地址进行通信。这些设备通过一个NAT路由器连接到互联网。家庭网络的公共IP地址是 203.0.113.5

  • 内部设备IP地址

    • 计算机:192.168.1.2
    • 手机:192.168.1.3
    • 智能电视:192.168.1.4

假设计算机(192.168.1.2)想要访问一个外部网站。数据包的源IP地址是 192.168.1.2,目标IP地址是 93.184.216.34

  1. NAT转换: 当计算机发送数据包到NAT路由器时,路由器会检查数据包的源IP地址。 NAT路由器将源IP地址 192.168.1.2 替换为其公共IP地址 203.0.113.5,并为这个连接分配一个唯一的端口号(假设为 50001)。 数据包经过转换后,变为:

    • 源IP地址:203.0.113.5:50001
    • 目标IP地址:93.184.216.34
  2. NAT表记录:NAT路由器在其NAT表中记录这个映射关系,以便后续的返回数据包能够正确路由。 映射关系: 192.168.1.2:50000203.0.113.5:50001

  3. 外部网站的响应: 外部网站 处理请求并发送响应数据包,源IP地址是 93.184.216.34,目标IP地址是 203.0.113.5,端口是 50001

  4. NAT路由器的反向转换:NAT路由器接收到来自外部网站的响应数据包。查看NAT表,找到与 203.0.113.5:50001 对应的内部IP地址。 NAT路由器将目标IP地址 203.0.113.5 替换为 192.168.1.2,并将目标端口号 50001 去掉(因为内部设备不需要端口号)。 数据包经过转换后,变为:

    • 源IP地址:93.184.216.34
    • 目标IP地址:192.168.1.2
  5. 内部设备接收数据:最终,响应数据包被发送到计算机 192.168.1.2,该计算机可以处理响应并与外部网站继续通信。

要点

1、路由器本质上就是一个NAT

内部用户通过NAT的设备,修改我的源地址。比如内部局域网的地址都是192,很多内部比如公司A和公司B可以用重复IP地址,都是192,但是连接到互联网设备的外部地址上都是一个全局唯一的外网地址,就是NAT服务器上的,这时就把不同的地址映射到了一个地址去做联网,这样就节约了一个IPV4的地址。

2、NAT是否只是改了一个IP地址呢?

NAT其实是IP + 端口一起去改变,这样就可以解决PPT中的第二个问题:多个内网客户端访问同一个目标地址+端口,源端口恰好一样,冲突该怎么解决?为防止冲突,自己在NAT设备上维护一张表,每次有现在正在存在的连接的时候,端口选择另外一个就可以了。