当前位置:首页 > 通信技术 > 通信技术
[导读]在分析IPv4和IPv6编程接口基础上,给出了一组兼容IPv4与IPv6的Winsock网络编程规则,并叙述IPv6在WindowsXP系统下的安装和配置过程,最后给出了一个可同时应用于IPv4和IPv6的实现Daytime协议的程序,此程序今后可以方便地进行其他应用协议及软件的移植,以适应IPv6的快速发展。

0 引 言
   
随着通信技术和网络技术的飞速发展,特别是近年来,IPv4协议面临着一些难以解决的问题,如地址短缺、缺乏服务质量控制Qos和安全性差等。为了应对这一挑战,IETF(Internet Engineer Task Force)组织提出了为适应未来对于网络基础设施数量和质量需求而设计的下一代互联网协议IPv6。IPv6继承了IPv4的优点,并根据IPv4多年来运行的经验进行了大幅度的修改和功能扩充,其扩展性、路由、安全性、配置和可靠性都有明显改进。

l IPv6相对于IPv4 WinSock的改变
1.1 IPv6中新增加的常量

    为了支持IPv6,需要定义一个新的地址族名,以便正确地识别和解析IPv6的地址结构。同样,还需要定义一个新的协议簇名(与地址族名具有相同的值),这样就可以使用合适的协议创建一个套接字。新定义的IPv6地址簇名和协议簇名常量为:AF_INET6和PF_INET6。
1.2 IPV6中新增加的地址结构
    IPv6的地址结构通过struct in6_addr和structockaddr_in6定义,结构定义分别如下:


1.3 IPV6中新增加的域名解析函数
    IPv6引入了名为getaddrinfo()和getnameinfo()的新的API。这两个API是与协议无关的,且既可用于IPv4,也可用于IPv6的名称解析。getaddrinfo()函数的返回值是addrinfo的结构指针。

   

   
    getaddrinfo()函数可以把主机名或服务名转换成一组socket地址。hints相当于一个过滤器,只有符合hints结构的内容才会返回到res指针中。执行成功后,参数res以链表的形式返回解析出来的地址,可以将这些地址直接传递给bind(),connect(),sendto()等函数。
    地址到名称的转换可以通过另一个新的套接字函数getnamein{o()进行。getnameinfo()函数的功能与getaddrinfo()函数相反,该函数接受已经初始化的套接字结构,并返回与地址及端口信息对应的主机和服务.

2 兼容IPv4与IPv6的WinSock网络编程规则
2.1 使用sockaddr_storage结构
    sockaddr_storage结构是新的套接字结构,它与协议无关,并拥有充分的地址空间容纳IPv4或者IPv6地址信息,且可以很方便地转换成sockaddr_in结构和sockaddr_in6结构。同时,这个结构还具有针对64位对齐问题的填充项,使用这个结构可以很容易地写出与地址协议簇无关和跨平台的程序代码,因此编写兼容IPv4与IPv6的网络程序时要使用这个结构表示网络地址。
   
2.2 使用新的名称解析函数getaddrinfo()和getnam-einfo()
   
这两个函数是随IPv6引进的新的名称解析函数,与地址协议簇无关,隐藏了名字到地址转换和地址到名字转换的大量细节,既能够处理IPv6地址,也能处理IPv4地址。它们也替代性地实现了下列函数接口的功能:gethostbyname(),gethostbyaddr(),inet_ntoa(),inet_aton(),getservbyname(),getservbyport()。可以在简化程序的同时实现与地址协议簇无关的编程,还可以提高程序的可移植性。

3 IPv4与IPv6双协议试验平台的搭建
    由于大部分用户的操作系统都是Windows XP,所以在此仅介绍Windows XP下IPv6的安装与配置。
    Windows XP操作系统内置了IPv6协议栈,提供了一组命令行方式的IPv6检测配置工具。在XP下安装IPv6协议后,对原IPv4协议的使用不产生任何影响,整个网络上各终端设备能够在一个物理网络上共享IPv4和IPv6协议,并支持2种协议的数据传输,即:所谓的双栈(DualStack)共享。
    安装IPv6协议和配置地址及默认网关的过程如下:



4 VC环境下Daytime协议的实现

    根据以上所述,下面开发一个可同时应用于IPv4和IPv6的实现Daytime协议的程序。该程序基于c/s结构,客户端使用TCP协议连接到服务器端,向服务器发送请求;服务器收到请求后,将当前的时间发回客户端。
4.1 服务器端程序设计
   
服务器端首先启动,通过调用socket()建立一个Socket,然后调用bind()将该Socket和本地网络地址联系在一起,再调用listen()使Socket做好侦听的准备,并规定请求队列的长度,之后就调用accept()接收连接。连接建立后,服务器端创建一个通信用的’Sock-et,把当前时间发回给客户端。最后,在数据传送结束后,调用close()关闭Socket。
    服务器端设计过程如下:
    (1)创建服务器端套接字


    (3)监听并接收连接


4.2 客户端程序设计
   
客户端创建一个Socket,并调用connect()和服务器建立连接。连接建立后,客户端等待服务器返回的当前时间。最后,待数据传送结束后,调用close()关闭Socket。
    客户端设计过程如下。
    (1)创建客户端套接字



5 程序运行后的结果
   
当服务器运行后,可同时在IPv4和IPv6地址监听,客户端向服务器发送请求,服务器接到请求后,向客户端返回一个当前时间。此实验达到了预期效果。
    服务器端运行结果如图1所示。

6 结 语
    虽然IPv6网络已经开始实验性部署,但是IPv4网络向IPv6网络的过渡和互通仍有一定难度,IPv4和IPv6网络还需共存一段时间,因此开发能够同时支持IPv4和IPv6的网络应用程序会变得越来越重要。
    在此编写了一个能够同时支持IPv4和IPv6协议的程序,此程序可以方便地进行今后其他应用协议及软件的移植,需在服务器端设计过程(4)及客户端设计过程(3)中根据其具体协议及软件进行相应改变。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

业内消息,近日广州电信宣布自 10 月 1 日起不再为新装普通宽带用户及存量私网双栈用户提供直接转动态公网 IPv4 地址服务。

关键字: IPv4 IPv6

据业内消息,由国家电网智能电网研究院有限公司(国网智研院)牵头提交的标准提案 “基于 IPv6 转发平面的分段路由(SRv6)网络性能监测方法”已正式获得瑞士日内瓦国际电信联盟批准立项。

关键字: 国家电网 智研院 IPv6 分段路由

据 21ic 业内获悉,近日八部门(工信部、网信办、发改委、教育部、交运部、中国人民银行、国资委、国家能源局)联合发布《关于推进 IPv6 技术演进和应用创新发展的实施意见》,文件表示要推进 IPv6 技术演进和应用创新...

关键字: 工信部 网信办 IPv6

根据国家 IPv6 发展监测平台的公开统计数据显示,上个月国内移动网络 IPv6 占比首次突破 50%,IPv6 流量首次超越 IPv4,说明国内移动网络 IPv6 的发展规模达到了一个标志性的阶段。

关键字: IPv6 IPv4

未来网络技术是各行业数字化转型的重要驱动力量,随着5G、物联网、AI等技术的应用走入深水区,业务对网络的质量成本、响应速度、运维管理提出了更严苛的要求。IP和光技术的不断发展,使得IPv6技术的拓展性和适应性与光技术的底...

关键字: 新华三 IPv6 网络

中东迪拜2022年10月13日 /美通社/ -- 在华为全联接大会2022迪拜站“深耕油气数字化,助推多场景智慧化进程”主题论坛上,华为企业BG油气系统部首席代表李阳明提出,数字技术是实现“向数据要石油、向智能要发展”的...

关键字: 华为 数字化 网络架构 IPv6

济南2022年9月27日 /美通社/ -- 8月24日,2022无锡创建"IPv6+"创新之城启动仪式暨互联网大会在无锡市院士小镇举办。中国工程院院士、推进IPv6规模部署专家委员会主任邬贺铨、江苏省...

关键字: 互联网 TOP 大数据 IPv6

9月9日,全球IPv6峰会如期举行,本次会议汇聚全球顶尖产业专家,分享行业动态、探讨前沿趋势和应用部署,共研IPv6下一代互联网新技术、新生态。紫光股份旗下新华三集团受邀出席,并从IPv6发展趋势洞察、行业应用、技术落地...

关键字: 新华三 IPv6 互联网

作为全球最早布局NB-IoT(窄带互联网)业务的运营商之一,中国电信NB-IoT连接规模超1.6亿,是全球首个NB-IoT连接数破亿的运营商,并且中国电信在物联网领域打造了一个又一个标杆案例,为物联网产业应用落地注入新动...

关键字: 物联网 天翼物联 IPv6

从“最多跑一次”到“一次不用跑”,从“一网通办”到“一网统管”,我们越来越能感受到城市智慧化建设为我们工作、生活带来的极大便利,这背后是数字化变革带来的数字惠民的强大推动。

关键字: IPv6 城市智慧化 物联网
关闭
关闭