地址转换的基本原理是在转发网络包时对IP头部中的IP地址和端口号进行改写
。具体的过程我们来看一个实际的例子,假设现在要访问Web服务器,看看包是如何传输的。
首先,TCP连接操作的第一个包被转发到互联网时,会像图3.18这样,将发送方IP地址从私有地址改写成公有地址
。这里使用的公有地址是地址转换设备的互联网接入端口的地址。
与此同时,端口号也需要进行改写,地址转换设备会随机选择一个空闲的端口
。然后,改写前的私有地址和端口号,以及改写后的公有地址和端口号,会作为一组相对应的记录保存在地址转换设备内部的一张表中。
在对外只能使用一个公有地址的情况下,可以用不同的端口号来区别内网中的不同终端。
改写发送方IP地址和端口号之后,包就被发往互联网,最终到达服务器,然后服务器会返回一个包。服务器返回的包的接收包是原始包的发送方,因此返回的包的接收方就是改写后的公有地址和端口号。这个公有地址其实是地址转换设备的地址,因此这个返回包就会到达地址转换设备
。
接下来,地址转换设备会从地址对应表中通过公有地址和端口号找到相对应的私有地址和端口号,并改写接收方信息,然后将包发给公司内网,这样包就能够到达原始的发送方了。
在后面的包收发过程中,地址转换设备需要根据对应表查找私有地址和公有地址的对应关系,再改写地址和端口号之后进行转发。
当数据收发结束,进入断开阶段,访问互联网的操作全部完成后,对应表中的记录就会被删除。
通过这样的机制,具有私有地址的设备就也可以访问互联网了。从互联网一端来看,实际的通信对象是地址转换设备(这里指的是路由器)
。
上面是以公司内网为例来进行介绍的,家庭网络中的工作过程也是完全相同的,只是规模不同而已。
总结
- ip地址数量有限 所以要共享