IPv6如何实现arp类似的功能

摘要:
IPv6增加了扩展头,以实现分段和加密等扩展功能。IPv6删除了IPv4中的标识、标志、分区移位、报头长度、选项、校验和和其他字段。IPv6删除校验和的原因是第2层上有FCS验证,第4层上有TCP/UDP验证。IPv6消息不需要验证,这提高了IPv6的性能。如果是,则单播响应NA,并且NA消息携带与R2的2001::2地址相对应的MAC地址。
本文转自头条https://www.toutiao.com/i6828807334622396941/ 一、IPv4与IPv6报头对比

1、IPv4报头

IPv6没有ARP,通过NDP发现邻居,地址解析,理论+实战,干货分享

 

(1)版本 :当前 IP 版本,IPv4。

(2)首部长度:指的是 IPv4 报头长度,20-60 个字节,因为 Option 字段是 0-40 个字

节。

(3)区分服务:用于 Qos 报头。

(4)总长度:总长度=头长+载荷长

(5)标识、标志、 片移位 :用于 IP 报文的分片和重组。

(6)协议:表示上层协议。

(7)首部校验和:头校验和,对报文进行校验。

2、IPv6 的报头

IPv6没有ARP,通过NDP发现邻居,地址解析,理论+实战,干货分享

 

(1)traffic class:是 IPv4 的 ToS,用于 QoS 中标识优先级

(2)flow lable:IPv6 中增加了 flow lable(流标签)字段,用于唯一确定一条 IPv6 数据

流,因为在 IPv4 中确定一条数据流需要使用 5 元组,而确定 TCP/UDP 端口号需要对报文

进行传输层解封装,会消耗设备性能。而流标签可唯一标识数据流,能够更好实现 QoS。

(3)payload length:有效载荷长度,用于表示上层协议报文的大小,因为 IPv6 报头是

固定长 40byte,所以仅需标识上层协议载荷大小即可。

(4)next header:标识上层协议或上层扩展报头,类似于 IPv4 的 protocol。IPv6 中增加

了扩展报头用于实现扩展的功能如分片,加密等。

(5)hop limit:跳数限制,用于防环,类似于 IPv4 的 TTL。

(6)IPv6 删除了 IPv4 中的标识、标志、分片移位、首部长度、Option、校验和等字段。

IPv6 之所以移除校验和,是因为在二层有 FCS 校验,在四层有 TCP/UDP 做校验,IPv6 报

文无需校验,提升了 IPv6 的性能。

(7)扩展报头:用于实现 IPv6 的扩展功能,比如分片,认证,加密等。

二、NDP

NDP(Neighbor Discovery Protocol)是 ICMPv6 的子协议,由于在 IPv6 中没有 ARP

协议,所以在 IPv6 上层定义了 NDP 协议实现 ARP 的地址解析,冲突地址检测等功能以及

IPV6 的邻居发现功能。

IPv6没有ARP,通过NDP发现邻居,地址解析,理论+实战,干货分享

 

1、NDP 使用 ICMPv6 的相关报文

1)、RS(Router Solicitation):路由器请求报文

2)、RA(Router Advertisement):路由器通告报文

3)、NS(Neighbor Solicitation):邻居请求报文

4)、NA(Neighbor Advertisement):邻居通告报文

2、地址解析

IPv6 的地址解析不再使用 ARP,也不再使用广播方式。

1)、地址解析在三层完成,针对不同的链路层协议可以采用相同的地址解析协议

2)、通过 ICMPv6(类型 135 的 NS 及类型 136 的 NA 报文)来实现地址解析。

3)、NS 报文发送使用组播的方式,报文的目的 IPv6 地址为被请求的 IPv6 地址对应的“被

请求节点组播地址”,报文的目的 MAC 为组播 MAC。

4)、采用组播的方式发送 NS 消息相比于广播的方式更加的高效,也减少了对其他节点

的影响和对二层网络的性能压力。

5)、可以使用三层的安全机制(例如 IPSec)避免地址解析攻击。

6)、在 IPv4 中,可以通过 ARP 就可以由 IP 地址解析到链路层地址。

三、地址解析过程(邻居状态建立)
IPv6没有ARP,通过NDP发现邻居,地址解析,理论+实战,干货分享

 

(1)R1 会发送一个 NS(邻居请求报文,属于 ICMPv6 的消息报文,type=135),该报文

源 IP 为 R1 的接口单播地址 2001::1,目的 IP 为要解析的 R2IPv6 单播地址对应的被请求节

点组播地址 FF02::1:FF00:2(将要解析的 IPv6 单播地址的后 24bit 添加到 FF02::1:FF 后面,

其前缀固定 104bit 为 FF02::1:FFXX:XXXX/104);

二层封装源 MAC 为 R1 的 MAC,目的 MAC 为该被请求节点组播地址映射的 IPv6 组播

MAC=3333-FF00-0002(IPv6 组播地址映射的组播 MAC,该组播 MAC 前 16bit 固定为

3333,后 32bit 为 IPv6 组播地址后 32bit);

IPv6没有ARP,通过NDP发现邻居,地址解析,理论+实战,干货分享

 

(2)由于 R2 配置了单播地址 2001::2 之后,就默认加入了该单播地址对应的被请求节点

组播地址 FF02::1:FF00:2 的组播组中,所以只要向该组播组发送报文,R2 都可以接受。

(3)当 R2 收到 R1 的 NS 报文之后,通过查看该报文中标识的要解析的地址是不是自己接

口的单播地址。如果是,则单播回应 NA(邻居通告报文,ICMPv6 的消息报文,

type=136),NA 报文中携带了 R2 的 2001::2 地址对应的 MAC 地址。

IPv6没有ARP,通过NDP发现邻居,地址解析,理论+实战,干货分享

 

(4)R1 通过 R2 回应的 NA 报文可以得知单播地址 2001::2 对应的 MAC 地址。

免责声明:文章转载自《IPv6如何实现arp类似的功能》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇使用Terminalcss 如何“画”一个抽奖转盘下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

如何手写一个react项目生成工具,并发布到npm官网

前言 基于前面自己手动搭建的React项目,我把项目分成了四种,一种什么都不带的空项目,一种带多级路由的空项目,一种带状态管理的空项目,一种带多级路由以及状态管理的空项目。这样的话每次用的时候根据需要去获取自己想要的模板,但是往往还要去github上去拷贝,感觉很不方便,所以就想到了要做一个自动生成对应的空项目的cli工具。 准备工作 文件目录结构 根路...

App自动化测试

1.App自动化测试的技术体系 2.Android SDK环境搭建与常用命令 Anddroid自动化测试前提条件是系统中有JDK环境,并且已经安装好Android SDK Tools。此外,通常情况下,都是基于模拟器的自动化测试(除非做兼容性测试使用真机环境),所以还需要配置或者安装安卓模拟器,这里不推荐使用Android Studio自带的模拟器,因为...

Finder 快捷键

记录几个常用的 Finder 快捷键: 复制 Finder 里选中的路径:option+cmd+c 地址栏跳到指定路径:shift+cmd+g 增加标签:cmd+t 显示/隐藏 标签栏:shift+cmd+t 显示/隐藏 地址栏:option+cmd+p...

mac电脑安装nvm和node

mac电脑要安装node,可以先安装nvm,并通过nvm来管理node版本。 1. 首先查看电脑上是否安装的有node,查看node版本 node -v 2.如果有node需要删除全局node,重新安装 npm ls -g --depth=0 # 查看已经安装在全局的模块,以便删除这些全局模块后再按照不同的 node 版本重新进行全局安装 sudo rm...

eeprom AT24C512 i2c总线的特点 来自eeleader的博客

今天花费了一天时间,研究i2c总线的特点。因为我要用FPGA设计操作i2c总线的时序.i2c总线是常用的串行总线。我要操作的串行eeprom AT24C512。该EEPROM 容量是512KBIT,内部按照每页128字节组织,总共是512页。根据我的设计构思,准备使用PAGE WIRET 和随机连续读 两种命令方式。读写准备按照页方式进行。根据我上面的要求...

Mac下的IDEA快捷键

  快捷键 功能 Option + enter 打开提示 Command + / 注释方式是“行注释”;可以注释当前行、取消当前行的注释 注释选中的内容、取消选中行的注释 Option + Command + / 注释方式为“多行注释”;注释选中的内容、取消注释 Option + Command + L 格式化代码 Comman...