Wireshark协议分析之IPv6 您所在的位置:网站首页 ipv4tos字段在ipv6 Wireshark协议分析之IPv6

Wireshark协议分析之IPv6

#Wireshark协议分析之IPv6| 来源: 网络整理| 查看: 265

一:前言

IPv4的最大地址空间仅允许有4.3亿个地址。但实际上减去特殊用途的预留地址,比如测试地址、广播地址、内网地址,实际可用的地址空间更加有限。解决IPv4地址耗尽的措施,唯一途径就是开发IP规范的新版本。

IPv6相比IPv4在报文结构和通信方式上有较大改变

二:IPv6地址

IPv4地址被局限在32位,提供2的32次方个地址,IPv6有128位,提供2的128次方个地址

因为IPv6地址是128位的,所以用二进制表示不方便,16个字节,因此IPv6地址用8组2字节的十六进制表示,每组用分号隔开

如:1111:aaaa:2222:bbbb:3333:cccc:4444:dddd

一眼扫过不太容易记住,这也是换取更大地址空间的代价

不过IPv6地址记法的一个特性是一些值为0的组可以省略

1111:0000:2222:0000:3333:4444:5555:6666 

上面的地址可以省略掉其中全是0的一个组,让0不可见,如下

1111::2222:0000:3333:4444:5555:6666 

然而,一次只能省略一个值为0的组,所以下面的地址是无效的

1111::2222::3333:4444:5555:6666 

还有一种简化的方法就是把IPv6地址前置的0都省略掉,如下

1111:0000:2222:0333:0044:0005:ffff:ffff 

上面的地址可以简写成下面的地址

1111::2222:333:44:5:ffff:ffff 

一个IPv6地址分为网络部分和主机部分,分别称为网络前缀(network prefix)和接口标识符(interface identifier)。这两个部分在地址上的分布取决于IPv6的通信类型。IPv6通信类型有3种类型:单播(unicast)、任播(anycast)和多播(multicast)。

在多数情况下会遇到本地连接之间的单播,就是在单一网络中的一个设备和另一个设备通信。单播本地连接的IPv6格式如下:

 

在同一网络下和另一个设备通信需要用到本地连接地址。一个本地连接地址的前10个最高有效位被设置为1111111010,紧接着的54位被设置为0 。所以,当你看到一个地址的前半部分是 fe80:0000:0000:0000,这就是一个本地连接地址

本地连接IPv6地址的另一半是接口IP部分,它表明了在网络上唯一的一个主机端点。在以太网中,这是基于MAC地址而来的。然而,MAC地址只有48位。要把64位全部填满,MAC地址先被切成两半,然后值 0xfffe 在两边被当作补码附属上,组成一个唯一标识符。最后,反转第一个字节的第7位比特。

 上图的接口ID,原设备的MAC地址是78:31:c1:cb:b2:56,字节0xfffe先被加入到中间然后 8 反转成了a

IPv6地址簇可以用CIDR的记法来表示,与IPv4地址簇记法相似,上面的64位地址空间可以可以表示为一个本地连接地址:

fe80:0000:0000:0000:/ 64 

 当单播流量在公网上传播时,IPv6的地址会发送变化

当使用这种方式时,全局单播通过将前三位设置为001,加上45位全局路由前缀来标识。全局路由前缀由IANA分配,它可以唯一地标识一个组织的地址空间。接下来的16位是子网ID,它可以用来划分地址,类似于IPv4地址的子网掩码。最后64位被用来当做接口ID,类似于本地连接地址。路由前缀和子网ID可以依据大小而发生变化

三:IPv6包结构(固定40字节)

版本号:IP协议的版本(IPv6的值为6)

流量优先级:用于Qos(服务质量)中区分特定流量的优先级次序

流标号:用来标识同一个流里的报文,这个部分通常适用在Qos管理中确认报文来自同一路径的同一流

有效载荷长度:表名该IPv6包头部后包含的字节数,包含(扩展头部)

下一个首部:用来指明报头后接的第4层的报文头部的类型,该部分替代了IPv4报文头中的协议字段

跳数限制:定义了一个报文的生命周期,代替IPv4报文头中的TTL

源地址:该报文的来源IP地址

目的地址:该报文的目的IP地址

IPv4

IPv4和IPv6的对比

源IP和目的IP的格式不一样IPv4报文总长60(20头 40数据)字节,大小总共74字节(还有14字节的以太网报头);IPv6报文总长80(40头 40数据)字节,大小总共94字节(还有14字节的以太网报头) IPv4通过protocol字段来确认下一层的协议类型(最终交付给哪个协议);IPv6通过 next header 字段IPv4有TTL值,而IPv6使用Hop Limit 实现同样的功能IPv4包含报头校验和值,而IPv6没有IPv4报头包含设置被分片的值,IPv6不会包含,在扩展报头里实现 四:邻居请求和ARP

IPv6不支持广播流量,因为广播被认为是低效的传输机制。没有广播,所以主机之间互相寻找的ARP协议无法使用。

IPv6通过邻居请求(neighbor solicitation)的新特性,利用ICMP6完成工作,是邻居发现协议(NDP)的一项功能

要完成这项工作,ICMP6使用多播,多播是指把信息同时传递给一组目的地址,只有订阅了数据流的主机才会收到和处理数据

多播流量很好地址,有自己保留的IP空间(ff00::/8)

如:地址2001:db8:1:2::1003要和地址2001:db8:1:2::1000的主机通信

在同一网络下通信,源设备必须知道目的设备的mac地址

1 主机 2001:db8:1:2::1003通过多播发送一个邻居请求(ICMPv6 135类型)报文到每一个在网络上的设备

    “IP地址是2001:db8:1:2::1000的设备的MAC地址是什么,我的MAC地址是 00:0c:29:2f:80:31”

2 拥有这个IP地址的设备会收到这个消息,并使用邻居通告(ICMPv6 136 类型)回复源主机

   “我的网络地址是2001:db8:1:2::1000,并且MAC地址是00:0c:29:2f:a7:55”

3  一旦上面的消息被源主机收到,就可以开始通信了

五:IPv6分片

IPv4报头内置分片支持,要确认报文能够穿过所有MTU值不同的网络。在IPv6里,很少用到分片,故未包含在IPv6报头。

一个传输IPv6报文的设备在发送前会执行MTU探索的过程,该过程会决定报文的最大容量。

六:IPv6转换协议

IPv6指出了一个非常现实的问题,但转换现有网络架构所需的代价导致普及非常缓慢。要简化这种转换,就需要一些协议让IPv6会话可以在仅支持IPv4的网络中通过隧道传输。因此,隧道意味着IPv6会话是封装在IPv4会话中的,就像其他可以被IPv4封装的协议一样。封装通常通过以下3种方式

路由器到路由器:使用一个隧道来封装IPv6流量,使得来自一边网络的收发主机都可以访问另一边的IPv4网络。这种方法可以让整个网络使用IPv6,网络内部有IPv4节点。

主机到路由器:在路由层封装用来传输从IPv6主机穿过IPv4网络的流量。这种方法允许在IPv4网络里单一支持IPv6的主机访问外部IPv6网络

主机到主机:在两个端点之间封装IPv6流量。这个方法允许两个IPv6端点直接穿过IPv4网络通信。

常见的转换协议:6to4 Teredo ISATAP等



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有