地址转换的基本原理是在转发网络包时对 IP 头部中的 IP 地址和端口号进行改写。

可能这样说会比较模糊,还是用例子说明一下吧。

找了张图

从图上可以看出,198.18.8.31就是这个内网的惟一的公网IP地址了。

具备地址转换功能的设备不仅有路由器,有些防火墙也有地址转换功能, 它的工作方式和路由器是相同的,我们这里就直接叫路由器了,因为我们常用的方式就是通过路由器设置。

地址转换的过程简介:

互联网设备是无法直接访问内网设备的,所以首先是内网设备访问互联网(一些内网穿透方式可以实现外网访问内网设备,但实际上也只是地址转换的一种应用罢了)。

图中,假设设备10.10.1.1(后面就叫H1吧)先向互联网发出请求,数据包传到路由器这里,路由器随便找一个未使用的端口在路由表中新增一条记录(图中第一条就是),然后路由器修改IP的源请求ip和端口(原来的10.10.1.1/1025,现在是198.18.8.31/5436),然后把包发出去。对方发送结果信息的时候,目标对象并不是实际发送请求的H1,而是路由器,路由器接收到这个请求,到路由表里对照一下,知道这个信息应该转发给H1,于是路由器把包的目的地址和端口改成H1的,再把包转发给H1。如果没有问题不需要重发,那么路由器就会立即删掉路由表中的这条记录(毕竟端口的资源也是有限的(65536个,但是不是所有端口都可以用于地址转换的),而且需求量也不小,不能老是被占着)。

从这个过程中可以看出,是内网设备首先发起请求,互联网才能把消息传送给内网设备的,路由表中有了匹配记录。这就是为什么互联网不能主动直接访问内网设备的原因。

那么问题来了,假如我人不在公司,又需要使用公司内网设备,怎么办?

正如前面所说,可以通过“内网穿透”的方式实现这样的需求。

江流川
原创文章 153获赞 36访问量 29万+
关注私信
展开阅读全文