网络基础 - NAT 篇

一、全局 IP 地址(公网 IP 地址)和私有 IP 地址

RFC 1918 规定了用于组建局域网的私有 IP 地址:

  • 10.0.0.0 ~ 10.255.255.255
  • 172.16.0.0 ~ 172.31.255.255
  • 192.168.0.0 ~ 192.168.255.255

包含在以上范围内的 IP 地址都属于私有 IP 地址,而在此之外的 IP 地址称为全局 IP 地址

全局 IP 地址要在整个互联网范围内保持唯一,但私有 IP 地址不需要,只要在同一个域里保证唯一即可,在不同的域里即便出现相同的私有 IP 地址也不会影响使用

  • 一个路由器可以配置两个 IP 地址,一个是 WAN 口 IP,一个是 LAN 口 IP(子网 IP)
  • 路由器 LAN 口连接的,都从属于当前这个路由器的子网中
  • 子网内的 IP 地址不能重复,但是子网间的 IP 地址无所谓重复与否
  • 每一个家用路由器,其实又作为运营商路由器的子网中的一个节点,这样的运营商路由器可能会有很多级,而最外层的运营商路由器的 WAN 口 IP 是一个公网 IP
  • 子网内的主机需要和外网进行通信时,路由器将 IP 首部中的 IP 地址替换成 WAN 口 IP,这样逐级替换,最终将数据包中的 IP 地址替换成一个公网 IP,这种技术称为 NAT
  • 如果我们希望自己实现的服务器程序能够在互联网上被访问到,就需要把程序部署在一台具有公网 IP 的服务器上,这样的服务器可以在阿里云、腾讯云等上进行购买

二、NAT(Network Address Translator)

NAT 是用于在本地网络中使用私有 IP 地址,在连接互联网时转而使用全局 IP 地址,也就是一种将私有 IP 和全局 IP 相互转换的技术方法

反之,当包从源地址 163.221.120.9 发过来时,目标地址 202.244.174.37 先被转换成私有 IP 地址 10.0.0.10 以后再被转发,在 NAPT 路由器的内部,有一张自动生成的用来转换地址的表,当 10.0.0.10 向 163.221.120.9 发送第一个包时生成对应表项,并按照表中的映射关系进行处理

三、NAPT(Network Address Ports Translator)

如果一个局域网内,有多台主机都访问同一个公网服务器,那么对于服务器返回的数据中,目标 IP 地址都是相同的,NAT 路由器该如何判定将这个数据包转发给局域网内的哪台主机?除转换 IP 地址外,还出现了可以转换 TCP、UDP 端口号的 NAPT 技术

这种关联关系也是由 NAPT 路由器自动维护的,例如,在 TCP 的情况下,建立 TCP 连接首次握手时的 SYN 包一经发出,就会生成对应表项,而后又随着收到关闭连接时发出 FIN 包的确认应答从表中被删除

四、NAPT-PT

NAPT-PT 是将 IPv6 的首部与 IPv4 的首部相互转换的一种技术,有了这种技术,那些只有 IPv6 地址的主机也就能够与 IPv4 地址的其他主机进行通信了

五、NAT 的潜在问题

由于 NAPT 依赖于自己的转换表,因此会有如下几点限制:

相关推荐
YWamy5 小时前
如何降低RTC SDK在复杂网络环境下的运行成本
网络·音视频·实时音视频
北京盛世宏博5 小时前
信创国产化智慧档案馆管库系统:十二防一体化管控平台落地笔记
网络·方案·温湿度·智慧档案馆建设
w-w0w-w6 小时前
SQL注入
网络·数据库·sql
一条泥憨鱼6 小时前
【计算机网络】短连接、长连接与连接池:从 TCP 握手到池化复用的完整链路
网络·数据库·网络协议·tcp/ip·计算机网络
北京盛世宏博6 小时前
数字孪生 3D 可视化实战:档案十防体系温湿度数据联动与告警定位实现
网络·档案八防·十防
Lynne3097 小时前
EtherCAT网络中,多个节点如何配置才能互不干扰?
网络·网络配置·ethercat·工业网络
Yang96118 小时前
实验室里的多面手:鼎讯信通TM-150信号发生器技术拆解与实测思考
网络
默|笙10 小时前
【Linux网络】传输层协议TCP(1)---TCP报文介绍
linux·网络·tcp/ip
云飞云共享云桌面10 小时前
1台SolidWorks服务器如何承载10个设计并发?
运维·服务器·网络·3d·制造
Escalating_xu11 小时前
【Linux 网络编程】NAT、代理服务与内网穿透:从一个公网 IP,到一条真正可达的连接
linux·网络·tcp/ip