IPv4和IPv6的技术简介
IPv4和IPv6技术简介
前言
因特网协议IP(Intenet Protocol)是将internet网连在一起的是网络层协议,他的工作是提供一种从源端到目的短传输数据报的最佳尝试方法,不管这些机器是否在同一个网络中,或者其间是否有其他网络。
一. IP版本4
1.头标结构
一个IP数据报有一个头部和一个正文部分构成。头部有一个20字节的固定长度和一个可选任意长度的部分。头部格式如图1所示。
图1 IPv4头标
任何IP头部必须是32位的倍数,最小IP 头部长度为20字节。图1描绘了由14个几、字段组成的头部结构。4位的版本字段定义了头部的格式。该IP版本的对应植为4。4位头标长度字段定义了以32位为单位计量的当前头部的长度。8位的服务类型(TOS)字段包括3位(位0-2)优先权(现在已被忽略)、4位TOS及1位未用(置0)。每个TOS位对应于特殊的包传输请求,分别为最小延迟、最大吞吐量、最大可靠性及最小成本。如果TOS的所有位均置成0,则IP执行常规的传输服务。16位的总长度字段定义了IP包以字节计的当前长度,包括头部和有效载荷。16位的标识符字段携带能将多个以IP包传送的用户数据单元进行重组所需的信息。3位的标志字段指出是否允许分段(位1被置成0)或包是否包含了用户数据单元的最后一段(位2被置成0)。位0被保留且必须为0。13位的分段偏移量字段表示有效载荷中传送的用户数据段在整个用户数据单元中的位置(以8字节为单位)。用户数据单元的第一段必须将偏移量置为0。8位的生存期(TTL)字段指出允许包滞留在互联网中的时间。TTL值一般被置为包可能通过的最多IP路由器个数。每个路由器将TTL值减1,直至TTL达到0。一个TTL值为0的包将被丢弃,同时它的发送者能通过ICMP协议得到相应的通知。8位的协议字段为相邻高层协议传递了多路分解标识符,包中的有效载荷应被传递给该标识符标识的协议。16位的头部校验和字段传送了依据头部字段计算出的校验和。这种校验和用来检测由路由器中的内存坏字节带来的错误很有用。当数据传送时,该算法将头部所有16位半字数据的补累加起来,写入头部校验和字段。值得注意大是,头部校验和在每个节点都要重新计算,因为至少有一个字段总是在变(生存期字段)。32位的源和目的地址字段分别包含该包的发送者和接受者IP地址。可选项(options)是用来提供一个余地,以允许后续版本的协议中引入最初版本中没有的信息,以及避免为很少使用的信息分配头部位。可选项是变长的,每个可选项都以一个字节标明内容。有些可选项还跟着有一字节的可选项长度字段,其后是一个或多个数据字节。可选项字段的长度以4字节计,现在已经定义了5个可选项,列于表2中,但并不是所有的路由器都支持5个可选项。
表2 IP 的可选项
安全性选项说明信息的安全程度。实际上,所有的路由器都忽略该字段,因此它的唯一实际用途就是使间谍更容易找到好材料。
严格的源路由选择选择以一系列的IP地址方式,给出了从源到目的地的完整路径。数据报必须严格地从这条路径传送。当路由选择表崩溃时,系统管理员发送紧急分组,或作时间测量时,该字段很有用。
松的源路由选择选项要求分组遍及所列的路由器,而且以所指定的次序。但它可以在其间穿过其他的路由器。
记录路由选项让沿途的路由器都将其IP地址加到可选字段后,这为系统管理员以后分析这个数据包的来源提供了方便,可用来为路由选择算法查错。
最后,时间标记选项象记录路由选项一样,除了记录32位的IP地址以外,每个路由器还要记录一个32位的时间标记。同样地,这一选项可用来为路由选择算法查错。
2.IP地址
每个Internet上的主机和路由器都有一个IP地址,包括网络号和主机号。这一编码组合是唯一的,没有两台有同一IP地址的机器。所有的IP地址都是32位的,并且用于IP分组的源地址和目标地址字段。IP地址的格式如图3所示。连接于多个网络的机器在各个网络上有不同的IP地址。
为使地址的分配更容易,32比特的IP地址的格式被构造成五种唯一的网络类别,其中三种是由Internet网络信息中心(InterNIC)分配给Internet接入提供者的,再由Internet接入提供者依次将这些地址分配给组织和个人。IP地址的分类范围是从A类到E类的。D类地址留作用于多点传送,E类地址留作将来使用。
图3 IP的地址格式
一个A类地址允许最多有126个1600万主机的网络。因此,InterNIC将A类地址分配给具有国家级网络的大的组织和国家,因为一个A类地址将第一个八位位组或字节的第一个比特用作类别标识符,所以一个A类网络所具有的网络号被限制在1到127之间,也就是它的第一个十进制数的范围为1到127。
一个B类地址被均匀的分开,两个字节用作地址的网络部分,两个字节用作地址的主机部分。分配有两个字节的主机地址能够最多标识65536台主机。一个B类地址允许最多有16382个65536台主机的网络。因此,B类地址通常被分配给相对大的具有上万名雇员的组织。
一个C类地址用三个字节作为地址的网络部分,用一个字节作为地址的主机标识符。因此,一个C类地址允许最多有200万个254台主机的网络。C类地址只能被分配给较小的组织,或者是多个C类地址被分配给需要大于254个不同的主机地址,但分配给B类地址又用不完的组织。
D类地址是多点传送地址。多点传送是一种通信技术,它能够将一个会话传送给多个用户,但对会话感兴趣的用户必须加入到传输地址所指定的多点传送组内。这种技术适合于分布的实时音频和视频,因为网络中只有一种数据流通过,它明显地减少了带宽的使用。
E类地址是一个实验地址,它用于开发新的通信技术。
IP地址典型写成4个十进制数,每个十进制数用一个字节表示。由于各个十进制数字用一个原点(.)分开,故这种表示方法称为点分十进制表示。
值0和-1有特殊的意义,如图4所示。值0表示本网络或本主机。值-1表示一个广播地址,它代表网络中的所有主机。
图4 一些特殊的IP地址
IP地址0.0.0.0 用于启动以后不再使用的主机。以0作网络号的IP地址代表当前的网络。这些地址可以让机器引用自己的网络而不必知道其网络号(但必须知道是哪一级网络,以确定用几个0)。全部由1组成的地址代表内部网络上的广播,通常是一个LAN。有一个正确的网络号,主机号全为1的地址可以用来向因特网上任意远程LAN发送广播分组。最后,所有形如127.xx.yy.zz的地址都保留作回路测试。发送到这个地址的分组不输出到线路上,它们被内部处理并当作输入分组,使发送者可以在不知道网络号的情况下向内部网络发送分组。这一特性也用来为网络软件查错。
3.子网化
假如东信在北京有个40台主机的LAN ,在杭州有个100台主机的LAN,假如InterNIC给东信分配了两个C类地址,那样就会造成IP地址的很大浪费。这就引入了子网化的概念。子网化扩展了一个IP地址的网络部分,相对减少了该地址的主机部分。这样就可以给东信分配一个C类地址,构造两个子网就可以解决问题。图5标明了一个正常的IP地址和一个子网化的IP地址之间的关系。
图5 子网化扩展了一个IP地址的网络部分
子网化的好处:一个子网化的IP地址代替了路由表中一系列单个网络地址入口的需要,所以子网化减少了路由表的入口地址,使在所维护的表中查找入口地址更为容易。
子网掩码:是一个32比特的二进制数,它由表示一个IP地址网络部分的一串'1'比特组成的。将一个IP地址和一个子网掩码相与就可以得到该IP地址的网络部分。
二. IP版本6
1.IPv6的产生背景
传统的IP,即IPv4(IP version 4)定义IP地址的长度为32位,Internet上每个主机都分配了一个(或多个)32位的IP地址。32位的地址在DARPA时代的互联网络看来还是足够使用的,同时网络地址的分类(A、B、C、D、E类)和提取也提高了路由的效率。 但是在80年代早期,即使是最有远见的TCP/IP开发者们也没有预料到互联网会有后来的爆炸性的增长。Internet的设计者们没有想到今天Internet会发展到如此大的规模,更没有预测到今天Internet因为发展规模所陷入的困境。1987年统计表明可能将来需要分配多达100,000个网络,然而早在1996年这个记录已经被打破。自从1992年以来,特别是WWW服务普及之后,网络节点的数目开始几何级数的增长。
址短缺问题的根源有绝对的一面也有相对的一面。绝对的一面就是32位的空间是十分有限的;相对的一面就是,尽管现行的32位IPv4的地址结构可以为1670万个网络上的超过40亿台主机分配地址,但实际上的地址分配效率远远达不到这个数值,甚至在理论上也不可能。 网络增长不仅导致地址总数量的不够,也导致路由表的迅速膨胀。
在 IPv4面临的一系列问题中,IP地址即将耗尽无疑是最为严重的,有预测表明,以目前Internet发展速度计算,所有IPv4地址将在2005~2010年间分配完毕。为了彻底解决IPv4存在的问题,IETF从1995年开始,着手研究开发下一代IP协议,即IPv6。IPv6具有长达128位的地址空间,可以彻底解决IPv4地址不足的问题,除此之外,IPv6还采用分级地址模式、高效IP包头、服务质量、主机地址自动配置、认证和加密等许多技术。
2.IPv6的对策
IPv6采用了长度为128位的IP地址,彻底解决了IPv4地址不足的难题。Ipv6对Ipv4所作的主要修改有:
· 将IP地址从32位增加到128位。
· 通过增加一个作用域字段而改进了多点播送地址。
· 新的任意播送(anycast)IP地址类型用于向组内任何成员发送包,通常是最近的组成员。
· 用可选的扩展头部替代头部中选项字段。
· 删除头部校验和字段。
· 删除所有分段处理所用的字段,所以仅执行端到端的分段。
· 新的流标号字段可用来标识特定的用户数据流或通信量类型。
· 扩展了对认证、数据一致性和(可选的)数据保密的支持。
A. IPv6的头部结构
IPv6使用了固定长度为40字节的头部。另外,可附接不同的扩展头部。每个头部的长度是8字节的倍数。IPv6没有定义尾部。图6显示了基本头部的格式及其8个字段。
1. 版本
在所有IPv6数据报中将该域置成6。
2.优先级
紧接版本域之后的4比特指示优先级。利用优先级域,首先区分二大业务量(traffic):
即受拥塞控制(congestion-controlled)业务量;
不受拥塞控制的(noncongestion-controlled)业务量。
在IPv6规范中0~7级的优先级为受拥塞控制的业务量保留,这种业务量的最低优先级为1,Internet控制用的业务量的优先级为7(参阅图7)。
不受拥塞控制的业务量是指当网络拥塞时不能进行速率调整的业务量。对时延要求很严的实时话音即是这类业务量的一个示例。在IPv6中将其值为8~15的优先级分配给这种类型的业务量。
图6 Ipv6固定的头部(必须的)
图7 受拥塞控制的业务量中的IP优先级
应当注意,在受拥塞控制的业务量和实时业务量(即不受拥塞控制的业务量)之间不存在相对的优先级顺序。例如高质量的图象分组的优先级取8,SNMP分组的优先级取7,决不会使图象分组优先。
3.流标识
一个流由其源地址,目的地址和流序号来命名。在IPv6规范中对流作如下定义:"流是指从某个源点向(单目或组播的)信宿发送的分组群中,源点要求中间路由器作特殊处理的那些分组"。换句话说,流是指源点、信宿和流标记三者分别相同的分组的集合。任何的流标记都不得在此路由器中保持6秒以上。此路由器在6秒之后必须删除高速缓存(cache)中登录项,当该流的下一个分组出现时,此登录项被重新学习。并非所有的分组都属于流。实际上从IPv4向IPv6的过渡期间大部分的分组不属于特定的流。例如,SMTP、FTP以及WWW浏览器等传统的应用均可生成分组。这些程序原本是为了IPv4而设计的,在过渡期为使IPv4地址和IPv6地址都能处理而进行了改进,但不能处理在IPv4中不存在的流。在这分组中应置入由24比特0组成的空流标记。
4.有效载荷长度
有效载荷长度域指示IP基本头标以后的IP数据报剩余部分的长度,单位是字节。此域占16比特,因而IP数据报通常应在65535字节以内。但如果使用Hop By Hop 选项扩展头标的特大净荷选项,就能传送更大的数据报。利用此选项时净荷长度置0。
5.下一个头
下一个头标用来标识数据报中的基本IP头标的下一个头标。在此头标中,指示选项的IP头标和上层协议。表8列出了主要的下一个头标值。其中一些值用来标识扩展头标。
表8 IP下一个头标值
6.站段限制
站段限制决定了能够将分组传送到多远。主机在生成数据报时,在站段限制域中设置某一初值,然后将数据报送到网上的路由器。各路由器从该值起逐次减1。如数据报到达信宿之前其站段限制变为0,该数据报就被抛弃掉。使用站段限制有二个目的。第一是防止寻路发生闭环(loop)。因IP不能订正路由器的错误信息,故无法使此数据报到达信宿。在IP中可以利用站段限制来防止数据报陷入寻路的死循环中。站段限制还用于其他目的。主机利用它在网内进行检索。PC要向其中一个服务器发送数据报,无论发向哪个都行。为了减轻网络负荷,PC希望搜索到离它最近的服务器。
7.源地址和目的地址
基本IP头标中最后2个域是信源地址和目的地址。它们各占128比特。在此域中置入数据报最初的源地址和最后的目的地址。
B. IP扩展头标
IPv4头标中存在可变长度的选项,利用它可以处理具有指定路径控制、路径记录、时间标记(time stamp)和安全等选项的特殊分组。但因这种分组会影响网络的性能,故选项逐渐被废弃。根据IPv4的运用经验,IPv6中规定了使用扩展头标(extention header)的特殊处理。扩展头标加在IP分组的基本头标之后。IPv6(extention header)规范中定义了若干种不同的扩展头标(表9)。它们由下一个头标域的值来标识。每种头部都是可选的,但一旦有多于一种头部出现时,它们必须紧跟在固有头部之后,并且最好按下列次序排序。
表9 Ipv6的扩展头部
· 站接站选项(hop-by-hop options header)运载每个IP路由器必须解释的选项信息;例如它可以用于传送超大有效载荷信息。
· 路由选择头部(routing header)定义了该包必须经过IP路由器(也称为源路由)。
· 分段头部(fragment header)当传送的用户数据大于有效载荷所能允许的最大长度时便要用到分段头部,分段头部传送了有效载荷携带的用户数据段在整个用户数据单元中的偏移量。
· 身份验证头部(authentication header)可选的认证信息。
· 加密的安全性有效载荷(encapsulating security payload header)传送着有效载荷的额外保护信息。
· 目的选项头部(destination options header)运载着仅为目的站检查用的可选信息。
C. IPv6的表示方法
IPv6地址拥有128位,故采用了一种不同于IPv4点分十进制的文本表示法。推荐的格式是将地址写成8个由":"分开的十六进制数,例如
1080:0:0:0:8:800:200C:417A。一组十六进制值0可简单压缩成"::",但是这只能在串中出现一次,例如1080::8:800:200C:417A。如果在IPv6格式中表示IPv4地址,则最后两个十六进制数包括其间的":"可用IPv4地址的点分十进制表示替代,例如::FFFF:129.144.52.38。
参考:
【1】RFC0791(09/1981) 网间网协议(IP)
【2】《计算机网络》(第三版)熊桂喜、王小虎译,清华大学出版社
【3】《数据通信》(第六版)戴志涛、郑岩等译,人民邮电出版社
【4】《面向对象的网络协议》陈葆珏、严伟译,机械工业出版社