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 的整数倍 |
生存时间 TTL | 8b | 路由器在转发数据报前,先将 TTL-1,若 TTL 被减为 0,则丢弃该数据报 |
协议 | 8b | 指明给上层(传输层)的协议,如 TCP、UDP 等 |
首部检验和 | 16b | 只检验首部。计算方法是对首部的每 16b 按反码运算求和再取反码 |
源地址 | 4B | 发送方的 IP 地址 |
目的地址 | 4B | 接收方的 IP 地址 |
可变部分 | 0~20B | 提供错误检测及安全等机制 |
IP 首部两个字节往往以 0x45 开头,解题时可用于定位 IP 数据报的开始位置。
IPv4 地址
地址格式
地址类型 | 首字节置位方式 | 首字节十进制范围 | 默认子网掩码 |
---|---|---|---|
A | 0xxx xxxx | 1~126 | 255. 0.0.0 |
B | 10xx xxxx | 128~191 | 255.255. 0.0 |
C | 110x xxxx | 192~223 | 255.255.255. 0 |
D | 1110 xxxx | 224~239 | 多播地址 |
E | 1111 xxxx | 240~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 地址的缺点:
- IP 地址空间利用率低
- 每个物理网络分配一个网络号导致路由表太大
- 不够灵活
为了解决以上问题,在 IP 地址中间增加一个“子网号”字段,使之成为三级 IP 地址。
从一个 IP 地址不能判断该主机所连接的网络是否进行了子网划分,因为不能直接看出有没有子网号,要结合子网掩码,子网中,主机号全 0 的地址为子网的网络地址,主机号全 1 的地址为子网的广播地址。
无分类编址 CIDR
与传统分类 IP 的最大区别就是网络前缀的位数可以自由选取,消除了传统 A、B、C 类地址及划分子网的概念。
斜线记法(CIDR 记法):xxx. xxx. xxx. xxx/a 表示在这个 IP 地址中,前 a 位为网络前缀,后面是主机号。
路由聚合
路由聚合方法通过将所选的多个路由整合到单个路由播发中,帮助将 IP 网络中路由表的数量降至最低。
计算路由聚合的步骤:
- 将每个地址进行二进制转换
- 相同的前缀有 a 位,保留相同位数,将相同比特后面的数(到末尾)填充为 0
- 聚合后的地址块为 xxx. xxx. xxx. xxx/a
- 检查这个地址块是否和原地址范围相等(可选)
仅在题目说明了不能引入新的地址范围或者要包含原地址的所有范围时才需要最后一步。例如:将一个 IP 网络划分成若干个子网,这种情况就需要保证地址范围不变。