一、概述
互联网上的每个接口必须有一个唯一的Internet地址(也称为IP地址)。IP是TCP/IP
协议族中的网络层的协议,是TCP/IP协议族的核心协议。目前IP协议的版本号有IPv4和IPv6。从长远来看,IPv4和IPv6技术在网络中将长期共存(Co-existence)。未来的IP网络将是IPv4网络与IPv6网络的集成(Integration)网络。
二、IPv4
2.1、IPv4报头的格式
●版本(version)
该字段规定了IP协议的版本,其值为4。长度为4位。
●Internet报文长度(IHL)
该字段表示有效载荷之前的4字节块的数量。该字段长度为4位。因为IPv4报头的最小长度为20字节,所以其值最小为5。
●服务类型(Type of Service)
该字段指定路由器在传送过程中如何处理数据包。也可以说它表示这个数据包在由IPv4网络中的路由器转发时所期待的服务。这个字段长度为8位。该字段也可以解释为区分业务编码点(DSCP)。
●总长度(Total Length)
该字段表示IP数据包的总长度(单位为字节),包括报头和有效载荷。这个字段的长度为16位。
●标识(Identification)
该字段和后面提到的标志以及分段偏移量字段都是和分段有关的字段。标识字段由IPv4数据包的源节点来选择,如果IPv4数据包被拆分了,则所有的片段都保留标识字段的值,以使目标节点可以对片段进行重组。该字段长度为16位。
●标志位(Flags)
该字段长度为3位,当前只定义了2位,一个用来表示是否可以对IPv4数据包进行拆分,另一个表示在当前的片断之后是否还有片断。
●片段偏移量(Fragment Offset)
该字段表示相对于原始IPv4有效载荷起始位置的相对位置。这个字段的长度为13位。
●生存时间(Time to Live)
该字段指出了一个IPv4数据包在被丢弃前,可以经过的链路的最大数量。该字段值每经过一个路由器减1,当为0时,数据包将被丢弃。长度为8位。
●协议(Protocol)
该字段用于标识有效载荷中的上层协议。长度为8位。
●报头校验和(Header Checksum)
表示IP报头的校验和,用于错误检查。该字段仅用于IP报头的校验和,有效载荷不包括在校验和计算中。数据包沿途的每个中间路由器都重新计算和验证该字段。该字段长度为16位。
●源地址(Source Address)
发送方的IP地址,长度为32位。
●目的地址(Destination Address)
接收方的IP地址,长度为32位。
●选项(Options)
该字段为一个可选项。
2.2、IPv4地址分类介绍
IPv4地址长为32bit,可分为五类不同的互联网地址格式:
这些32位的地址通常写成写成四个十进制的数,下表显示五类不同IP地址的起止范围:
类型 | 范围 |
A类 | 0.0.0.0到127.255.255.255 |
B类 | 128.0.0.0到191.255.255.255 |
C类 | 192.0.0.0到223.255.255.255 |
D类 | 224.0.0.0到239.255.255.255 |
E类 | 240.0.0.0到247.255.255.255 |
三、IPv6
3.1、IPv6报头的格式
●版本(Version)
该字段规定了IP协议的版本,其值为6。长度为4位。
●通信流类别(Traffic Class)
该字段功能和IPv4中的服务类型功能类似,表示IPv6数据包的类或优先级,长度为8位。
●流标签(Flow Label)
与IPv4相比,该字段是新增的。它用来标识这个数据包属于源节点和目标节点之间的一个特定数据包序列,它需要由中间IPv6路由器进行特殊处理。该字段长度为20位。
●有效载荷长度(Payload Length)
该字段表示IPv6数据包有效载荷的长度。有效载荷是指紧跟IPv6报头的数据包的其他部分(即扩展报头和上层协议数据单元)。该字段长度为16位。那么该字段只能表示最大长度为65535字节的有效载荷。如果有效载荷的长度超过这个值,该字段会置0,而有效载荷的长度用逐跳选项扩展报头中的超大有效载荷选项来表示。
●下一个报头(Next Header)
该字段定义了紧跟在IPv6报头后面的第一个扩展报头(如果存在)的类型,或者上层协议数据单元中的协议类型。该字段长度为8位。
●跳限制(Hop Limit)
该字段类似于IPv4中的Time to Live字段。它定义了IP数据包所能经过的最大跳数。每经过一个路由器,该数值减去1,当该字段的值为0时,数据包将被丢弃。该字段长度为8位。
● 源地址(Source Address)
表示发送方的地址,长度为128位。
●目的地址(Destination Address)
表示接收方的地址,长度为128位。
【Note】:IPv6根本上改变了选项字段,在IPv6中选项由扩展报头处理,因此去掉了选项字段,简化了报头,减少了发送路径上中间路由器的处理消耗。
3.2、IPv6地址分类介绍
IPv6地址长为128bit,有三种不同类型,包括单播、组播和任播(Anycast)。
3.2.1、单播地址
IPv6的单播地址与IPv4的概念是类似的,但与IPv4单播地址不同的是,IPv6单播地址又分为链路本地地址(Link-local address),站点本地地址(Site-local address),可聚合全球单播地址(Aggregatable global unicast address)等几种单播地址。
◆可聚合全球单播地址
可聚合全球单播地址类似于IPv4 Internet上用于通信的单播地址,也就是IPv6公网地址,其地址结构图如下所示:
可聚合全球单播地址前缀的最高3位固定为001。
每个可聚合全球单播IPv6地址有3个部分。
①提供商分配的前缀:提供商分配给组织机构的前缀最少是/48前缀。/48前缀表示网络前缀的高48位。而且,分配给组织机构的前缀是提供商前缀的一部分。
②Site Topology:利用提供商分配给组织机构的一个/48位前缀,组织机构可以利用所收到的前缀的49~64位(共16位)来将网络分成最多65535个子网。
③接口ID:IPv6地址的低64位表示了接口ID。
◆链路本地地址
此类型属于IPv6中的应用范围受限制的地址类型,只能在连接到同一本地链路的节点之间使用。当一个节点启动IPv6协议栈时,节点的每个接口会自动配置一个本地链路地址。这种机制使得两个连接到同一链路的IPv6节点不需要做任何配置就可以通信。
其地址结构图如下所示:
链路本地地址有一个固定的前缀FE80::/64和接口ID组成。
获取IPv6接口ID的最常用的方法,是使用EUI-64地址。EUI-64是IEEE定义的一种基于64比特的扩展唯一标示符。EUI-64格式是IEEE指定的公共24比特制造商标识和制造商为产品指定的40比特值的组合。如下图所示:
EUI-64通过链路层地址(以太网中就是MAC地址)生成接口ID,为64位,而MAC地址是48位,因此需要在MAC地址中的中间位置插入十六进制数FFFE(11111111 11111110)。为了确保这个从MAC地址得到的接口标识符是唯一的,还要将U/L位(从高位开始的第七位)设置位1。最后得到的这组数就作为EUI-64格式的接口ID。转换过程如下图所示:
◆站点本地地址
此类型也属于一种应用范围受限的地址,它仅仅能在一个站点内使用,与IPv4中的私有地址比较类似。
其地址结构图如下所示:
站点本地地址的前48位总是固定的,其中前10位固定为1111111011,紧跟在后面的是连续38