IPv4 分组的格式

字段大小描述
版本4b指 IP 的版本,IPv4 的字段值为 4
首部长度4b以 4 B 为单位,首部长度范围为 20 B~60 B
总长度16b首部和数据长度之和,单位为 1 B,所以最大长度是 以太网的最大传送单元 MTU 为 1500 B,所以每个数据报的长度不能超过 1500 B
标识16b数据报的 id,分片后的数据报共享同一个标识
标志3b最低位是 MF (More Fragment),MF=1 表示后面还有分片;中间一位是 DF (Don’t Fragment),到 DF=0 标识可以分片;第一位没意义
片偏移13b以 8 B 为偏移单位,所以除了最后一个分片外,前面的分片的数据部分长度肯定是 8 B 的整数倍
生存时间 TTL8b路由器在转发数据报前,先将 TTL-1,若 TTL 被减为 0,则丢弃该数据报
协议8b指明给上层(传输层)的协议,如 TCPUDP
首部检验和16b只检验首部。计算方法是对首部的每 16b 按反码运算求和再取反码
源地址4B发送方的 IP 地址
目的地址4B接收方的 IP 地址
可变部分0~20B提供错误检测及安全等机制

IP 首部两个字节往往以 0x45 开头,解题时可用于定位 IP 数据报的开始位置。

IPv4 地址

地址格式

地址类型首字节置位方式首字节十进制范围默认子网掩码
A0xxx xxxx1~126255. 0.0.0
B10xx xxxx128~191255.255. 0.0
C110x xxxx192~223255.255.255. 0
D1110 xxxx224~239多播地址
E1111 xxxx240~255保留为今后使用

特殊 IP 地址

IP 地址表示
主机号全为 0该网络本身
主机号全为 1该网络的广播地址
127.x.x.x保留为环回自检
0.0.0.0本网络上的本主机
255.255.255.255表示整个 TCP/IP 网络的广播地址,又称受限广播地址,实际使用时,由于路由器可以隔离广播域,所以等效于该网络的广播地址

普通路由器和 NAT 路由器的对比

设备转发分组会不会改变 IP 地址工作在哪一层
路由器源 IP 地址和目的 IP 地址都不会改变网络层
NAT 路由器一定要转换源 IP 地址或目的 IP 地址网络层和传输层(因为用到端口)

划分子网

两级 IP 地址的缺点:

  1. IP 地址空间利用率低
  2. 每个物理网络分配一个网络号导致路由表太大
  3. 不够灵活

为了解决以上问题,在 IP 地址中间增加一个“子网号”字段,使之成为三级 IP 地址

从一个 IP 地址不能判断该主机所连接的网络是否进行了子网划分,因为不能直接看出有没有子网号,要结合子网掩码,子网中,主机号全 0 的地址为子网的网络地址,主机号全 1 的地址为子网的广播地址。

无分类编址 CIDR

与传统分类 IP 的最大区别就是网络前缀的位数可以自由选取,消除了传统 A、B、C 类地址及划分子网的概念。

斜线记法(CIDR 记法):xxx. xxx. xxx. xxx/a 表示在这个 IP 地址中,前 a 位为网络前缀,后面是主机号。

路由聚合

路由聚合方法通过将所选的多个路由整合到单个路由播发中,帮助将 IP 网络中路由表的数量降至最低。

计算路由聚合的步骤:

  1. 将每个地址进行二进制转换
  2. 相同的前缀有 a 位,保留相同位数,将相同比特后面的数(到末尾)填充为 0
  3. 聚合后的地址块为 xxx. xxx. xxx. xxx/a
  4. 检查这个地址块是否和原地址范围相等(可选)

仅在题目说明了不能引入新的地址范围或者要包含原地址的所有范围时才需要最后一步。例如:将一个 IP 网络划分成若干个子网,这种情况就需要保证地址范围不变。