目录
一、IPv4头部和IPv6头部主要字段有什么区别?
IPv4:报头20字节 2的20次方
TCP:报头20字节
IPv6:报头40字节
IPV4
Type of service: 8bit 服务类型,只有在QOS差分服务要求时,这个字段才起作用;
Total Length: 16bit 总长度,整个IP数据报的长度,包括首部和数据之和,单位为字节,最长65535,总长度必须不超过最大传输单元MTU。
Identification: 16bit 标识,主机每发送一个报文,加1,分片重组时会用到该字段;
Flags: 3bit 标记,
bit 0:保留位,必须为0
bit 1:DF(don't fragmen),能否分片位,0标识可以分片,1标识不能分片
bit 2:MF(more fragment),表示能否该报文为最后一片,0表示最后一片,1代表后面还有
Fragment Offse:13bit 分片偏移,每个分片在原分组中的相对位置,接收端根据片偏移最后将报文按顺序攒起来(重组)
Time to live: 8bit,生存时间
Protocol: 8bit,协议号,标下一层协议是那种协议
Header Checksum: 16bit,头部校验和,只检验数据包的首部,不检验数据部分,这次不采用CRC检验码,而采用简单的计算方法。
Source Address: 32bit,源IP地址,
Destination Address: 32bit,目的IP地址,
Options: 可变,选项字段,最多40字节,IPv4标准报头为20字节。
标准组织定义了5个可选项字段
Padding: 可变,填充字段,全填0
IPv6
IPv6基本报头有8个字节,固定大小为40字节,每一个IPv6数据报文都必须包含报头
拓展包头是可选的,只有需要该扩展包头对应的功能时,数据的发送者才会添加相应的拓展包头
Flow Label: 20bit,流标签,该字段用来表示IP数据包的一个流,当前的标准中没有定义如何管理和处理流标签的细节。
Payload Length: 16bit,该字段表示有效载荷的长度,有效载荷是指紧跟IPv6基本报头的数据包,包含IPv6扩展报头。
Next Header: 8bit,下一报头,该字段指明了跟随在IPv6基本报头后的拓展报头的信息类型。
Hop Limit: 8bit,跳数显示,该字段定义了IPv6数据包所能经过的最大跳数,这个字段和IPv4中的TTL字段非常相似。
Source Address:128bit,该字段表示该报文的源地址。
Destination Address:128bit,该字段表示报文的目的地址。
Extension Headers:拓展报头,IPv6取消了IPv4报头中的选型字段,并引入了多种拓展报文头,在提高处理效率的同时还增强了Ipv6的灵活性,为IPv6提供良好的拓展能力,当超过一种拓展报头被用在同一分组里时,报头必须按照下列顺序出现。
二、IPv6对Qos有啥特别的支持?
IPv6增加了20bit的流标签位(Flow Label)来对流进行分类 2的20次方类
以太网接口MTU是指的出方向,MTU指除了以太网头(二层头)之外,剩下IP+Data 1500字节,IP层传出数据时
如果数据报大于链路MTU,则由IP层进行分片,分片后只在目的端进行重组
MTU针对出方向,单向,一条链路的Pmtu有两个
IP 总长度 16bit ,整个IP数据报的长度包括首部和数据之和,单位为字节,最长65535字节 (2^16-1) 65M
如果是UDP传输,单个IP报文长度需要小于65535字节,在传输过程中如果超过接口的MTU,则被三层进行分片
如果是TCP传输,由于TCP具有MSS,而且TCP有自动对应用数据进行分块的能力,因此如果就应用程序交由TCP封装则无需考虑单个包的大小
目的选项报头;路由报头:在移动中保持通信不中断,就需要有多个目的地址;
SRV6就利用了路由报头
三、IPv6地址分类
链路本地地址(广播域内):
在一个节点启动IPv6协议栈时,节点的每个接口会自动配置一个链路本地地址。该地址专门用来和相同链路上的其他主机通信。
- 只能在连接到同一本地链路的节点之间使用,广泛应用于邻居发现、无状态地址等。
- 链路本地地址前缀FE80::/10,将接口ID添加在后面作为地址的低64位。
- 每一个IPv6接口都必须具备一个链路本地地址。
IPv4原来是由:网络位+主机位
IPv6现在是叫:前缀+接口标识
四、IPv6地址配置方式有哪些
EUI-64根据MAC地址生成接口ID
IPv6地址=前缀(64bit)+接口ID(64bit) 48bit(MAC地址)+16bit(FFEE)=64bit
- 接口ID通过用MAC计算出来
①将48 bit 的MAC对半劈开,然后插入FFFE=1111 1111 1111 1110
②再从左起第7位,也就是U/L位取反 第7比特取反,如果是1就取0,如果是0就取1
③换算成16进制则是对应的接口ID
为什么第②步要将第7bit取反?
单播MAC地址中,第1个Byte的第7bit是U/L(Universal/Local,也称为G/L,其中G表示Global)位,用于表示MAC地址的唯一性。
- 如果U/L=0,则该MAC地址是全局管理地址,是由拥有OUI的厂商所分配的MAC地址;
- 如果U/L=1,则是本地管理地址,是网络管理员基于业务目的自定义的MAC地址。
而在在EUI-64接口ID中,第7bit的含义与MAC地址正好相反,0表示本地管理,1表示全球管理,所以使用EUI-64格式的接口ID,U/L位为1,则地址是全球唯一的,如果为0,则为本地唯一。这就是为什么要反转该位。
换算举例
MAC: D4-3A-65-09-36-AD
中间插入FFFE: D43A:65FF:FE09:36AD
转换为2进制: 11010100 00111010 :01100101 11111111 :11111110 00001001 : 00110110 10101101
第七比特取反: 11010110 00111010 :01100101 11111111 :11111110 00001001 : 00110110 10101101
五、介绍NDP(邻居发现)协议常用功能
IPv6地址不在使用ARP,也不使用广播方式(IPv6取消了广播)
地址解析在三层完成,针对不同的链路层协议可以采用相同的地址解析协议。
通过ICMPv6(类型135的NS邻居请求及类型136的NA邻居通告报文)来实现地址协议
- NS报文发送使用组播的方式,报文的地址IPv6地址为被请求的IPv6地址对应的“被请求节点组播地址”报文的目的MAC为组播MAC。
- 采用组播的方式发送NS消息相比于广播的方式更加高效,也减少了对其他节点的影响和对二层网络的性能压力。
- 可以使用三层的安全机制(数字签名)避免地址解析攻击
IPv6地址无状态自动配置,简称SLAAC是IPv6的标准功能在RFC2462中定义,
在IPv6中,设备可以通过手工或者动态的方式获取地址,在动态获取地址的方式中,存在DHCPv6及无状态地址自动配置两种方式。
相比于DHCPv6这种动态地址分配技术而言,SLAAC无需部署应用服务,更加轻量。
删除客户端undo ipv6 address auto global 重新配置可以重新产生dhcpv6报文
NS邻居请求 RA路由请求报文
六、IPv6过渡机制
手动隧道和自动隧道的区别?
- 隧道目标地址获取方式不同,手动隧道是手动指定的,自动隧道是自动从v6报文中获取的
自动隧道中,6 to 4 隧道和ISATAP隧道的区别?
- 都是将IPv4地址嵌套在IPv6地址中,一个嵌套在前面(前缀),一个嵌套在后面(接口ID)
双栈
IPv6 over IPv4 手动隧道
IPv6 to IPv4 自动隧道