打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
IPv6及相关RFC
本文档的Copyleft归yfydz所有,使用GPL发布,可以自由拷贝,转载,转载时请保持文档的完整性,严禁用于任何商业用途。
msn: yfydz_no1@hotmail.com
来源:http://yfydz.cublog.cn

0. 概述
IPv6是下一代IP协议标准,虽然目前还都只是实验阶段,但IPv6取代IPv4是不可避免的。

Java代码
 
  1. 1. IPv6中的“6”的由来   
  2. 说法一:   
  3. 4:已经被IPv4使用   
  4. 5:保留用于流协议 (STP, RFC 1819 / Internet Stream Protocol Version 2),但该协议从未正式应用,下一个空闲数即为 6  
  5. 说法二:   
  6. 由于IPv4地址4个字节,版本号为“4”;IPv6地址是128位,即16字节,故版本号取其个位为“6”   
  7.     
  8. 2. IPv4与IPv6协议格式   
  9.     
  10. 2.1 RFC791定义的IPv4头   
  11.     0                   1                   2                   3     
  12.     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1  
  13.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   
  14.    |Version|  IHL  |Type of Service|          Total Length         |   
  15.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   
  16.    |         Identification        |Flags|      Fragment Offset    |   
  17.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   
  18.    |  Time to Live |    Protocol   |         Header Checksum       |   
  19.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   
  20.    |                       Source Address                          |   
  21.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   
  22.    |                    Destination Address                        |   
  23.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   
  24.    |                    Options                    |    Padding    |   
  25.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   
  26. IPv4的不足   
  27. 地址空间有限:32位地址只能支持42亿多个地址的空间,以目前情况看根本不够用;   
  28. 安全性:本身无安全性考虑,真正的安全性需要上层协议支持,IP层不支持;   
  29. 性能、QoS:自身支持不足,也需上层协议支持;   
  30. 自动配置:BOOTP、DHCP等相对较烦琐;   
  31. 另外IPv4头部结构复杂,参数过多,而且IPv4选项部分对系统性能和安全性都有影响。   
  32.     
  33. 2.2 IPv6协议   
  34.     
  35. 2.2.1 RFC1883定义的IPv6头   
  36.     0                   1                   2                   3     
  37.     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1  
  38.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   
  39.    |Version| Prio. |                   Flow Label                  |   
  40.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   
  41.    |         Payload Length        |  Next Header  |   Hop Limit   |   
  42.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   
  43.    |                                                               |   
  44.    +                                                               +   
  45.    |                                                               |   
  46.    +                         Source Address                        +   
  47.    |                                                               |   
  48.    +                                                               +   
  49.    |                                                               |   
  50.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   
  51.    |                                                               |   
  52.    +                                                               +   
  53.    |                                                               |   
  54.    +                      Destination Address                      +   
  55.    |                                                               |   
  56.    +                                                               +   
  57.    |                                                               |   
  58.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   
  59. RFC1883说明:   
  60. Version:          4位协议号,值为6  
  61. Prio.:            4位数据优先级.   
  62. Flow Label:       24位,流标签,主要用于QoS   
  63. Payload Length:   16位,载荷长度   
  64. Next Header:      8位,下一个头,类似于IPv4的Protocol字段,但不完全相同   
  65. Hop Limit:        8位跳数限制,类似IPv4中的TTL   
  66. Source Address:   128位源地址   
  67. Destination Address:  128位目的地址   
  68. RFC1883已经被RFC2460取代,主要是RFC1883中Prio字段只有4位,而IPv4中的TOS字段为8位,两者不能完全兼容。   
  69.     
  70. 2.2.2 RFC2460定义的IPv6头   
  71.     0                   1                   2                   3     
  72.     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1  
  73.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   
  74.    |Version| Traffic Class |           Flow Label                  |   
  75.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   
  76.    |         Payload Length        |  Next Header  |   Hop Limit   |   
  77.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   
  78.    |                                                               |   
  79.    +                                                               +   
  80.    |                                                               |   
  81.    +                         Source Address                        +   
  82.    |                                                               |   
  83.    +                                                               +   
  84.    |                                                               |   
  85.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   
  86.    |                                                               |   
  87.    +                                                               +   
  88.    |                                                               |   
  89.    +                      Destination Address                      +   
  90.    |                                                               |   
  91.    +                                                               +   
  92.    |                                                               |   
  93.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   
  94. RFC2460格式说明:   
  95. Version:         4位协议号,值为6;   
  96. Traffic Class:   8位传输类别,相对1883中的4位prio能更好支持QoS,在源端或中间转发端用来区分不同类型和优先权的IPv6包,和IPv4的TOS字段一样是8位,这样有利于设计IPv4/IPv6兼容的QoS标准;   
  97. Flow Label:      20位流标签,用于源端标记IPv6包顺序,供路由器特别处理,用来满足某些特殊服务,如QoS和实时信息   
  98. Payload Length:  16位负载长度;   
  99. Next Header:      8位,下一个头,类似于IPv4的Protocol字段,但不完全相同   
  100. Hop Limit:        8位跳数限制,类似IPv4中的TTL   
  101. Source Address:   128位源地址   
  102. Destination Address:  128位目的地址   
  103. 其中Traffic Class字段在RFC 2460中未明确定义,后来在在RFC 2474中定义为:   
  104.         0   1   2   3   4   5   6   7  
  105.       +---+---+---+---+---+---+---+---+   
  106.       |         DSCP          |  CU   |   
  107.       +---+---+---+---+---+---+---+---+   
  108.         DSCP: differentiated services codepoint   
  109.         CU:   currently unused   
  110.     
  111. 2.2.3 IPv6的扩展头类型   
  112. IPv6中取消了IP选项,对于IPv4中需要IP选项完成的功能,在IPv6中使用IPv6扩展头来实现:   
  113. Hop-by-Hop Options:nh=0,选项信息   
  114. Routing:nh=43,路由信息   
  115. Fragment:nh=44,分片信息   
  116. Destination Options:nh=60,目的端要检查的特殊信息   
  117. Authentication:nh=51,AH协议头,RFC4302   
  118. Encapsulating Security Payload:nh=50,ESP协议头,RFC4303   
  119. Nh=59: No Next Header   
  120.     
  121. 举例:一个最完整的IPv6头包括IPv6头和各种扩展头:   
  122. IPv6 header (next header=0)   
  123. Hop-by-Hop Options header (next header=60)   
  124. Destination Options header (next header=43)   
  125. Routing header (next header=44)   
  126. Fragment header (next header=51)   
  127. Authentication header (next header=50)   
  128. Encapsulating Security Payload header (next header=60)   
  129. Destination Options header (next header=upper-layer protocol)   
  130. upper-layer header   
  131.     
  132. 多个扩展头的使用从协议本身角度是方便性提高,但对于防火墙等设备来说来说就必须跟踪到最后一个扩展头才知道上层是什么协议,不象IPv4可以在固定位置处就能检查协议。   
  133.     
  134. 2.2.4 上层协议计算校验和时用到的伪IPv6头   
  135.     
  136. 和IPv4一样,在计算TCP、UDP等的校验和时需要用到IP头部部分信息,用到部分数据称为伪IP头,除需要的字段外其他字段值置0。   
  137.     
  138. IPv6的伪头格式:   
  139.     0                   1                   2                   3     
  140.     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1  
  141.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   
  142.    |                                                               |   
  143.    +                                                               +   
  144.    |                                                               |   
  145.    +                         Source Address                        +   
  146.    |                                                               |   
  147.    +                                                               +   
  148.    |                                                               |   
  149.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   
  150.    |                                                               |   
  151.    +                                                               +   
  152.    |                                                               |   
  153.    +                      Destination Address                      +   
  154.    |                                                               |   
  155.    +                                                               +   
  156.    |                                                               |   
  157.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   
  158.    |                   Upper-Layer Packet Length                   |   
  159.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   
  160.    |                      zero                     |  Next Header  |   
  161.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   
  162.     
  163. 2.3 IPv6相对IPv4优点   
  164.     
  165. 地址范围扩大:地址范围从2^32扩大到2^128,基本可视为无限,可以不再需要NAT   
  166. 地址类型强化和提高:简化了地址自动配置,设备自己的硬件地址直接对应IPv6地址,可以不用配置;增强了多播路由功能;新增“anycast”(泛播)地址类型,取消了广播类型以防止广播风暴;   
  167. 头部格式简化:头部长度固定,数据项也精简,路由设备处理起来更加容易;   
  168. 增强头部的扩展和选项支持:通过“next header”项将各种扩展头串起来   
  169. 性能提高:使用流标签,使数据具备“流”的概念,而不仅仅是IPv4中的单独的“包”的概念;   
  170. 认证和安全性提高:IPSec将不再是象IPv4那样是“突兀”地插入IP协议,而称为IP协议中自然的组成部分。   
  171.     
  172. 3. IPv6地址   
  173.     
  174. 3.1 书写格式   
  175. 基本格式:X:X:X:X:X:X:X:X,X:16位数   
  176. 缩写格式:对于连续的0,可以用“::”代替,但只能代替一次   
  177. 兼容V4格式:X:X:X:X:X:X:a.b.c.d   
  178.     
  179. 3.2 IPv4到IPv6的格式转换:   
  180. IPv4-compatible IPv6 address, v6的低32位地址同v4,高96位地址为0  
  181. |        80 bits        | 16 |   32 bits    |   
  182. |0000...............0000|0000| IPv4 address |   
  183.     
  184. IPv4-mapped IPv6 address,v6的低32位地址同v4,33-48位为1,高80位地址为0  
  185. |        80 bits        | 16 |   32 bits    |   
  186. |0000...............0000|FFFF| IPv4 address |   
  187.     
  188. 3.3 IPv6地址空间和类型   
  189.     
  190. 3.3.1 地址空间分配   
  191. Unspecified        00...0 (128 bits) ::/128  
  192. Loopback           00...1 (128 bits) ::1/128  
  193. Multicast          11111111          FF00::/8  
  194. Link-local unicast 1111111010        FE80::/10  
  195. Site-local unicast 1111111011        FEC0::/10  
  196. Global unicast (everything else)   
  197.     
  198. 3.3.2 地址类型(广播类型地址不再存在):   
  199.     
  200. 单播:unicast,每个设备的ID号成为地址的一部分,包括以下三类:   
  201. Link local:用于单一连接,不可路由   
  202. |  10bits  |     54 bits      |      64 bits       |   
  203. |1111111010|       0          |   interface ID     |   
  204.     
  205. Site local:用于内部网络,网络外不可路由   
  206. |  10bits  |     54 bits      |      64 bits       |   
  207. |1111111011|    subnet ID     |   interface ID     |   
  208.     
  209. Global unicast:全局地址   
  210. |        n bits         |   m bits  | 128-n-m bits |   
  211. | global routing prefix | subnet ID | interface ID |   
  212.     
  213. 组播:multicast, FF00::/8,v4中的广播在v6中用组播代替。   
  214.     
  215. 泛播:anycast,地址空间和单播地址空间相同,一个unicast地址设置到多个网络接口后就可成为anycast地址,需要指明anycast属性。泛播包只被路由到最近的具有该地址的网络接口,通常用于DNS等服务。   
  216.     
  217. 4. 从IPv4到IPv6升级需要修改的协议   
  218. 链路层:以太网相对修改较小,IPv6协议号0x86DD,比较大的修改部分应该是为MTU发现处理;对于ATM网络可能修改量较大   
  219. ARP/RARP:需要支持v6地址到MAC的变换   
  220. 网络层:ICMPv4需要升级为ICMPv6, IGMP也需要升级   
  221. 传输层:需要网络层信息的所有协议都必须修改,如TCP/UDP的校验和计算都用到了IP伪头信息   
  222. 应用层:所有使用IP地址信息的协议都需要修改,特别是有子连接的协议   
  223. 路由协议:RIP、OSPF、…全部需要更新   
  224. 文本地址表示协议:如FTP、SIP等,修改相对简单   
  225. 数值地址表示协议:如DNS、DHCP、BOOTP、H.323等,修改相对复杂   
  226. 用户界面:要支持IPv6地址格式   
  227. 简化部分:IPSec,在IPv6中实现IPSec相对比较简单,因为在设计IPv6时就把IPSec作为一个部分考虑进去了,而设计IPv4时根本还不存在IPSec概念,IPSec是后来硬塞进IPv4中的。   
  228.     
  229. 5. IPv4与IPv6共存方式   
  230. V6 over V4:IPv6包封装在IPv4包中传输   
  231. V4 over V6:IPv4包封装在IPv6包中传输   
  232. 对于网络中的服务器,路由交换设备,都需要支持同时IPv4、IPv6,因此需要实现双栈。   
  233.     
  234. 6. 实施IPv6障碍   
  235. 目前实施IPv6有以下几个障碍,第一,目前没有一项应用是必须使用IPv6才能完成的,所有协议IPv4均能完成;第二,由于NAT和 CIDR的使用,使IPv4地址分配速度减慢,使得IPv6需求不是那么迫切;第三,IPv6标准的不成熟性,表现在新RFC不断废除老RFC,这样抑制了厂商的生产积极性,使得相关产品总是属于实验室产品。   
  236.     
  237. 7. 结论   
  238.     
  239. 第一,IPv4升级到IPv6是大势所趋,因为IPv4地址总会在可见时间内分配完,为了支持IPv6,需要从底层到应用层的协议进行全面修改;第二,IPv4即使在地址分配完后仍然会存在,IPv4和IPv6会共存相当长时间,单纯只支持IPv6的网络设备是没有市场的。   
  240.     
  241. 8. IPv6相关网站   
  242. http://www.ipv6.org   
  243. http://www.6bone.net   
  244. http://www.freenet6.net/   
  245. http://playground.sun.com/pub/ipng/html   
  246. http://www.6ren.net   
  247. http://www.ipv6forum.com   
  248. http://hs247.com/   
  249. http://www.ipv6.net.cn   
  250.   
  251. 9. IPv6相关RFC   
  252. 以下是我整理的和IPv6相关的RFC,同时也是本文的相关参考文献,括号表示新RFC取代老RFC,可看到有些协议标准的RFC甚至被废除了两次。   
  253.     
  254. 协议标准:   
  255. IPv6: 1883(2460)   
  256. Addressing Architecture: 1884(2373(3513))   
  257. testing address: 1897(2471(3701))   
  258. address format: 2073(2374(3587))   
  259. multicast address: 23753307  
  260. Unicast-Prefix-based IPv6 Multicast Addresses: 33063956  
  261. reserved subnet anycast: 2526  
  262. literal address in URL: 2396/2732(3986)   
  263. Flow Label: 35953697  
  264. Mobility: 37753776  
  265. Scoped address architecture: 4007  
  266. unique local ipv6 unicast address: 4193  
  267.     
  268. 物理层:   
  269. ipv6 over ethernet: 1972(2464)   
  270. ipv6 over fddi: 2019(2467)   
  271. ipv6 over token ring: 2470  
  272. ipv6 over PPP: 2472  
  273. ipv6 over NBMA: 2491  
  274. ipv6 over ATM: 2492  
  275. ipv6 over ARCnet: 2497,1201  
  276. ipv6 over frame relay: 2590  
  277. ipv6 over IEEE 1394 Networks: 3146  
  278. ipv6 over fibre channel: 3831  
  279. 3G: 4215  
  280.     
  281. 网络传输层:   
  282. neight discovery: 1970(2461), 3122  
  283. address autoconfig: 1971(2462), 3041  
  284. DHCPv6: 33153633364637363898  
  285. ipv6 over ipv4: 2529  
  286. IPv6 Domains via IPv4 Clouds: 3056  
  287. ICMP6: 1885(2463)   
  288. IGMP: 2236(3376)   
  289. TCP/UDP: 2147(2675)   
  290. tunneling:2473  
  291. DiffServ: 1455/1349(2474,3168,3260)   
  292. Multicast Listener Discovery (MLD) for IPv6: 271035903810  
  293. Transition Mechanisms for IPv6 Hosts and Routers: 1933(2893(4213))   
  294.     
  295. 应用层:   
  296. SNTPv4: 2030  
  297. RIPng: 2080  
  298. MIB for ipv6: 24652466  
  299. BGP-4 for ipv6: 2545  
  300. OSPF: 23282740  
  301. FTP: 2428  
  302. DNS: 25352874315232263363336435963901403340344035  
  303. Router renumbering: 2894  
  304. Service Location Protocol Modifications for IPv6: 3111  
  305. Radius: 3162  
  306. RSVP: 3175  
  307. SDP: 23273266  
  308. MLDv2: 27103810  
  309. HMIPv6: 4140  
  310.     
  311. 编程接口:   
  312. socket interface extension: 2133 (2553 (3493) )   
  313. socket api: 2292(3542)  
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
面对IPv6十大须知
IPv6技术详解
段路由头SRH是什么?
TEP136 TinyOS中IP协议栈的标示
IPv4与IPv6协议的区别、比较
IPv6协议产生的背景过程和现状(四)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服