首页 电脑 电脑学堂 查看内容

实例解析IPv6下的VC网络编程

2006-4-3 04:55 452 0

摘要:     自IPv4诞生至今已有20多年了,目前它虽仍因互联网的成功而风光无限,但是如同“Internet正在成为其自身巨大成功的受害者”一样,目前IPv4地址的极度匮...
关键词: IPv6 地址 addr sin struct 协议 sockaddr 目前 windows 环境

    自IPv4诞生至今已有20多年了,目前它虽仍因互联网的成功而风光无限,但是如同“Internet正在成为其自身巨大成功的受害者”一样,目前IPv4地址的极度匮乏注定它将被历史所淘汰。而IPv6—IPv4的继承人,具有地址空间巨大,支持QOS等许多优良特性,在不久的将来会迅速的普及,但IPv6的出现将对目前网络编程方式产生一定的影响。  本文将就IPv6环境下的网络编程方式进行实例解析。   最终效果:  配置篇  目前我们所用的IP协议是v4版本的, 比如192.168.0.1。它是在1981年由RFC791标准化的。而ipv6是IP协议的新版本,标准化工作始于1991年,主要部分在1996年完成。它的地址长度为128位。比如3ffe:b00:c18:1::10。  要进行IPv6编程,我们首先要自己搭建一个IPv6的实验环境。在这里我将简单介绍windows平台与linux平台的配置方法。由于只是讲解一下实验环境的搭建,所以其他的细节将不做详细说明。  在window2K下安装Microsoft IPv6 Technology Preview for Windows 2000  1.下载tpipv6-001205-SP3-IE6。可以从http://hs247.com下载,也可从微软官方下载。  2.在tpipv6-001205-SP3-IE6\setup目录下双击hotfix.exe。  3.重启后在控制面板->网络和拨号连接->本地连接->右键打开属性对话框->安装->协议->添加ipv6协议。  效果如图1。图1  在windows XP下安装ipv6  XP本身已经自带ipv6的功能了,所以不需要另外安装。只不过默认是不启用的。如果要启用Xp下的ipv6只要在命令行方式下输入ipv6 install就行了。同win2k一样启用/关闭IPv6功能是net start tcpip6和net stop tcpip6。  地址配置的举例  在装完IPv6协议栈后我们给机器配个地址,然后ping6一下试试。  添加地址的命令是:ipv6 adu ifindex/address  删除地址的命令是:ipv6 adu ifindex/address lifetime 0(即将生命期设为0便可)  ping在ipv6环境下变成了ping6 address   实例篇  IPv6程序相对于IPv4改动并不大。其中主要的改动就是地址结构与地址解析函数。在RFC中详细说明了socket api 为适应IPv6所做的改动。而且windows平台与Linux平台在实现上也几乎是一样的。只不过头文件与支持程度等有所不同罢了(具体请参见RFC 2553与RFC 2292)。如读者有兴趣的话可以找RFC来看看,在这里就不再详细说明,只讲最简单的原理与例子,同时例出各主要socket api,如何使用,可以参考MSDN或是Linux中的MAN。  地址表示  IPv4使用32bits的地址表示,并有sockaddr_in和in_addr等结构应用于API中,而IPv6 使用128 bits 地址,也定义了本身的地址结构sockaddr_in6和in6_addr。struct sockaddr_in {u_char sin_len;u_char sin_family;u_short sin_port;struct in_addr sin_addr;char sin_zero[8];};struct in_addr {u_int32_t s_addr;}struct sockaddr_in6 {u_char sin6_len; u_char sin6_family; u_int16_t sin6_port; u_int32_t sin6_flowinfo; struct in6_addr sin6_addr;u_int32_t sin6_scope_id;}struct in6_addr {u_int8_t __u6_addr8[16];}
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

最新评论

返回顶部