💐个人主页:初晴~
📚相关专栏:计算机网络那些事
我们在 IP协议 一文中介绍过,由于IPv4协议中 IP地址只有32位,导致最多只能表示 42亿9千万个IP地址。但我们需要通过IP地址来标识网络上的每一个设备,因此我们期望 IP地址是唯一的。这样,42亿9千万放在现在这个万物互联的时代已经捉襟见肘了。为了缓解这一问题,NAT协议就应运而生了。
一、NAT技术是什么?
NAT(Network Address Translation,网络地址转换)是一种用于重新映射一个IP地址空间到另一个IP地址空间的技术,通常用于将多个私有或内部IP地址转换为单一的公有或外部IP地址。这使得使用私有IP地址的设备可以连接到互联网上。
即以一当千,通过一个 IP 代表一大波设备
将 IP地址分为两大类:
- 内网IP/私网IP
- 外网IP/公网IP
要求公网 IP必须是唯一的,但是私网 IP在不同的局域网中是允许重复的
这样运营商的公网 IP,不是服务一个设备,而是服务一个片区,可能有上万个设备。此时一个 IP 就代表了上万个设备,此时 IP 的利用率就大大提高了。
二、NAT IP转换过程
- NAT路由器将源地址从 10.0.0.10 替换成全局的IP 202.244.174.37
- NAT路由器收到外部的数据时,⼜会把⽬标IP从 202.244.174.37 替换回 10.0.0.10
- 在NAT路由器内部,有⼀张⾃动⽣成的,⽤于地址转换的表
- 当 10.0.0.10 第⼀次向 163.221.120.9 发送数据时就会⽣成表中的映射关系
这里NAT路由器为其内部网络分配IP地址时有两种分配方式:
静态NAT:为内部网络中的每个主机固定分配一个全球唯一的 IP地址。这意味着内部主机总是映射到相同的全局IP地址。
动态NAT:为内部网络中的主机提供一组全球唯一 IP地址池。当内部主机需要与外部网络通信时,会从这个池中分配一个全局IP地址给它。
三、NAPT/PAT
但这样还是出现很多问题的,如果局域⽹内,有多个主机都访问同⼀个外⽹服务器,那么对于服务器返回的数据中,⽬的IP都是相同的。NAT路由器该如何判定将这个数据包转发给哪个局域⽹的主机?
这时候 NAPT 来解决这个问题了。
这是最常用的NAT形式之一,它不仅改变了IP地址,还改变了传输层的端口号。NAPT允许大量的内部主机共享同一个或少数几个公网IP地址,通过跟踪每个会话的端口号来区分不同的内部主机。使⽤IP+port来建⽴这个关联关系:
这种关联关系也是由NAT路由器⾃动维护的。
例如在TCP的情况下,建⽴连接时,就会⽣成这个表项;在断开连接后,就会删除这个表项
四、NAT技术的优缺点
由于NAT依赖这个转换表,所以有诸多限制:
- ⽆法从NAT外部向内部服务器建⽴连接
这也是为什么我们在自己电脑上开发的网站,别人无法直接进行访问的原因。因为我们设备处于一个私网,处于其它私网的设备也就无法直接使用了。需要将我们的网站部署在公网上,获得一个公网IP,其它用户才能正常进行访问
- 装换表的⽣成和销毁都需要额外开销
- 通信过程中⼀旦NAT设备异常,即使存在热备,所有的TCP连接也都会断开
NAT 的优势:
- 解决IP地址短缺问题:
NAT通过允许内部网络使用私有IP地址(如10.x.x.x, 172.16.x.x至172.31.x.x, 或192.168.x.x),然后在这些地址和有限的公共IP地址之间进行转换,有效地缓解了IPv4地址的耗尽问题。
- 节省公网IP地址资源:
由于NAT可以允许多个设备共享一个或少数几个公网IP地址,因此它有助于节省宝贵的公网IP地址资源。
- 提高网络安全性:
NAT隐藏了内部网络的结构,因为外部观察者只能看到转换后的IP地址,而看不到内部网络的实际地址。这种隐蔽性增加了黑客攻击内部网络的难度。
- 简化网络管理:
使用私有地址段意味着组织可以自由地重新配置其内部网络,而无需担心外部影响。此外,当内部主机的数量增加或减少时,管理员只需要管理较少数量的公网IP地址。
- 易于扩展:
由于内部地址是私有的并且不会与其他网络冲突,所以可以轻松地添加或更改内部网络结构,而不会影响外部连接。
- 支持服务发布:
通过端口地址转换(PAT),NAT可以用来将特定的服务发布到互联网,例如Web服务器、邮件服务器等,同时仍然保持内部网络的安全性。
并且 NAT 有⼀个最⼤的优点:
- 不需要更新硬件设备,只更新软件,就可以解决 IP 地址不够⽤的问题!
也正是这一优点,几乎阻断了 IPv6 协议的发展。因为IPv6与IPv4并不兼容,需要重新部署硬件设备,更新成本更高,也就迟迟不能得到普及了。
那么本篇文章就到此为止了,如果觉得这篇文章对你有帮助的话,可以点一下关注和点赞来支持作者哦。如果有什么讲的不对的地方欢迎在评论区指出,希望能够和你们一起进步✊