0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

同时支持IPv4和IPv6协议的应用程序编写

电子设计 来源:现代电子技术 作者:郭静盈 2021-06-24 15:14 次阅读

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

1 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。 pYYBAGDUMUuAU064AAAK7pbh3zQ984.png

4.2 客户端程序设计

客户端创建一个Socket,并调用connect()和服务器建立连接。连接建立后,客户端等待服务器返回的当前时间。最后,待数据传送结束后,调用close()关闭Socket。

客户端设计过程如下。

(1)创建客户端套接字

5 程序运行后的结果

当服务器运行后,可同时在IPv4和IPv6地址*,客户端向服务器发送请求,服务器接到请求后,向客户端返回一个当前时间。此实验达到了预期效果。

6 结 语

虽然IPv6网络已经开始实验性部署,但是IPv4网络向IPv6网络的过渡和互通仍有一定难度,IPv4和IPv6网络还需共存一段时间,因此开发能够同时支持IPv4和IPv6的网络应用程序会变得越来越重要。

在此编写了一个能够同时支持IPv4和IPv6协议的程序,此程序可以方便地进行今后其他应用协议及软件的移植,需在服务器端设计过程及客户端设计过程中根据其具体协议及软件进行相应改变。

责任编辑:gt

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 服务器
    +关注

    关注

    12

    文章

    8103

    浏览量

    82485
  • IPv6
    +关注

    关注

    6

    文章

    616

    浏览量

    58948
  • IPv4
    +关注

    关注

    0

    文章

    131

    浏览量

    19686
收藏 人收藏

    评论

    相关推荐

    IPv6地址是什么,IPv6的意思

    |   +---------------------------- +--------+----------------------- |   IPv4兼容地址已经被舍弃了,所以今后的设备和程序中可能不会支持这种地址格式。  
    发表于 01-25 16:39

    基于IPv6的Winsock网络编程

    范围内的迅猛发展,以及无线和移动通讯技术在应用领域的广泛拓展,基于IPv4协议的网络技术面临着一系列的新问题,其中包括地址空间耗尽、缺少安全保障、服务质量难以保证以及移动性支持有限等。IPv6
    发表于 05-08 06:14

    终于来了!重磅发布:阿里云负载均衡SLB率先支持IPv6

    ”。IPv6是IETF(互联网工程任务组,Internet Engineering Task Force)设计的用于替代现行版本IP协议IPv4)的下一代IP协议
    发表于 06-14 15:40

    阿里云企业IPv6部署方案

    摘要: 一、什么是IPv6。 IP version 6 (IPv6)是IP协议(Internet Protocol)的最新版本,设计作为IP version
    发表于 07-09 16:18

    IPv6的特色应用

    业务匮乏一直是制约IPv6发展的重要因素。随着移动互联网的发展,IPv6的特色应用业务渐渐浮出水面。1 IPv6与家庭网络“家庭网络”已经成为全业务运营商大力发展家庭用户的重要业务举措。然而,由于
    发表于 07-15 08:18

    IPv4IPv6组播过渡技术解析

    IPv4IPv6组播过渡技术解析
    发表于 05-27 06:37

    求一种IPv4/IPv6安全网关解决方案

    IPv4/IPv6安全网关原理是什么?一种IPv4/IPv6安全网关解决方案
    发表于 05-28 06:21

    IPv6相对于IPv4 WinSock的改变是什么?

    IPv6相对于IPv4 WinSock的改变是什么?兼容IPv4IPv6的WinSock网络编程规则是什么?IPv4
    发表于 05-31 07:09

    ipv4ipv6有什么区别

    IPV6IPV4协议早已为人所共知。IPv4,是互联网协议(Internet Protocol,IP)的第四版,也是第一个被广泛使用,构成
    发表于 12-26 16:36 1.7w次阅读
    <b class='flag-5'>ipv4</b>和<b class='flag-5'>ipv6</b>有什么区别

    什么是ipv6 ipv4ipv6的区别

    ipv6的英文全称是Internet Protocol Version 6,中文为互联网协议第6版。ipv6是互联网工程任务组设计的用于替代IPv4的下一代IP
    的头像 发表于 09-03 16:03 2.2w次阅读

    ipv4中ip分为几类 ipv4ipv6的过渡技术有哪些

    协议栈:即在IPv4IPv6之间同时部署一个双协议栈,使得IPv4
    发表于 05-15 18:15 2404次阅读

    什么是ipv4什么是ipv6 ipv6技术的优缺点

    IPv4IPv6的地址格式不同,它们之间没有直接的换算方法。但是,可以使用IPv4IPv6的双栈机制,实现IPv4地址到
    发表于 05-17 18:12 3808次阅读

    ipv6ipv4有什么区别 ipv4ipv6哪个网速快

    IPv6可以和IPv4兼容,支持IPv4地址的传输和访问,同时支持
    发表于 05-17 18:13 1.3w次阅读

    IP地址:IPV4IPV6的区别

    IPV4互联协议版本4,有版本V4之前就有IPV1 IPV2IPV3,同样有IPV5 IPV6
    发表于 10-26 10:41 495次阅读
    IP地址:<b class='flag-5'>IPV4</b>和<b class='flag-5'>IPV6</b>的区别

    恒讯科技分析:IPv4IPv6的网络速度与配置如何选择?

    IPv6时,需要考虑网络速度和配置等因素。 一、网络速度: IPv4IPv4是互联网上广泛使用的传统协议,大多数网络设备和服务都支持
    的头像 发表于 04-03 17:03 162次阅读