网络层协议及报文格式
一、IP v4协议簇包含三个协议:IP(Internet Protocol,因特网协议)、ARP(Address Resolution Protocol,地址解析协议)、ICMP(Internet Control Message Protocol,因特网控制消息协议)。
二、IPv6 协议簇包含四个协议:IPv6、ICMPV6 、ND(Neighbor Discovery,邻居发现协议)、MLD(Multilcast Listener Discover,组播侦听器发现协议)。
三、IP协议基本功能
(1)寻址:二层是MAC地址寻址的广播帧只在同一个以太网段内部进行,不能在不同网段内传播;所以就通过那个三层协议(IP协议)来通信。
(2)数据报的封装:IP封装的目的是表示此IP数据报发送节点和接受节点的IP地址及控制信息。
(3)分段与重组:因为链路上传播数据报大小不同,也就是最大传输单元(mtu),所以我们要对数据报进行拆分。
四、IPv4的不足:
(1)IPv4 地址空间面临枯竭
(2)地址结构不合理
(3)配置复杂
(4)服务质量差
(5)骨干路由器维护的路由表项目数量过多
五、IPV6 的优势
(1)更大的地址空间
(2)有效和分级的寻址和路由基础结构
(3)支持无状态和控制状态的地址配置
(4)支持移动性
(5)对服务质量更好支持
(6) 提供邻居结点交互的新协议
六、IPV4 数据报头部格式
- 版本(version):IP数据报中使用的ip协议版本,占4位,值为4(0100)。
- 头部长度(header length):ip 数据报头部的总长度以4个字节为单位,该字段占4位,当报头无选项字段时,报头的总长度为5,即20个字节,(报头长度值为0101);当IP报头部长度为1111时,头部固定部分长度达到60字节。但是报头长度必须是32位(4个字节)的整数倍,如果不是,须在选项字段的填充(PAD)子字段中补齐0凑齐。
- 区分服务(Differentiated Services):共八位,前六位构成ip优先级和服务类型字段的组合,定义了0-63共64个优先级,最后2位未使用。
- 总长度(Total Length):整个IP数据报总长度以字节为单位,该字节占16位,最大长度位2的16次方-1 ,因为2的16次方包含0,必须减一。
- 标识(Identification):表示IP数据报的标识符,占16位,每个IP数据报有一个唯一的标识。当数据报超过下面链路层的MTU值必须分段时,这个表示字段的值被复制到所有的数据报的标识字段中;相同的标识字段的值使分段后的各数据报分段最后能正确的重装成为原来的数据报
- 标志(Flags):指出ip数据报后面是否有分段,也就是这个字段是分段标志,占3位。最低1位为MF(More Fragment) ,如果MF=1,表示后面还有分段;如果MF=0表示这已经是某个数据报的最后一个分段;中间1位记为DF(Do not Fragment),当DF=1时表示不允许分段,DF=0时表示允许分段;最高1位没有使用。
- 段偏移(Fragment Offset):段偏移字段用以指出该分段在数据报中的相对位置,也就是说,相对于用户数据字段的起点,该分段从何处开始,占13位。段偏移以8字节位偏移单位,每个分段的长度一定时8字节(64位)的整数倍。如果没有分段,则该字段为0。
- 生存时间(Time To Live,TTL):标识IP数据报在网络中传输的有效期,以秒来计数,占8位。每经过一个路由器时,就在TTL中减去数据报在路由器消耗的一段时间。若数据报在路由器消耗的时间小于1s,就把TTL减1。
- 协议(Protocol):标识此IP 数据报在传输层所采用的协议类型(TCP、UDP或ICMP等。占8位,如TCP 的协议号是6,等于二进制的00000110,UDP的协议号是17,等于二进制的00010001.
- 效验和(checksum):用来检验IP数据报的报头技术(不包括数据部分)在传输到接受端后是否发生了变化,占16位。
- 源地址和目的地址(Source Address/Destination Address)
- 选项(options):根据选项的不同,该字段是可变长的,从1字节到40字节。用来支持排错,测量以及安全措施。如果IP数据报的报头不是32位的整数倍,需要使用使用后卖弄的填充字段凑齐。如果恰好位整数倍,则不需要填充字段。
版本:4,标识当前网络中为IPV4
头部长度:5,标识Ip 报头长度为4字节*5 =20字节
区分服务字段:00000000,表示当前IP数据报中没有使用服务类型字段
总长度:40,表示,该数据报总长为40字节
标识:标识该数据报的标识为0x41ab(十六进制)
分段标志:010 第2位为1,表示该字段不能被分段,最低位为0,表示后面没有分段
分段偏移量:0 表示没有分段
生存时间:128 表示该数据报最多可以经过128个路由
上层协议:6,表示IP数据报的传输层协议为TCP协议
效验和:该数据报效验和为0x36A8 ,表示该数据报是完整的‘
源IP地址:发送数据报的源节点的IP地址
目的IP地址:表示该数据报发送给的目的节点IP地址
无IP选项:表示该数据报没有选项字段。
七、IPV6 数据报头部格式:
Ipv6 报头
- 版本(version):标识IP数据报使用IPV6 协议封装,占4位,对应值位6(0110)
- 通信分类(Traffic Class):标识对应IPV6 数据报的通信流类别,或者是优先级别,占8位。
- 流标签(Flow Label):占20位,用来标记报文的数据流类型,以便在网络层区分不同的报文。
- 有效载荷长度(Payload Length):以字节单位标识IPV6 数据报中有效载荷部分,除IPV6 基本报头外其他部分的总长度,占20位。
- 下一个头部(Next Header):标识当前报头(或扩展报头)的下一个头部的类型,占8位。
- 跳数限制(Hop Limit):指定报文可以有效转发的次数,占8位。报文每经过一个路由器结点,跳数值就减1,当数值位0时,直接丢弃该报文。
- 源ip地址(Source IP Address):占128位
- 目的Ip地址(Destination IP Address):占128位
八、IPV6 扩展报头:
(1) 逐跳选项头(Hop-by-Hop Options Header):类型值为0,此扩展报头须被转发路径所有的结点处理。目前在路由告警(RSVP和MLDV1)与jumbo帧处理中使用了逐跳选项头,因为路由告警要通知到转发路径中所有结点。
(2)目的选项头(Destination Options Header):本扩展报头类型值为60。1.路由头前,此选项头须被目的节点和路由头中指定的结点处理;2.上层头前(任何ESP头后),此时只能被目的节点处理。
(3)路由头(Routing Header):扩展报头类型值为43,用于源路由选项和移动IPV6
(4)分段头(Fragment Header):扩展报头类型值为44,用于标识数据报的分段,当源节点发送的报文超过传输链路MTU(源节点和目的节点之间传输路径的MTU)
(5)认证头(Authentication Header):扩展报头类型值为51,用于IPsec,提供报文验证、完整性检查。
(6)封装安全有效载荷头(Encapsulation Security Payload Header):扩展报头类型值为50,提供报文验证、完整性检查和加密。
(7)上层头:标识数据报上层协议类型,如TCP、UDP、ICMP等
九、IPv4 数据报的封装与解封装
数据报通过不同网段时的封装和解封装流程
十、ipv 4 数据报的分段与重组
不同网络数据链路层协议的MTU(最大传输单元)值