基于IPv4IPv6双协议栈的通信模块及实现

合集下载

IPv4IPv6协议分析及过渡策略研究与实现

IPv4IPv6协议分析及过渡策略研究与实现
1.2本文的研究内容
本文 通 过 对在 从IPv4到IPv6过渡阶段所采用的多种过渡策略进行 分析,重点研究和实现了IPv4/IPv6翻译网关技术,并针对应用程序的 过渡问题提出了一种利用IPv6高级SOCKET接口开发协议 无关通信软
件 的方案。
北了论文的研究背景,研究目的和内容。 第 二章 TCP/IP协议族与IPv6协议 讨论了IP网络研究的理论基 础,分析了IPv6的体系结构和和IPv6相关协议 内容。 第 三章 IPv6过渡技术和实验环境组网方案 介绍了IPv6过渡技术 的目标和 目前常用的基本方案 。最后,讨论如何组建IPv6试验 网络。 第 四章 IPv4/IPv6翻译网关的设计和实现 分析了Pv4/IPv6翻译网 关的实现算法、数据结构以及实现的关键技术,并进一步论述 了翻译 网关的设计和实现。最后对翻译网关的性能进行了优化。 第 五章 协议无关通信软件的开发 本章首先介绍 了IPv6高级套接 口原理,然后讨论了协议无关通信软件的开发过程和步骤。最后利用 前面的讨论编写 了与协 议无关 的回显客户服务程序。
NAPT-PT isa sign'ficantmeanst oc opew itht hep roblem brought abouti n the transition from IPv4t o IPv6.T ob eginw ith,th isp aper discussesN APT-PTi ng reatd etail,in cludinga ddresstr anslationa nd protocoltr anslation.F orth ep urposeo fs avings carceI Pv4a ddress resourceN APTi sa doptedi na ddresstr anslation.P rotocoltr anslation isb asedo nt het echniqueso ftr anslationb etweent heh eadero fIP v4 packetsa ndI Pv6',a sw ella st hem ethodso ft ranslationb etween ICMPv4a nd ICMPv6,b oth defined inS IIT.A bove all,a gateway

基于双协议栈技术IPV6过渡技术

基于双协议栈技术IPV6过渡技术

基于双协议栈技术IPV6过渡技术随着互联网的快速发展和IP地址的枯竭,IPv6被提出作为下一代互联网协议的标准。

然而,过渡到IPv6协议仍然面临许多挑战。

由于IPv4和IPv6不兼容,网络上存在大量的IPv4设备和应用程序,因此需要一种有效的过渡技术来平稳地将IPv6引入到现有的IPv4网络中。

基于双协议栈技术的IPv6过渡技术就是为了解决这个问题而提出的。

基于双协议栈技术的IPv6过渡技术,简称双栈技术,在已有的IPv4网络中增加一个独立的IPv6网络栈,从而在IPv4网络中可以同时支持IPv4和IPv6协议。

这种技术的好处是可以使现有的IPv4网络不受影响,同时也给予了更多的时间让应用程序和设备逐渐迁移到IPv6网络中。

双栈技术的实现需要IPv6协议栈的开发和支持。

现有的操作系统已经开始支持IPv6协议栈,这使得双栈实现相对简单。

在双栈中,每个主机都有两个IP地址,一个IPv4地址和一个IPv6地址。

两个协议栈分别负责处理IPv4和IPv6的网络通信。

在双栈技术中,主机和路由器都需要进行相应的配置和调整。

首先,主机需要进行双栈配置,包括IPv4和IPv6的地址配置、默认路由配置等。

其次,路由器也需要进行相应的配置,包括设定IPv6锚点、IPv4和IPv6路由的配置、IPv4到IPv6的转换配置等。

这些配置使得主机和路由器能够同时支持IPv4和IPv6的网络传输。

双栈技术在IPv6网络中的应用非常广泛。

它可以使IPv4和IPv6的相互通信成为可能,提供了IPv6过渡的平滑过渡方案。

同时,它也为IPv6网络的部署提供了一个有效的方式。

通过双栈技术,IPv6的网络部署可以逐渐推进,而不会对现有的IPv4网络造成太大的影响。

双栈技术也存在一些问题。

首先,由于IPv4和IPv6不兼容,双栈技术需要提供地址转换和协议转换的功能,这增加了网络的复杂性和管理的难度。

其次,双栈技术需要大量的IPv6地址,但是由于公共IPv6地址的紧缺,很多IPv6网络使用了私有IPv6地址和NAT64技术来解决这个问题。

小设备上IPv4/v6双协议栈的TCP模块的设计与实现

小设备上IPv4/v6双协议栈的TCP模块的设计与实现

c n i ei g t e h r wa e l tt n o C o sd r h a d r i ai fL NA,h e in a d i lme tt n o C d l a e fc s d o n l dn h r c s i g o C n mi o t e d s n mp e n ai fT P mo u e, r o u e n i c u i g t e p o e s fT P g o n h a e p in, ed sg n pi z t n o e s e l u u ,h e l e c fc e k u , n g me ta d mane a c ft r n o e d ro t o t e in a d o t h miai fr a s mbe q e e te n gi n e o h c s m ma a e n n i tn n e o i s a d s o g me
on .
Ke wo d y rs
L NA I v / 6 T P R a s mb e q e e C P 4 v C e s e l u u
植到不 同的平 台和操作系 统 , 也可 以运行 在没 有底层操 作系统
1 概

支持 的环境 。u /P T P I tc o u / S —— 基于 u / S C I ( C /P S kfr C O ) a CO
右 图 所 示 的 概 念模 型 。
图 】 双协议
栈 模 型
解决 了 Iv P4地址有 限的问题 , 使得每个家 电都 可以拥有 自己的
标识 ; 而它内嵌 的安全 机制则提 高 了安 全性。信息家 电等小设
备有其 自身的 内存容量 小的特点 , 因此需要针对性地 开发 T P C/ I PБайду номын сангаас议栈 。我们开发 的系统 就是一 个 可移植 的无 操作 系统 支

基于IPV4和IPv6的双协议栈网络设计与实施

基于IPV4和IPv6的双协议栈网络设计与实施

基于IPV4和IPv6的双协议栈网络设计与实施——毕业论文系部:学生姓名:专业班级:学号:指导教师:年月日【摘要】在当前IPv4网络和IPv6网络共存的环境下,如何解决两代IP标准的网络互通互联问题是进行网络建设的一个重要课题。

本课题以某高校现有网络环境为背景,探讨在原有IPv4网络上搭建IPv6网络的技术,并选择6to4隧道技术、双栈技术、NAT-PT技术作为实现该目的的过渡技术,完成基于IPv4和IPv6双协议栈网络的设计和实施。

目录一、引言 (1)(一)网络应用现状概述 (1)(二)IPv6协议的优点 (1)(三)基于IPv4协议网络和基于IPv6协议网络的共存 (2)(四)IPv4向IPv6过渡的基本原则 (2)二、基于IPv4协议和IPv6协议的双栈局域网设计 (3)(一)需求分析 (3)(二)双栈局域网设计 (3)1、设计拓扑 (3)2、功能和使用描述 (3)三、基于IPv4协议和IPv6协议的双栈局域网实施 (4)(一)实施关键点分析 (4)(二)IPv4协议网络到IPv6协议网络过渡技术 (4)1、双协议栈技术 (4)2、IPv4/IPv6协议翻译技术 (5)3、隧道技术 (6)(三)实施技术选择 (8)(四)技术实施配置 (8)1、6to4隧道配置 (8)2、NAT—PT技术配置 (10)3、IPv6 DHCP配置 (11)四、小结 (11)五、致谢 (13)六、参考文献 (14)一、引言(一)网络应用现状概述当前,各类网络应用飞速发展,网络服务商、终端用户激增,这就要求网络具有更大的容量。

现存的网络多数为基于IPv4协议的TCP/IP网络,具有一定的局限性和先天的缺陷。

主要表现为:·有限的地址空间:IPv4中地址长度为32,即有2^32-1个地址。

·IPv4数据包的性能不足:尽管IP表现得不错,但是,IPv4在最大传输单元、最大包长度、IP头的设计以及校验和的使用等方面都有待提高。

基于双栈技术的IPv6与IPv4的混合网络建设

基于双栈技术的IPv6与IPv4的混合网络建设

从 实验 的 效 果 看 ,该 方案 是 可行 的 、有 效 的 。 关 键 词 : Iv Iv 双 栈 技 术 ; 式 P 6;P 4; 模
I v n P 6a d
Hy rd Newok C n tu t n b i t r o sr ci o
L t ̄ IRuo (ih a r utrl iesyIfr t nadE gne n ol e, hn d 2 0 4 Scu nAg cl a Unvr t oma o n n ier gcl g C e g u 6 5 1 ) i u i n i i e
用户提供高质量服务 。
固 一@ 葶
¥uc 耕 o f ̄
o iia 艄 c r nl g
固 一@
IV P 嚣 P4/lV
d a sa k u l tc
Wv p 6 4/lv
d a sa k u l tc
d s ntno at al r  ̄ o
oiia p t n r n la et g
特网协议)工作 组或称 Iv P 6工作组 ,主要负责 Iv P 6有关 的基 础协议 的制定 ;NGrn 下 一代 网络演进) 工作组 ,主要负 t s( a
责与下一代网络演进有关的标准制定 。
21 双 栈 技 术 .
N T P ( e okA des rnlt n Pooo A - T N t r d rs Ta s i — rtc1 带协 议 w ao )附 转换器 的网络地址转换器 ,它用来解决 Iv P 6和 I 4互通 的问 % 1
是现 行 的骨 干 网络 又是 以 Iv P4为基础 搭建 的。所有 的 “P 6 Iv 网络 孤岛 ”之 间要 进行联通 ,需要通过 Iv P 4骨 干网络 ( 即隧 道)相连 ,实现这种联通 功能的基本技 术就是一 种隧道技术 , 如 图 2所示 。基 于双栈 的隧道技术 目前 来看 是最经 济 的也 是

一种支持IPv4_IPv6双协议栈的软件模块

一种支持IPv4_IPv6双协议栈的软件模块
1 支持 IP v4 / IP v6 双栈的通信模块分析
主要的操作系统平台提供 socket进行 client/ server模式的 网络编程 。该模式的主要流程如图 1所示 。
收稿日期 : 2006209228; 修回日期 : 2006212212 基金项目 : 国家自然科学基金资助项目 ( 60403031, 90604015, 60473031) ;国家“863”计 划资助项目 (2005AA121560)
现有的互联网采用 IPv4 协议影响互联网的进一步发展 。为解决地址空 间限制 、安全 、服务质量等问题 , IETF在 20 世纪 90 年代中期 制定 IPv6[2 ]协议标准作为下一代互联网核心协议 。除对地址 空间进行扩展以外 ,其还对 IPv6地址的结构重新作了定义 ,采 用与 IPv4中使用的 C IDR类似的方法分配地址 ,提供自动配置 以及对移动性 、安全性等更好地支持 。
父类 CClient的基本方法如下 :
class CClient { p rivate: … p ub lic:
virtual bool Islnint ( ) ; / /初始化检查 virtual void Init( ) ; / /初始化 virtual char3 ConnectServ( char3 IP, int_port) ; virtual bool D isConnectServ ( int port) ; / /断开 virtual void SendData ( char3 data, int len) ; / /发送 virtual char3 RcvData ( ) ; / /接收 virtual void SetTimeout( int sec, int usec) ; virtual void ReleaseBuf ( char3 buff) ; / /释放缓冲 …… } 其中 :多数方法被设计和实现为 virtual类型 ,以支持和实现在 具体应用中的动态绑定 。同时 ,上层应用程序开发者还可以根 据本设计方法 ,针对自己的应用程序所约定的通信协议 ,在本 套基本接口的基础上轻松地进行扩展 。

IPv4与IPv6网络互连的探讨与实现

IPv4与IPv6网络互连的探讨与实现摘要随着网络的高速发展,IPv4由于地址不足,将不能满足未来用户的需求。

而IPv6的出现,正好能解决这一问题。

所以研究从IPv4到IPv6的平滑过渡,加快整个过渡过程就是当前的首要之急,便于对整个IPv6网络进行部署。

目前使用的IP 协议版本IPv4 正面临着IP 地址即将耗尽等问题,IETF 从1995 年开始,着手研究开发下一代IP 协议,即IPv6。

IPv6 具有长达128 位的地址空间,能为日后分配更多的IP地址。

为了能让IPv4到IPv6平滑过渡,前人已经研究出了多种隧道技术,大致上可以分为双协议栈技术、隧道技术和网络地址翻译技术。

而在这里,我们对GRE隧道进行了研究。

关键词:IPv4;IPv6;GRE;隧道技术1 IPv4与IPv61.1 IPv4现状Internet 的起源是由ARPANET于1968 年开始进行研究的, 当时的研究者们为了给ARPANET建立一个标准的网络通信协议而开发出了一种IP协议,即IPv4协议。

但是当时IP协议的开发者认为ARPANET 的网络个数不会超过数十个, 因此他们只将IP 协议的地址长度设定为32个二进制数位,其中前8 位标识网络, 其余24 位标识主机。

然而随着ARPANET日益膨胀,IP协议的开发者认识到原先设想的网络个数已经无法满足当前的实际需求。

1.2 IPv6概念IPv6 被称为下一代互联网协议,它是由国际互联网工程任务组(IETF)设计的一种用来替代IPv4 的新协议。

IPv6 将现有的IPv4 地址长度扩大4 倍,即当前由的32bit 扩充到128bit,可以提供3.4E+38 个地址,这将从根本上解决目前IP 地址短缺的严重问题。

IPv6 地址采用16 进制的表示方法,将128bit 分为8 组,分得的每组为16bit,用4 个16 进制数表示,分组之间用“:”隔开,每组中最前面的0 可以省略,但每组必须有一个数。

基于IPv6IPv4双协议栈模式的网络设计与实现

43农业信息化基于IPv6/IPv4双协议栈模式的网络设计与实现引言2012年2月,科技部、中组部、工信部批复河南省开展国家农村信息化示范省建设试点工作。

农村信息服务综合平台是示范省项目的重要环节,农村信息服务综合平台是全省农村信息资源统一发布和展示的窗口。

互联网络是综合平台的信息基础设施,向IPv6网络过渡是互联网发展的必然趋势,是解决IP地址枯竭、分配不均和骨干网路由表膨胀等阻碍互联网发展问题的关键技术。

建设农村信息服务综合平台的基础网络时,考虑兼容性前瞻性,提供IPv4和IPv6共存的网络环境,为各种应用系统和服务提供双协议支撑平台,保障农村信息服务综合平台安全可靠运行。

1 农村信息服务综合平台网络建设原则农村信息服务综合平台依托河南农业大学信息与管理学院,已经实现了IPv4网络的全覆盖,拥有用户主机近800台,是河南农业大学校园网的组成部分。

在已有网络基础上建设平台网络,建设目标如下:(1)按照CNGI示范网络驻地网建设总体需要和规定技术要求,建设IPv6网络,兼容IPv4,主机数达到600个以上。

(2)驻地网使用IPv6协议接入CNGI国家主干车银超 余 华 郑 光 孙昌霞(河南农业大学信息与管理科学学院,河南 郑州 450002)网。

(3)为接入用户提供技术支持,使用户主机灵活接入CNGI。

(4)为CNGI开展各项关键技术的研究、试验、产业化及农业信息化提供良好的试验环境和技术支撑。

(5)在应用方面,建设必要的IPv6内容资源,部署基于IPv6的DNS、WWW、FTP等服务,供用户使用。

在选择综合组网技术时,要重点考虑下列因素:(1)兼容性。

在建设IPv6网络时,不影响已有IPv4网络的运行,兼顾原有的IPv4应用和资源。

(2)扩展性。

组网技术能支持网络平滑升级到IPv6,能为将来更进一步的扩展、扩容与升级预留充分的空间。

(3)性能与安全。

在带宽、易用、安全、可靠、管理等方面应比原有网络有提升。

试验1IPv6与IPv4的双协议栈通信

实验1 IPv6与IPv4的双协议栈通信1.1 实验目的理解双栈技术是IPv4向IPv6过渡的基础,所有其它的过渡技术都以此为基础。

掌握实验环境中双协议栈的配置。

1.2 应用环境1. 双协议栈方案的工作方式双协议栈方案的工作方式如下:(1)如果应用程序使用的目的地址是IPv4地址,则使用IPv4协议。

(2)如果应用程序使用的目的地址是IPv6中的IPv4兼容地址,则同样使用IPv4协议,所不同的是,此时IPv6就封装(encapsulated)在IPv4当中。

(3)如果应用程序使用的目的地址是一个非IPv4兼容的IPv6地址,那么此时将使用IPv6协议,而且很可能此时要采用隧道等机制来进行路由、传送。

(4)如果应用程序使用域名来作为目标地址,那么此时先要从DNS服务器那里得到相应的IPv4/IPv6地址,然后根据地址的情况进行相应的处理。

对目前的环境来说,要实现纯粹IPv6的路由是很困难的,因此,人们一般采用IPv6 over IPv4 的点对点隧道技术。

将IPv6分组打包,放入IPv4分组的数据区,加上IPv4的报头,在IPv4互联网世界中进行路由,到达目的地后再把数据区中的IPv6分组取出来作相应的处理,该继续路由的路由,该收发的收发。

这样,就可以实现"双协议栈"的过渡方案。

最后,对于实现IPv6协议栈,尽管在细节上,IPv6和IPv4有很大的不同,但是从原理和它们在网络体系结构中的位置来看,是相当的一致的。

这些一致使得开发人员只需要很小的付出就可以实现从IPv4到IPv6协议栈的转换。

2. 双栈节点工作模式IPv6过渡技术——IPv6/IPv4双栈技术:双栈节点具有三种工作模式:(1)只运行IPv6协议,表现为IPv6节点;(2)只运行IPv4协议,表现为IPv4节点;(3)双栈模式,同时打开IPv6和IPv4协议1.3 实验设备锐捷S3760一台Consle线缆1根1.4 实验双栈节点示意图图1-1 双栈节点示意图1.5 实验要求采用IPv6/IPv4双协议栈是主要的过度机制,支持双协议栈的主机其IP层将既支持IPv4又支持IPv6。

IPv4_IPv6 双协议栈以太网接入认证和移动技术

《IPv4/IPv6 双协议栈以太网接入认证和移动技术》摘要:随着互联网的迅速发展,IPv4 地址资源逐渐枯竭,IPv6 作为下一代互联网协议应运而生。

本文深入研究了 IPv4/IPv6 双协议栈以太网接入认证和移动技术,分析了其关键技术、优势以及面临的挑战。

通过对现有接入认证和移动技术的比较,提出了一种基于双协议栈的以太网接入认证和移动解决方案。

该方案结合了多种技术手段,实现了高效、安全的接入认证和无缝的移动切换。

同时,通过实际案例分析了该方案的应用效果,并对未来的发展趋势进行了展望。

关键词:双协议栈;以太网;认证一、引言随着互联网的普及和应用的不断拓展,对 IP 地址的需求呈爆炸式增长。

IPv4 由于地址空间有限,已经无法满足日益增长的网络需求。

IPv6 以其巨大的地址空间、更好的安全性和支持移动性等优势,成为了下一代互联网的核心协议。

然而,IPv4 网络在短期内仍然广泛存在,因此实现 IPv4/IPv6 双协议栈的过渡是当前网络发展的必然选择。

以太网作为一种广泛应用的局域网技术,在接入认证和移动性方面也面临着新的挑战。

如何在双协议栈环境下实现高效的以太网接入认证和无缝的移动切换,成为了当前研究的热点问题。

二、IPv4/IPv6 双协议栈技术概述(一)IPv4 和 IPv6 协议的特点1.IPv4 协议 - 地址空间有限,只有 32 位。

- 安全性相对较低,缺乏对网络层安全的支持。

- 不支持移动性,移动设备在切换网络时需要重新配置 IP 地址。

2.IPv6 协议 - 地址空间巨大,有 128 位。

- 提供了更好的安全性,支持 IPsec 等安全协议。

- 支持移动性,移动设备可以在不同网络之间无缝切换,保持通信的连续性。

(二)双协议栈的工作原理双协议栈是指在同一台设备上同时运行 IPv4 和 IPv6 协议栈。

当设备需要与 IPv4 网络通信时,使用 IPv4 协议栈;当需要与 IPv6 网络通信时,使用 IPv6 协议栈。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于IPv4/IPv6双协议栈的通信模块及实现作者:解慧娟,林南晖来源:《软件导刊》2011年第11期摘要:介绍了IPv6下的套接字地址结构及Socket API函数,通过在IPv4/IPv6双协议栈服务器端创建一个IPv6套接字,并调用IPv6下协议无关的Socket API函数,实现了一个基于TCP 的客户/服务器通信模块。

实验证明,该通信模块能同时支持IPv4与IPv6。

关键词:双协议栈;Pv6套接字;Socket API 函数;客户/服务器通信模块中图分类号:TP311.52 文献标识码:A 文章编号:1672-7800(2011)011-0110-1 Socket编程基础1.1 socket接口分析socket是套接字的功能实体,在socket编程中,首先要用socket( )创建一个套接字,通常由3个参数唯一确定:①address family,地址簇,PF_INET代表IPv4地址簇,PF_INET6代表IPv6地址簇;②type,连接类型,SOCK_STREAM即流式套接口,基于TCP,定义了一种可靠的,面向连接的服务,流式套接字通信流程如图1所示,SOCK_DGRAM即数据报套接口,基于UDP,定义了一种无连接的服务;③protocol,协议类型,通常设置为0,可使系统选择默认的由地址簇和连接类型所确定的协议。

1.2 IPv6套接字地址数据结构IPv4的IP地址长32位,而IPv6地址长128位,因此在IPv6套接字中,地址数据结构必须做出改变来适应IPv6地址长度的改变。

在中分别定义了一种新的地址簇---AF_INET6和新的协议簇---PF_INET6,前者将原来的sockaddr_in 数据结构与新的sockaddr_in6 数据结构同区分开,后者将在创建socket 时使用,表明创建的是一个IPV6套接字。

IPv6套接字地址结构以sockaddr_in6命名,它在头文件中的定义如下:unit8_t s6_addr[16]; /*128位的IPv6地址,网络字节顺序存储unit8_t sin6_len; /*结构体的长度sa_family_t sin6_family; /*套接字类型为in_port_t sin6_port; /*传输层端口号struct in6_addr sin6_addr; /*128位的IPv6地址,网络字节顺序存储unit32_t sin6_flowinfo; /*IPv6优先级&流量标记1.3 IPv6的Socket API函数IPv6的Socket API函数中的一部分沿用了IPv4的Socket API函数,为了满足对IPv6地址的不同操作,库函数定义了新的函数来实现相应的功能。

(1)域名与地址的转换函数,查找主机名的基本函数是gethostbyname( )或gethostbyname2( ),虽然能查询IPv4或IPv6地址,但对许多应用程序来说是不够的,而且这些函数在线程中不是安全的。

getipnodebyname()作为新增的函数实现对DNS 执行一个对A 记录的查询或AAAA 记录的查询,它返回的是IPv4 或IPv6 地址,并保证了线程的安全。

getipnodebyname()的行为正好相反,它根据一个二进制的IP地址查找相应于此地值得主机名。

(2)地址转换函数,适用于IPv4地址的是inet_aton( )和inet_ntoa( )函数,新增的inet_pton( )和inet_ntop( )函数对IPv4和IPv6地址都能进行处理,其中p代表presentation,指ASCII字符串,n代表numeric,指套接字结构中的二进制。

在调用inet_pton( )和inet_ntop( )函数时,需要调用者指明地址是in_addr还是in_addr6结构,因此必须编写额外的代码段。

(3)协议无关的转换函数,在域名与地址之间进行转换且与地址簇无关的新增转换函数主要有两个:getaddrinfo( )和getnameinfo( ),它由一个指针来引用套接口地址,隐藏了名字和地址转换的大量细节,实现了代码协议无关性,因此可以代替inet_pton( )、inet_ntop( )、gethostbyname( )等函数的功能。

2 双协议栈下socket通信模块的实现原理双协议栈技术即在设备上同时启用IPv4和IPv6协议栈,如果一台主机同时支持IPv4和IPv6这两种协议,则该主机被称为双协议栈主机,既能处理IPv4连接也能处理IPv6连接。

在客户/服务器模式下,双协议栈主机上运行的服务器端既能接受IPv4客户端的连接也能接受IPv6客户端的连接。

其工作流程如下:当IPv6套接字收到IPv6数据包时,不需要做任何特殊处理,服务器和客户端交互的是IPv6数据包。

当IPv6套接字收到IPv4数据包时,系统会在accept( )调用返回地址时将对应的IPv4地址映射的IPv6地址返回。

服务器和客户端交换的是IPv4数据包。

基于对IPv6 socket编程及双协议栈工作机制的分析,本文在双协议栈服务器端建立一个IPv6套接字,并在visual studio 2010环境使用C++开发了一个基于TCP的客户/服务器通信模块,该模块能同时支持IPv4和IPv6。

3 双协议栈下socket通信模块的具体实现分别在服务器端和客户端开发了两个模块server与client,通过这两个模块,可以在客户端把服务器端的IP地址作参数,和服务器端进行信息交换,现在把server和client中的部分重要程序段加以分析。

3.1 服务器端模块的程序设计服务器端模块运行在Linux下,IPv4地址为192.168.40.129,IPv6地址为fe80::20c:29ff:feeb:bce7/64,监听端口号为8796。

服务器端模块server编程步骤及关键代码如下:(1)定义函数parsedata( ),该函数的作用是接受客户端数据并对它做出响应。

(2)调用socket( )创建一个IPv6套接字。

IPPROTO_TCP);in6_addr add(3)调用bind( )为IPv6套接字绑定一个IPv6通配地址和一个端口号,端口为8796。

(4)分别调用listen()和accept( )监听并接受客户端请求。

char buf[100]cout(5)调用parsedata( )接受并处理客户端数据;(6)调用close( )关闭套接字3.2 客户端模块的程序设计客户端模块中具体完成通信功能的接口类CMysocket继承来自MFC提供的套接字类CSocket,通过Connect( )、Send( )、OnReceive( )、OnClose( )等成员函数来实现与服务器的通信。

在CIPV6_ClientDlg类中,将CMysocket实例化为m_pSocket,通过响应Click事件,在OnNMClickListShow函数中生成一个客户端对话框,通过响应OnBnClickedBtnConnect( )事件成员函数连接服务器,通过SendBuffer( )向服务器发送数据。

客户端软件client关键代码如下:bRet = m_pSocket-{MessageBox(_T("创建套接字失败UpdateData(TRUE); //获取界面填写的IP地址{MessageBox(_T("连接成功char buf[100]strcpy(&buf[strlen(MSG_TYPE_ECHO)], "\ r\ m_pSocket-{char content[1024]strcpy(&content[strlen(content)], "\ r \strcpy(&content[strlen(content)]return m_pSocket-3.3 实现后的socket通信模块界面在Linux服务器上运行服务器端程序server后,服务器处于listen状态,经测试,该通信模块能支持IPv4与IPv6。

例如:在IPv4网络中,打开客户端界面输入服务器IP地址192.168,40.129,单击连接,客户端显示“连接成功”对话框,单击列表中的"服务器"与服务器端通信并收发数据,如图2所示。

4 结束语在IPv4 向IPv6 过渡阶段中, 双协议栈技术是很重要的技术,本实例通过在双协议栈主机服务器端创建一个IPv6套接字,可接受客户端的IPv4连接和IPv6连接,并实现服务器端与客户端的数据交换。

使用上述方法,在双协议栈的环境下,将原有IPv4网络应用程序的IPv4套接口进行修改,创建基于IPv6的套接口,不用修改原应用的业务逻辑,可让原有网络应用程序接受IPv4访问和IPv6访问。

该通信模块的实现对部分IPv4软件系统支持IPv6通信的工作具有一定的指导意义。

参考文献:[1]张大方.一种支持IPv4/IPv6双协议栈的软件模块[J].计算机应用研究,2[2]谭献海.网络编程技术与应用[M].北京:清华大学出版社[3]邵雯娟.构造支持IPv6的BBS系统[J].华中科技大学学报:自然科学版,2003(8)[4]杨云江.IPv6技术与应用[M].北京:清华大学出版社(责任编辑:周晓辉)IPv4/IPv6 Dual StacksAbstract:This paper introduces the IPv6 socket address structure and Socket API function, the server supporting IPv4/IPv6 dual stacks created a IPv6 socket,called the IPV6 protocol independent Socket API function, and achieved a TCP client / server communication module, experiment shows that the communication module can supports both IPv4 and IPv6. The work of this paper helps someKey Words: IPv4/IPv6 Dual Stacks;IPv6 Socket; Socket API Function;Client/Server Communication Module。

相关文档
最新文档