IPv4报文格式
字段 |
长度 |
含义 |
版本 Version |
4比特 |
IP协议的版本号,分为IPv4和IPv6协议。 |
首部长度 (IHL) Header Length |
4比特 |
IPv4的首部长度。首部长度占4位,单位为4字节,可表示最小值5、最大值15,即5*32=160bit=20Byte,15*32bit=480bit=60Byte |
区分服务字段 (TOS字段) DS Field |
8比特 |
用来获得更好的服务。只有在使用区分服务时,这个字段才起作用。由3bit优先权字段、4bitTOS字段、1bit未用位组成 |
总长度 Total Length |
16比特 |
指IP报文首部和数据部分之和的长度。 |
标识 Identification |
16比特 |
IPv4软件在存储器中维持一个计数器,每产生一个数据报,计数器就加1,并将此值赋给标识字段。 |
分段标志 Fragment Flags |
3比特 |
目前只有两位有意义。最低位为1表示后面“还有分片”的数据报,为0表示这已经是最后一个数据片;中间一位为1表示“不能分片”,为0才允许分片。 |
片位移 Fragment Offset |
13比特 |
指出较长的分组在分片后,该片在原分组中的相对位置。 |
生存时间TTL(Time To Live) |
8比特 |
表示数据报在网络中的寿命,功能是“跳数限制”。 |
协议 Protocol |
8比特 |
指出此数据报携带的数据是使用何种协议。 |
首部检验和 Header Checksum |
16比特 |
数据报每经过一个设备,设备都要重新计算一下首部检验和,若首部未发生变化,则此结果必为0,于是就保留这个数据报。这个字段只检验数据报的首部,但不包括数据部分。 |
源地址 Source IP |
32比特 |
报文发送方的IPv4地址。 |
目的地址 Destination IP |
32比特 |
报文接收方的IPv4地址。 |
选项字段 |
0~40字节(长度可变) |
用来支持排错、测量以及安全等措施。在必要的时候插入值为0的填充字节。 |
数据部分 |
可变 |
用来填充报文。 |
------------------------------------------------------------------------------------------------------
IPv6
IPv4问题与改进
- 网络地址短缺:IPv4为32为,只能提供43亿个地址
IPv6128
- 路由速度慢:随着网络规模扩大,路由表越来越大,路由处理速度越来越慢,IPv4头部多大13个字段
IPv6只有8个字段
- 缺乏安全功能:IPv4没有加密、认证等机制
IPv6集成IPSec
- 不支持新的业务模式:IPv4没有扩展字段
IPv6支持多报头嵌套
- IPv6只能由源发节点进行分段,中间路由器不能分段,目的是简化路由处理
IPv6报文格式
共40个字节,8个字段:
- 版本(4位):用0110只是IPv6
- 通信类型(8位):用于区分不同的IP分组,相当于IPv4中服务类型字段(实际不用)
- 流标记(20位):标识某些需要特别处理的分组(实际不用)
- 负载长度(16位):表示除了IPv6固定头部40个字节之外的负载长度,扩展头包含在负载长度之中
- 下一跳头部(8位):指明下一个头部类型,可能是IPv6扩展头部或高层协议的头部
- 跳数限制(8位):用于检测路由循环,类似TTL
- 源地址(128位):发送节点的地址
- 目标地址(128位):接收节点的地址
IPv6扩展头部:
|
头部名称 |
解释 |
0 |
逐条选项 (hop-by-hop option) |
由沿途各个路由器处理 |
60 |
目标选项 (Destination option) |
选项中的信息由目标节点检查处理 |
43 |
路由选择 (routing) |
给出一个路由器地址列表组成,类似于IPv4的松散路由和路由记录 |
51 |
认证 (AH, Authentication) |
由接收者进行身份认证 |
50 |
封装安全负荷 (ESP, Encrypted security payload) |
对分组内容进行加密的有关信息 |
IPv6地址格式
- IPv6地址扩展到128位
- 地址采用冒号分隔的十六进制数表示
- 例如:8000:0000:0000:0000:0123:4567:89AB:CDEF
- 每个字段前面的0可以剩去,例如0123可以简写为123
- 一个或多个全0字段,可以用1对冒号 "::" 代替
以上地址可简写为 8000::123:4567:89AB:CDEF
- IPv4兼容地址可以写为::192.168.10.1
- 有效0为不可以简写,双冒号只能出现一次
IPv6地址分类
单播地址
- 不确定地址:地址 0:0:0:0:0:0:0:0 称为不确定地址,不能分配给任何节点
- 环回地址:地址 0:0:0:0:0:0:0:1 称为环回地址
- 可聚合全球单播地址:这种地址在全球范围内有效,相当于IPv4的公网地址(前缀为001)
- 链路本地地址:用于同一链路的相邻节点间的通信(前缀为1111 1110 10)结合MAC地址自动生成
- 站点本地地址:相当于IPv4中的私网地址(前缀为1111 1110 11)
任意播地址
- 表示一组接口的标识符,通常是路由距离最近的接口
- 任意播地址不能用作源地址,只能作为目标地址
- 任意播地址不能指定给IPv6主机,只能指定给IPv6路由器
组播地址
- 表示一组接口的地址
- 发往组播地址的分组被传送给该地址表示的所有接口
- IPv6中没有广播地址,它的功能已被组播地址所代替
- IPv6组播地址的格式前缀为 1111 1111
IPv4与IPv6地址对比
IPv4与IPv6地址比较
IPv4地址 |
IPv6地址 |
点分十进制表示 |
带冒号的十六进制表示,0可以压缩 |
分为A,B,C,D,E 5类 |
不分类 |
组播地址 224.0.0.0/4 |
组播地址 FF00::/8 |
广播地址(主机位为全1) |
任意播(限于子网内部) |
默认地址 0.0.0.0 |
不确定地址 :: |
环回地址 127.0.0.1 |
环回地址 ::1 |
公共地址 |
可聚合全球单播地址 FP(前缀)=001 |
私网地址 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16 |
站点本地地址 FEC0::/48 |
自动专用IP地址 169.254.0.0/16 |
链路本地地址 FE80::/48 |
|
6to4隧道地址 2002::/16 |
IPv6路由协议
RIPng
OSPFv3
BGP4+
DHCPv6 无状态配置
ICMPv6(新增加的邻居发现功能代替了ARP协议的功能)
IPv4到IPv6过度技术
2023年9月20日
21:19
- 隧道技术:解决IPv6节点之间通过IPv4网络进行通信
- ISATAP隧道
自动隧道技术,可穿透NAT设备,与私网之外的主机建立IPv6连接
- 双栈技术:同时运行IPv4和IPv6
- 翻译技术:解决纯IPv6节点与纯IPv4节点之间的通信
- NAT-PT
- 静态NAT-PT
- 动态NAT-PT
- 基于端口的NAPT-PT
- NAT-PT