(1)从IPv4到IPv6的通信当IPv4主机B初次与IPv6主机A通信时,首先向本地网络的DNS服务器发送一个对A名字的查询请求,此请求记录是“A”,本地DNS服务器无此名字记录,此查询通过NAT-PT转交,则被DNS-ALG截获,然后将“A”记录改为“AAAA”记录,并直接将转换后的查询记录递交给IPv6网络的 DNS服务器,IPv6的DNS服务器返回:
主机A AAAA 200 1:250:2000:3::3
DNS-ALG将该应答截获,并将“AAAA”记录改为“A”记录,同时在地址映射表中查找此IPv6地址的映射地址,如果有,则直接用映射的IPv4地址替换DNS应答中的IPv6地址,并返回应答给IPv4主机B;如果没有,则向NAT模块请求分配一个映射地址给此IPv6地址,NAT确认映射表中没有关于此IPv6地址的映射表项后,在地址池中分配一个空闲的IPv4地址(比如202.115.9.249)映射给该IPv6地址,并在映射表中添加此绑定表项,最后把分配的IPv4地址返回给DNS-ALG,这时候DNS应答变为:
主机A A 202.115.9.249
DNS-ALG将此DNS应答返回给IPv4主机B。IPv4主机B此时就可以建立与IPv6主机A的通信,这里假定IPv4主机B发起的是TCP通信,则:源地址=202.115.8.3,源TCP端口=1 025;目的地址=202.115.9.249,目的TCP端口=80。
此数据包被路由器转发给NAT-PT,协议翻译模块PT转换源包的IP报头和TCP校验,在源地址前添加IPv6前缀,转换为IPv4映射的IPv6地址,并根据NAT地址映射表中202.115.9.249与2001:250:2000:3::3的映射关系,将包翻译为:源地址=2001:250: 2000:3::202.1 15.8.3,源TCP端口=1 025;目的地址=2001:250:2000:3::3,目的TCP端口=80。
这样,IPv4主机B可以与IPv6主机进行通信。对于在此映射表项生存期内的后续通信,将继续利用此表项,映射表项超时后将被删除,映射表项超时机制的引入一是为了释放地址资源和内存,另外还可以减少拒绝服务攻击(DoS)的风险。