IPv6学习笔记――RFC2464
2010-08-18 17:44
211 查看
RFC 2464 Transmission of IPv6 Packets over Ethernet Networks 概述 这篇RFC主要描述了在以太网上传输IPv6报文的一些相关的规范定义。这些规范主要涵盖了帧格式、构造IPv6 Link-Local Address以及无状态自动配置地址(statelessly autoconfigured addresses)的方法,并且还定义了在路由恳求、路由通告、邻居恳求、邻居通告及重定向报文中使用的源/目的链路层地址选项的内容。 最大传输单元(MTU) 对于以太网上的IPv6报文,默认的MTU为1500,该值也可以通过路由通告或者手工配置(包括DHCP方式)的方式来设定。当收到带有MTU选项的路 由通告时,应该判断该报文中指定的MTU的值。如果该值小于1500,那么就采用该值。如果该值大于1500或者大于手工配置的值,则忽略该选项,并且在 系统管理日志中作相应的记录。 帧格式 IPv6的报文在以太网上传输的时候,是被封装在标注的以太网头部中的。以太网头部包括目的地址、源地址及类型代码。其格式如下排列: 代码: Destination Ethernet Address —— 16bits * 3 Source Ethernet Address —— 16bits * 3 Ethernet Type —— 16bits = 0x86DD IPv6 header and payload 无状态自动配置 以太网接口的接口标识(Interface Identifier)是基于EUI-64(64-bit extended unique identifier)标识的。而该网卡的EUI-64标识是由网卡内建的48位IEEE802地址扩展的。下面先介绍EUI-64的构造方法。 以太网地址的OUI(Organizationally Unique Identifier)部分(即前3个字节)构成EUI-64的company_id部分(即前3字节),EUI的第四、第五个字节是固定的16进制值 FFFE。以太网地址的最后3个字节构成EUI-64的最后3个字节。 接口标识是通过将EUI-64的“全球/本地”("Universal/Local")位取反得到的。该位是EUI-64的第一个字节的次低位。由于网卡 的内建地址是全球统一管理分配的,因此得到的标识也是全球唯一的。IEEE802或者EUI-64地址的该位为0,而全球唯一的IPv6接口标识的该位为 1。 例如一块网卡的MAC地址为:34-56-78-9A-BC-DE,那么其对应的接口标识应该为:36-56-78-FF-FE-9A-BC-DE。 对于手工设置的或者软件设置的网卡地址,不应该用来构造接口标识。如果一定要使用这类地址来构造接口标识,那么应该在“U/L”位上反映出该地址是否全球唯一。 用来对一块以太网卡进行无状态自动配置的IPv6地址前缀(IPv6 address prefix)的长度必须是64位。 Link-Local Address 以太网卡的IPv6 Link-Local Address是通过该接口的接口标识来构造的。构造方法是:最高的10位为“1111111010”,之后的54位为全0,最后64位为该接口的接口标识。 例如接口标识为:36-56-78-FF-FE-9A-BC-DE,那么对应的IPv6 Link-Local Address为:FE80::3656:78FF:FE9A:BCDE。 地址映射——单播 IPv6单播地址到链路层地址的映射在RFC2461(Neighbor Discovery)里有详细描述。对于以太网而言,源/目的链路层地址选项的格式如下: 代码: Type: 8bits —— 1是源链路层地址,2是目的链路层地址。 Length: 8bits —— 1(以8字节为单位)。 Ethernet Address: 48bits —— 以太网地址。 地址映射——多播 带有IPv6多播地址的报文,对应的接收者的以太网多播地址的结构是:前2个字节为16进制3333,剩下的4个字节为该报文的IPv6多播地址的最后4个字节。 安全考虑 通过MAC地址来构造接口标识是为了保证全球唯一性。但是没有任何保护机制保证该地址不会因为巧合或者伪造而产生冲突。 至于具体的IPv6的地址结构,以及Neighbor Discovery的相关内容等看完相关的RFC后应该就能够搞明白了。 RFC2464原文。 请用右键“目标另存为”来下载。下载后可以使用写字板、UltraEdit、EmEdit及IE来查看。 推荐使用RFC Viewer之类的工具来阅读。 请勿直接使用记事本打开查看(记事本中无法显示格式信息,会让人看起来很难受,呵呵),也不要直接点开下载连接(这样的结果和在记事本里看到的一样,呵呵) 补充一点简单的例子吧。 我想大家应该知道MAC地址的概念吧?对于每一块网卡(这里我们只考虑最常见的以太网卡)而言,都有一个全球唯一的48位的地址,称为MAC地址。在windows下,可以在命令行方式下通过 代码: ipconfig /all 来查看自己的MAC地址。当然,显示出来的是 代码: Physical Address: XX-XX-XX-XX-XX-XX 这样你可以用上文中我所说的方法试着推算出你自己的EUI-64和Interface Identifier,还有可以推算出自己的IPv6 Link-Local Address。 如果你用的操作系统是xp的话,可以通过在命令行方式下执行 代码: ipv6 install 来安装IPv6协议栈,然后通过命令 代码: ipv6 if 来查看自己机器上的各种IPv6的地址,仔细查找的话,可以看到你自己那块网卡的Link-Local地址,对照一下前面你自己的推算结果,看看是不是一样哦,呵呵 |
相关文章推荐
- IPv6学习笔记——RFC2464
- IPv6学习笔记 (2) ---- 简介
- Unix网络编程学习笔记之第12章 IPv4与IPv6的互操作性
- Unix网络编程学习笔记之第12章 IPv4与IPv6的互操作性
- IPv6学习笔记(3)----IPv6地址表示方式
- Linux学习笔记:CentOS6关闭IPv6
- kernel IPv6 路由学习笔记(1)原理.
- 网络编程学习笔记(gethostbyname2函数与IPv6支持)
- IPv6学习笔记 (1) ---- 基本术语
- CCNA学习笔记九--IPv6
- CCIE学习笔记 5---IPV6
- 有关Silverlight TabControl组件的研究——Silverlight学习笔记(5)
- Javascript学习笔记5 类和对象
- 学习php笔记 字符串处理
- JBPM学习笔记
- Intent学习笔记
- javascript学习小笔记
- java学习笔记一——java安装配置
- 【学习笔记】WIN7系统下利用自带IIS配置服务器