网络编程tcp协议和udp协议,-网络层协议-IPv6协议
我们常说的“传统IP”协议,指的是IPv4版本,由于它的一些缺点:地址空间耗尽、路由表急剧膨胀、缺乏对QoS的支持、本身并不提供任何安全机制、移动性差等,于是IETF在1995年12月份推出了下一代网络——IPv6协议。该协议最早叫做下一代IP(IP Next Generation,IPng),现在它的全称是“互联网协议第6版”。相对于IPv4来说,其主要的变化有以下两点:
(1)将IPv4的32位IP地址,扩大到128位IP地址;
(2)在IPv6数据报的首部格式中,用固定格式的扩展首部取代了IPv4中可变长的选项字段。
1、 IPv6地址表示1个32位的IPv4地址以8位为1段分成4段,每段之间用点(.)分开。而IPv6地址的128位是以16位为一段,共分为8段,每段的16位转化为1个4位的十六进制数字,每段之间用冒号(:)分开。
1.1 首选IPv6地址表示首选格式是最长的表示方法,由所有的32个十六进制字符组成。例如:
2001:0da8:d001:0001:0000:0000:0000:0001
1.2 压缩地址表示在IPv6中,常见到使用包含一长串0的地址,为了方便书写,对于每一段中的前导0可以进行省略。如上面的首选地址经过一次压缩,可以得到:
2001:da8:d001:1:0:0:0:1
对于连续两段以上都为0的字段,可以使用两个冒号“::”表示,这样再次压缩,变为:
2001:da8:d001:1::1
这就是IPv6地址的压缩表示法,注意:每个IPv6地址只允许一个“::”。
1.3 内嵌IPv4地址的IPv6地址这种表示法的地址的第一部分使用十六进制表示,而IPv4部分采用十进制。这是过渡机制所用的IPv6地址特有的表示法,例如:
fe80::200:5efe:58.20.27.60
1.4 IPv6前缀和子网划分IPv6前缀是地址中具有固定值的位数部分或表示网络标识的位数部分。IPv6的子网标识、路由器和地址范围前缀表示法与IPv4采用的CIDR标记法相同,其前缀可书写为:地址/前缀长度。例如21DB:D3::/48是一个路由器前缀,而21DB:D3:0:2F3B::/64是21DB:D3::/48的一个子网前缀。
IPv6前缀与网络掩码的描述
1.5 IPv6地址类型
IPv6前缀
描述
2001:da8:d001:3::1/128
表示只有一个IPv6地址的子网
2001:da8:d001:3::/64
这个前缀可处理个节点,/64是子网的默认前缀长度
2001:da8:d001::/48
这个前缀可处理个长度为64位的网络前缀,也就是可以划分出个类似上面64位掩码的子网,/48是站点的默认前缀长度
IPv4有单播、组播和广播地址类型;在IPv6里,广播已经不再使用了,这对网络管理员来说,应该是个好消息,因为在传统的IP网络中,出现的很多问题都是由于广播引起的。IPv6仍有3中地址类型,分别是单播、多播(组播)、泛播(任意播)。
(1)单播IPv6地址:单播地址唯一标识一个IPv6节点的接口。发送往单播地址的数据包最终传递给这个地址所标识的接口。为适应负载均衡,IPv6协议允许多个接口使用相同的IPv6地址,只要它们对于主机上的IPv6协议表现为一个接口;
(2)多播IPv6地址:多播地址标识一组IPv6节点的接口。发送往多播地址的数据包会被该多播组所有的成员处理;
(3)泛播IPv6地址:泛播地址指派给多个节点的接口。发送往泛播地址的数据包只会传递给其中一个接口,一般是隔得最近的一个接口。
2、IPv6报头格式如下图所示,IPv6协议对其包头定义了8个字段。
(1)版本:该字段长度为4位,对于IPv6,本字段的值必须为6;
(2)流量类型:该字段长度为8位,指明为该包提供了某种“区分服务”;
(3)流标签:该字段长度为20位,用于标识属于同一业务流的包(即特定源站到特定目的站),数据流的命名中包括流标签、源节点地址、目的节点地址;
(4)净荷长度:该字段长度为16位,包括净荷的字节长度,也即用户数据部分的长度;
(5)下一报头:该字段长度为8位,指出了IPv6头后所跟的头字段中的协议类型(即传输层是TCP还是UDP)
(6)跳极限:该字段长度为8位,每转发一次该值减1,到0则丢弃,也叫作生存时间;
(7)源IP地址:该字段长度为128位,指出发送方的地址;
(8)目的IP地址:该字段长度为128位,指出接收方的地址。
IPv6头部固定为40字节;IPv4头部固定部分20字节,可变部分最大是40,所以整个IPv4头部最大是60字节。
3、IPv6地址自动配置IPv6的一个重要目标是支持节点即插即用,也就是说,应该能够将节点插入IPv6网络并且不需要任何人为干预即可自动配置它。
3.1 全状态自动配置此类型的配置需要某种程度的人为干预,因为它需要动态主机配置协议来用于IPv6(DHCPv6)服务器,以便用于节点的安装和管理。DHCPv6服务器保留它为之提供配置信息的节点的列表,它还维护状态信息,以便服务器知道每个在使用中的地址的使用时间长度以及该地址可是可供重新分配。
3.2 无状态自动配置此类型配置适合于小型组织和个体。在此情况下,每一主机根据接收的路由器广告的内容确定其地址。通过使用IEEE EUI-64标准来定义地址的网络ID部分,可以合理假定该主机地址在链路上是唯一的。
不管地址是采用何种方式确定的,节点都必须确认其可能地址对于本地链路是唯一的。这是通过将邻居请求消息发送到可能的地址来实现的,如果节点接收到任何响应,它就知道该地址已在使用中并且必须确定其他地址。
4、邻居发现与QoS支持4.1 邻居发现邻居发现协议是IPv6 协议的一个基本组成部分,实现了在IPv4中的ARP、ICMP中的路由器发现部分、重定向协议的所有功能,并具有邻居不可达检测机制。
邻居发现协议采用5种类型的IPv6控制信息报文(ICMPv6)来实现邻居发现协议的各种功能:
(1)路由器请求:当接口工作时,主机发送路由器请求消息,要求路由器立即产生路由器通告消息,而不必等待下一个预定时间。
(2)路由器通告:路由器周期性地通告它的存在以及配置的链路和网络参数,或者对路由器请求消息做出响应,路由器通告消息包含 在连接确认(On-Link)、地址配置的前缀和跳数限制值等。
(3)邻居请求:节点发送邻居请求消息来请求邻居的链路层地址,以验证它先前所获得并保存在缓存中的邻居链路层地址的可达性,或验证它自己的地址在本地链路上是否是唯一的。
(4)邻居通告:对邻居请求消息的响应。节点也可以发送非请求邻居通告来指示链路层地址的变化。
(5)重定向:路由器通过重定向消息通知主机。对于特定的目的地址,如果不是最佳的路由,则通知主机到达目的地的最佳下一跳。
4.2 QoS支持QoS使得IPv6服务质量得到大大提高。从协议来说,IPv4考虑了QoS问题,它的TOS字段,就是用于区分服务类型,并以此来提供不同服务的。不幸的是IP网的设计者将IP网定位为一个提供尽力而为传输服务的,因而IP网不提供对不同类型业务提供分类服务的手段。在实际网络中,网络设备甚至不对TOS作任何处理。而且由于TOS字段是在IP报头之中,对TOS的处理亦是一个不小的开销。IPv6在QoS上的考虑主要是设定了通信流类型(8b)和数据流标号(20b),当然这28b只是用来指示特定的数据流,真正QoS的实现还要网络设备采用特定技术来实现,从本质来说,IPv6的这28b与IPv4的6b的TOS用途是类似的。
5、IPv4向IPv6的过渡从IPv4过渡到IPv6需要花费数年的时间,所以在相当长的时间内IPv6和IPv4网络将会需要进行通信和共存。要提供平稳的过渡,对现有的用户和应用软件影响最小,就要有良好的转换机制。为此IPv6的设计者在RFC 1752中定义了以下过渡标准:
(1)现存的IPv4主机必须可以随时升级到IPv6,它本身的升级与其他主机和路由器的升级无关;
(2)新使用IPv6协议的主机,可以随时加入IPv6网络,不依赖其他主机和路由器;
(3)现存的IPv4主机,安装IPv6协议后,可以继续使用其IPv4地址,而不需要其他地址;
(4)将现有的IPv4jeidina升级到IPv6,或部署新的IPv6节点只需要很少的准备工作。
基于这种标准,下面介绍几种IPv4向IPv6过渡的方案。
5.1 双协议栈双协议栈是处理过渡问题最简单的方式,通过在一台设备上同时运行IPv4和IPv6协议栈使得设备能够处理两种类型的协议。主机根据目的IP地址来决定采用IPv4还是IPv6协议发送或接收数据包。在过渡的初始阶段,所有支持IPv6的主机将同时具有IPv4协议栈。他们能够使用IPv4分组直接和IPv4节点通信,使用IPv6分组直接和IPv6节点通信。双协议栈并不一定要和隧道技术一起使用,但创建隧道一定要有双栈技术的支持。双栈结构如下图所示:
双栈节点有4种工作方式,简单描述如下:
(1)如果应用程序使用目的地址是IPv4地址,则使用IPv4地址;
(2)如果应用程序使用的目的地址是IPv6中的IPv4兼容地址,则同样使用IPv4协议,但此时IPv6封装在IPv4中;
(3)如果应用程序使用的目的地址是一个非IPv4兼容的IPv6地址,则使用IPv6协议,而且很可能此时要采用隧道等机制来进行路由转发;
(4)如果应用程序使用域名,则首先解析域名得到IP地址,然后根据地址情况按上面的分类进行相应的处理。
5.2 隧道模式隧道技术提供了一种以现有的IPv4路由体系来传递IPv6数据的方法,在两者都具备双栈的节点间,将IPv6分组作为无结构意义的数据,封装在IPv4分组中,IPv4数据报头的“协议”字段设置为41,指示这个分组的净荷是一个IPv6分组,IPv4数据报文的源地址和目的地址分别对应隧道入口和出口的IPv4地址,到了隧道的出口处,再讲IPv6报文取出转发给目的站点。封装结果如下图所示:
5.3 NAT-PT
网络地址协议转换(NAT-PT)网关能够实现IPv4和IPv6协议栈的互相转换,包括网络层协议传输层协议以及一些应用层协议之间的互相转换,原有的各种协议可以不加改动就能与新的协议互通,但该技术在应用上有一些限制:
(1)在拓扑结构上要求一次会话中双向数据包的转换都在同一个路由器上完成,因此地址/协议转化方法教适用于只有一个路由器出口的网络;
(2)一些协议字段在转换时不能完全保持原有的含义。
,
免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com