我们都知道IPv6与IPv4协议网络的本质区别。那么在进行双向会话通信过程中两者有什么差异呢?下面我们就来详细说一下这方面的内容。Ipv6和IPv4协议动态NAT一样,NAT-PT只能用于由IPv6网络中的终端发起会话的应用,如果某个应用需要由IPv4协议网络中的终端发起会话,NAT-PT是无法实现的,因为,IPv4协议网络中的终端是无法用某个IPv4地址来绑定IPv6网络中的某个终端的。
如果非要实现由IPv4协议网络中的终端发起的会话,需要采用静态NAT,即在路由器R3配置静态的IPv4地址和IPv6地址之间的映射。
如果终端C希望访问IPv6网络中的 DNS服务器(IPv6 DNS),就构建以10.1.1.1为源地址,以193.1.1.5为目的地址的IPv4分组,该IPv4分组到达路由器R3后,路由器R3通过配置的静态地址映射,将目的地址转换成2001::2E0:FCFF:FE00:9。
但如果对IPv6中的其他终端也采用静态地址映射,需要为所有可能和IPv4 网络通信的终端静态分配IPv4地址,这显然是不可能的。
路由器R3不仅是地址和协议转换器,还是DNS应用层网关。DNS用于将完全合格的域名解析成IP地址,如果是IPv6网络,则解析成IPv6地址,如果是IPv4协议网络,则解析成IPv4地址。
DNS服务器给出完全合格的域名和对应的IP地址之间的映射,如终端A 2001::2E0:FCFF:FE00:7。当终端C想发起和终端A之间的会话时,终端C通过终端A的完全合格的域名:终端A解析出终端A对应的 IPv4地址。
由于在路由器R3中已经静态配置了IPv6网络中的DNS服务器的IPv6地址:2001::2E0:FCFF:FE00:9和IPv4地址:193.1.1.5之间的映射,终端C向IPv4地址为193.1.1.5的DNS服务器发送请求报文,请求报文被封装成IPv4分组后进入IPv4 网络,被IPv4协议网络路由到路由器R3。由路由器R3完成IPv4 DNS请求报文至IPv6 DNS请求报文的转换,并将请求报文封装成以2::10.1.1.1为源地址,以2001::2E0:FCFF:FE00:9为目的地址的IPv6分组,通过IPv6网络将该IPv6分组传输到IPv6网络的DNS服务器。
IPv6网络的DNS服务器根据完全合格的域名:终端A解析出IPv6地址:2001::2E0:FCFF:FE00:7,并将该地址通过DNS响应报文回送给源地址为2::10.1.1.1的终端(终端C)。响应报文被 IPv6网络路由到路由器R3,由路由器R3在IPv4地址池中选择一个IPv4地址(这里假定是193.1.1.1)分配给终端A,同时在会话表中建立 2001::2E0:FCFF:FE00:7和193.1.1.1之间的映射。
路由器R3将IPv6 DNS响应报文转换为IPv4 DNS响应报文,并将IPv4 DNS响应报文封装成以10.1.1.1为目的地址的IPv4分组,通过IPv4协议网络将该IPv4分组传输到终端C,终端C随后用IPv4地址:193.1.1.1和终端A进行通信。需要指出的是,在上述通信过程中,IPv4协议网络中的终端通过DNS的地址解析过程创建会话,并将地址映射和该会话绑定在一起,所有源地址为2001::2E0:FCFF:FE00:7的IPv6分组或目的地址为193.1.1.1的IPv4分组都属于该会话,按照会话表中给出的地址映射完成地址转换。这种类型的会话只能用规定时间内一直没有属于该会话的IP分组通过作为该会话的结束条件。
IPv4协议网络中所有终端和服务器对应的IPv6地址是固定的,IPv6网络中的终端可以获取Pv4网络中所有终端和服务器对应的IPv6地址,因此,IPv6网络中的终端可以通过直接给出IPv6地址的方式和IPv4协议网络中的终端通信。
当然,记住完全合格的域名总比记住128bit的IPv6地址容易,因此,IPv6网络中的终端可能通过完全合格的域名(如终端C)发起和IPv4协议网络中的终端之间的会话。这种情况下,由IPv6终端向IPv4协议网络的DNS服务器发送DNS请求报文,由路由器R3完成IPv6 DNS请求报文至IPv4 DNS请求报文的转换。当路由器R3接收到IPv4协议网络中的DNS服务器回送的DNS响应报文时,一方面通过加上网络前缀2::,将解析出的IPv4地址转换成IPv6地址,另一方面完成IPv4 DNS响应报文至IPv6 DNS响应报文的转换。