第10章Ipv4和Ipv6的交互
在ipv4(32)地址不够用的时候,ipv6的使用(128位)将大大增加 地址的使用范围。但是毕竟还是用从ipv4到ipv6的过度期,这个时间还不知道多久呢,就像windows系统一样,win7 兼容xp 2003 之类的,当使用ipv6的时候还是得兼容ipv4 ,所以得涉及到ipv4和ipv6的交互操作。
关于xp安装双协议栈的(ipv4协议栈和ipv6协议栈)的说明
http://ipv6.jx.edu.cn/ipv6-cfgXP.htm
第一部是ipv6install 在ipv4的xp上就会有ipv4和ipv6双协议栈了
拥有双重协议栈的好处是,当运行ipv6服务器的时候,接受的客户端既可以是ipv4地址的也可以是ipv6地址的内容
ipv4客户端+ipv6服务器
1首先ipv6服务器启动,创建一个ipv6的监听套接字
2 ipv4调用gethostbyname找到一个与服务器相对应的A记录(支持双协议栈)
3 客户进程向服务器connect 发送SYN同步数据包
4 服务器收到ipv4数据报,转化成ipv6数据(ipv4到ipv6的映射)
5 服务器对发来的数据报发送ipv4数据报格式的响应。
这个是ipv4 和 ipv6 数据报进入 协议栈的时候使用的地址,如果ipv4(tcp/udp)的 进入到服务器是ipv6的accept函数的时候,使用的是ipv6地址是经过ipv4地址映射的ipv6地址
ipv6客户与ipv4服务器
1 首先ipv服务器启动
2 客户端ipv6 先调用gethostbyname的获得ipv4(服务器地址)到ipv6的映射,然后填充connect函数的ipv6地址结构,发出去的是ipv4数据报
3服务器发送ipv4 应答包
这个 发送数据,地址转化问题,向前面说的,如果服务器是ipv4地址,客户端是ipv6地址的话,在connect这个ipv4地址的时候,先调用gethostbyname函数获得其对应的ipv6地址,然后connect建立连接,内核是看这个地址是一个映射,发数据报的时候,发送的是ipv4数据报到服务器