2. IP 数据报

1. IP 数据报格式

1.1 TCP/IP 协议栈

1.2 IP 数据报格式

首部细节

版本:占 4 位,指 IP 协议的版本。(IPv4/IPv6)

首部长度:占 4 位,单位是 4B,最小为 5(因为首部固定部分 20B,5 * 4B = 20B),最大为 15(15 * 4B = 60B)

区分服务:占 8 位,用来获取更好的服务(如:优先级),但实际上一直没有用过

总长度:占 16 位,首部 + 数据部分的总长度,单位是 1B,因此数据报的总长度为 2161=65535B2^{16} - 1 = 65535 B

生存时间(TTL):占 8 位,IP 分组的保质期,经过一个路由器就 -1,变为 0 则丢弃

协议:占 8 位,数据部分的协议,即传输层使用的是什么协议

协议名

ICMP

IGMP

TCP

EGP

IGP

UDP

IPv6

ESP

OSPF

字段值

1

2

6

8

9

17

41

50

89

首部检验和:占 16 位,只检验数据报的首部,但不包含数据部分。每经过一个路由器,都会重新计算一下首部检验和。

源地址:占 32 位

目的地址:占 32 位

可选字段:占 0 ~ 40 位,用来支持排错、测量以及安全措施

填充:全 0,把首部长度补成 4B 的整数倍

1.3 IP 数据报分片

最大传输单元MTU:数据链路层帧可封装数据的上限,以太网的MTU是1500字节。

标识:占 16 位,同一数据报的分片使用同一标识

标志:占 3 位,只有两位有意义 x _ _

  • 中间位 DF(Don't Fragment)

    • DF = 1,禁止分片

    • DF = 0,允许分片

  • 最低位 MF(More Fragment)

    • MF = 1,后面还有分片

    • MF = 0,代表最后一片 / 没分片

片偏移:指出较长分组分片后,某片在原分组中的相对位置。(以 8B 为单位)

  • 除了最后一片,每个分片长度一定是 8B 的整数倍

2. IPv4 地址

IP 地址是唯一标识一个计算机的地址

2.1 IP 编址的历史阶段

  1. 分类的 IP 地址

  2. 子网的划分

  3. 构成超网(无分类编址方式)

2.2 分类的 IP 地址

IP 地址:全世界唯一的 32 为 / 4 字节 标识符,标识路由器主机的接口

IP 地址 ::= {<网络号>,<主机号>}

2.3 互联网中的 IP 地址

2.4 IP 地址的分类

2.5 特殊 IP 地址

2.6 私有 IP 地址

2.7 IP 地址的范围

对于 A 类地址,0.0.0.0 和 127.0.0.0 不能用作网络号

对于 B 类地址,128.0.0.0 不能作为网络号

对于 C 类地址,192.0.0.0 不能作为网络号

3. 网络地址转换(NAT)

对于私有IP地址是不能在网络上传输的,需要通过 NAT技术来实现私网IP和公网通信的功能。

网络地址转换 NAT(Network Address Translation):在专用网连接到因特网的路由器上安装 NAT 软件,安装了 NAT 软件的路由器交NAT路由器,它至少有一个有效的外部全球 IP地址

4. 子网划分 & 子网掩码

4.1 分类 IP 地址的弱点

  1. IP 地址空间的利用率有时很低

  2. 两级 IP 地址不够灵活

4.2 子网划分

子网划分就是把一部分用来表示主机号的位数来表示网络号,用子网掩码区分。

4.3 子网掩码

4.4 使用子网时分组的转发

路由表中存储的信息:

  1. 目的网络地址

  2. 目的网络子网掩码

  3. 下一跳网址

路由器转发分组的算法:

  1. 提取目的 IP地址

  2. 是否直接交付

  3. 特定主机交付

  4. 检测路由表中有无路径

  5. 默认路由 0.0.0.0

  6. 丢弃,报告转发分组出错(TTL 为 0)

5. 无分类编址 CIDR

  1. 消除了传统他的 A 类、B 类和 C 类地址以及划分子网的概念

    CIDR 记法:IP 地址后加上 /,然后写上网络前缀(可以是任意长度)的位数。e.g. 128.14.32.0/20

  2. 融合子网地址与子网掩码,方便子网划分

    CIDR 把网络前缀都相同的连续的 IP 地址组成一个 CIDR地址块

5.1 构成超网

将多个子网聚合成一个较大的子网,叫做构成超网,或路由聚合

方法:将网络前缀缩短(所有网络地址取交集)

5.2 最长前缀匹配

使用 CIDR时,查找路由表可能得到几个匹配结果(跟网络掩码按位相与),应选择具有最长网络前缀的路由。前缀越长,地址块越小,路由越具体。

Last updated