简介
NAT(Network Address Translation),网络地址转换。NAT可以看成一个开放到公网(全球因特网)上的公用路由器,用来代理一个子网下的所有主机的请求和应答。
NAT在转换的时候,会将主机的ip地址和端口号替换成公用路由器的ip地址和端口,并且维护在一张表中进行一一对应,为了将返回的数据应答到唯一的主机上。
作用
由于ipv4规则的ip地址消耗殆尽,不可能为所有的主机都分配真正的公网ip,所以很多主机ip地址都是虚拟的ip地址,并且有统一的代理服务器进行消息的请求和应答。
NAT的作用就是将私有的ip地址转换成全球因特网承认的ip地址,私有的ip地址有三种:
①10.0.0.0~10.255.255.255/8
②172.16.0.0~172.31.255.255/12
③192.168.0.0~192.168.255.255/16
这些IP地址是用于私有的网络。
NAT使得一个组织局域网中的主机都能互相访问,但是想要访问公网就只有一条出路,这样也可以保证局域网中信息的安全性。
例子
假设用户王某坐在家庭主机10.0.0.1傍边,请求域名为 www.bilibili.com (ip地址为112.49.19.4)的web服务器(端口为80)上的一个web页面。主机10.0.0.1为其指派了任意的端口2233,并将请求的报文发送到LAN中。
NAT路由器收到该数据请求,为其生成了新的端口号5000,并将ip地址替换成广域网的ip地址138.76.29.7,然后继续想目标服务器请求。
具体步骤如下:
- 10.0.0.1:2233 发送报文 —> LAN
- LAN —> NAT路由器 —> 替换成138.76.29.7:5000 并维护一张映射表
- 138.76.29.7:5000 发送请求报文 —> 112.49.19.4:80
- 返回数据到WAN —> NAT路由器
- NAT路由器从维护的映射表中获取私有ip地址
- 返回数据 —> LAN —> 10.0.0.1:2233
读者以前可能发现,百度的ip地址和主机的ip地址不同,因为一个是公网的,主机的只是私有的ip地址,中间就是利用了NAT。
代理服务器,即NAT在跳转的当中可能存在很多个,即一个请求可能通过n个NAT。