(三)ipv4(⭐)
1. ipv4 分组

1.1. 数据报组成
- 首部 + 数据:最前面固定 20 字节 (160 bit) + 后面长度可变的可选字段。考试一般只考 20 字节固定部分;
1.2. 固定 20 字节部分
版本:固定值为 4,表示 ipv4;
首部长度:4 bit,单位为四字节(ℹ️)。例如,首部 20 Byte,则此处值为 5;
区分服务:未使用,填充全 0;
总长度:16 bit,可得出数据报总长度最大为 65535 字节;
标识、标志、片偏移:用于数据报分片,用于进入数据链路层(MTU 较短)传输;
标识:2 字节 8 bit,用于标识分片属于哪一个数据报。标识段在传输过程中不变;
标志:占 3 bit,实际只用了 2 bit,分别为 MF 和 DF 位;
MF (More Fragment):表示此分片是否为顺序最后一个分片,0 表示最后一个,1 表示还有;
DF (Dont Fragment):表示此数据报是否允许被分片,0 允许,1 不允许;
片偏移:13 bit,表示分片的数据部分在原数据报中的偏移量,用于重组数据报,单位为八字节(ℹ️);
- 重组功能由接收端完成,路由器不承担重组功能;
分片 - 实例:数据报总长度 3820 字节,首部固定 20 字节,分片长度不超过 1420 字节;
分析:数据部分 3800 字节,分为 3 个片,每片的数据部分分别为 1400,1400 和 1000 字节;
三个分片的片偏移分别为 0,175 和 350,MF 位分别为 1,1 和 0;
生存时间 (TTL, Time To Live):8 bit,表示最大能被路由器转发的次数(跳数),每经过一次路由器减 1,减到 0 时丢弃;
协议:8 bit,指示数据部分采用的协议(TCP,UDP,ICMP 等)
首部检验和(Checksum):了解
源地址和目的地址:都为 4 个字节,ipv4 地址表示法;
1.3. 可变部分
- 可选字段,长度 1 到 40 字节不等,用于测量,安全,排错等其他功能;
2. ipv4 地址和 NAT
IP地址:给每个连接在因特网上的主机(或路由器)分配一个在全世界范围内唯一的 32 位标识符;
由因特网名字与号码指派公司 ICANN(Internet Corporation for Assigned Names and Numbers)进行分配;
2.1. ipv4 编址方式
分类编址:最基本的编址方法;
子网划分:分类编址的改进;
无分类编址 CIDR:现代广泛应用的 ipv4 编址方法;
2.2. ipv4 分类编址
每一类地址由两个固定长度的字段组成;
网络号 net-id,它标志主机(或路由器)所连接到的网络;
主机号 host-id,它标志该主机(或路由器)自身;
传统分类编址的网络号和主机号

主机地址:host-id 为全 0 或全 1 的地址为网络的保留地址,不能分配主机;
全 0:表示此网络的网络地址;
全 1:表示此网络的广播地址;
推出:可分配主机数为
, 为 host-id 长度;
A 类:net-id 取值 0 ~ 127,0 和 127 为保留地址,不能分配网络;
0:为分类编址的保留地址。在 CIDR 和子网划分情况下可用;
127:通用回环地址;
B 类:net-id 首字节取值 128 ~ 191。可分配网络数
; C 类:net-id 首字节取值 192 ~ 223。可分配网络数
; D 类:net-id 首字节取值 224 ~ 239,组播地址,不分配主机;
E 类:net-id 首字节取值 240 ~ 255;
特殊地址总结图

第 3 和 第 4 两种广播地址的区别
全 1 广播地址只能在发送者所在网络内进行广播,不经过任何路由转发;
net-id + 全 1 广播地址可以被跨网域路由到目标网络,再进行广播;
第一项 0.0.0.0 用途:本主机 ip 地址未知,需要 DHCP 获取时,发送的报文就以 0.0.0.0 作为源地址;
分类编址的一些重要特点
分等级:ip 地址管理机构只分配网络号,主机号为申请单位自行分配,方便管理 ip 地址;
路由器转发时,只考虑目的主机的网络号,而不考虑主机号,简化路由表表项;
ip 地址标识的是主机和某条传输链路的接口关系,而不是主机,即:
一台主机同时连接到两个网络时,具有两个不同的 ip 地址,若两个网络不同,则 net-id 也会不同;
一台路由器至少应该有两个 ip 地址;
用转发器、集线器或网桥连接的若干个局域网属于同一个网络,因此其 net-id 相同;
分配到相同 net-id 的网络,都是平等的,与其覆盖范围无关;
实例分析

1)由首字节 222 知,网络为 C 类网络,前三个字节为网络号,最后一个是主机号;
2)以 222.1.1.x 为例,已分配 4 台主机(注意路由器),还可分配 250 台主机,广播地址 222.1.1.255;
3)右侧 2 台主机和下方 2 台主机通过 B 连接,因此逻辑上它们属于同一网络;
4)三个路由器连接到网络主机的端口地址(222.1.1.4,222.1.2.5,222.1.3.2)为网关地址;
2.3. 子网划分
主机号拿出若干位作为子网号,ip 地址变为:网络号 + 子网号 + 主机号;
实例解析

划分前:B 类网络 145.13.0.0,所有分组均到达路由器
,网络最多可支持 65535 台主机,由 进行直接交付,接口压力较大; 划分后:将 145.13.3.0,145.13.7.0 和 145.13.21.0 作为三个子网,即第三个字节作为子网号;
划分后,三个子网各自拥有一个路由器接口,每个子网最多划分 254 台主机,接口压力较小;
划分后,路由器
和子网路由器进行交付,最多划分 256 个子网, 接口压力也减小;
子网掩码:用于路由器从 ip 数据报的目的地址提取子网号;
构成:32 位只包含 0 和 1 的二进制码,网络号和子网号所处的位为 1,主机号对应的位为 0;
用途:按位与运算,ip 地址 & 子网掩码 = 子网号;
默认子网掩码:即只有网络号位为 1 的掩码
A 类:255.0.0.0;
B 类:255.255.0.0;
C 类:255.255.255.0;
路由器在和相邻路由器交换路由信息时,必须把自已所在网络(或子网)的子网掩码告诉相邻路由器;
路由器的路由表中的每一个项目,除了要给出目的网络地址外,还必须同时给出该网络的子网掩码;
固定长度子网和变长子网
固定长度:各子网的子网号位数固定,则子网掩码也相同;
变长子网:不同子网的子网号位数可以不同;
划分子网的路由转发过程
1)提取:从分组提取 ip 地址
; 2)直接交付:用本路由器所在各网络的子网掩码和
按位与,若有子网匹配,则将分组直接交付。否则执行间接交付; 3)间接交付 - 主机:检索路由表中是否有
的主机路由,若有,则转发给其指定的下一跳,否则执行 4; 4)间接交付 - 子网:路由表中每一行的子网掩码和
按位与,若有匹配,则转发给该行指定的下一跳,否则执行 5; 5)默认路由:检查是否有默认路由,转发给其指定的下一跳;
6)若无默认路由,报告转发错误;
2.4. CIDR(无分类域间路由,Classless Inter-Domain Routing)
主要特点
消除了传统的 ABC 类地址以及划分子网的概念,可以更加有效地分配 ipv4 的地址空间;
CIDR 使用各种长度的 网络前缀 (network-prefix) 来代替分类地址中的网络号和子网号;
CIDR 回归两级编址;
无分类两级编址
记法:ip 地址 = 网络前缀 + 主机号;
斜线记法(CIDR记法):ip 地址 / 前缀位数。前缀位数 = 三级编址中子网掩码前面 1 的个数;
- 例:B 类地址 166.66.66.66/19,即子网掩码 255.255.224.0,子网号 19 - 16 = 3 位;
CIDR 地址块:前缀相同的连续 ip 地址;
例:128.16.32.0/20,主机位 12 位,即该地址块共有
个,可分配主机的 个; 128.16.32.0/20 地址块的最小地址:128.16.32.0,最大地址:128.16.47.255。注意用二进制来算;
路由聚集/聚合(Route Aggregation)
指路由表用一个 CIDR 地址块就可以表示很多个传统分类地址的路由;
路由聚合也成为 超网(Supernetting)
例:某 ISP(互联网服务提供商)的一个网段为 206.0.128.0 到 206.0.191.255;
传统分类:C 类地址,前 18 位固定,有
个子网,因此与之通信的路由器需要存储 64 个路由表项来找到该 ISP; 路由聚合:使用聚合地址 206.0.128.0/18,只需一个表项就能找到该 ISP;
简写形式
1)省略点分十进制中低位连续的 0,如 10.0.0.0/10 简写为 10/10;
2)星号简写,如 0000 1010 00*,星号前的为前缀,星号表示任意主机号;
最长前缀匹配(Longest-prefix Matching):路由表中有多个前缀与 ip 地址匹配时,选择最长的前缀跳转;
- 前缀越长,地址块越小,路由信息就越精确和具体;
2.5. NAT(网络地址转换)
本地和全球地址
本地地址:机构内部使用,无需向管理机构申请;
全球地址:全球唯一,必须向管理机构申请;
问题:本地地址可能和全球地址重合,导致二义性;
解决方法:RFC 1918 规定了一些专用地址,只用作本地地址。若目的地是专用地址,互联网中的路由器都不予转发;
三个专用 ip 地址块
1)10.0.0.0 到 10.255.255.255:A 类,或记为 10.0.0.0/8,又称为 24 位块;
2)172.16.0.0 到 172.31.255.255:B 类,或记为 172.16.0.0/12,又称为 20 位块(ℹ️);
3)192.168.0.0 到 192.168.255.255:C 类,或记为 192.168.0.0/16,又称为 16 位块;
复习 - 斜杠写法:将三个专用 ip 地址块看作三个子网,斜杠后的数字表示 ip 地址中,网络号所占的 bit 数;也等于子网掩码前面连续 1 的个数;
- 如:B 类,网络号占 12 位,首字节 + 第二个字节的前面 4 位(固定为 0001);
网络地址转换(NAT,Network Address Transition)
NAT 软件安装在专用网与互联网相连接的路由器上;
NAT 路由器至少具有一个有效的全球地址;
使用本地地址的主机必须经由 NAT 路由器才能与互联网进行通信;
NAT 路由器工作原理

注意:专用网内的主机可以充当服务器,响应专用网外的请求,但是需要改进 NAT 协议;
NAPT(网络地址与端口号转换):用端口号区分发往不同主机的请求,让多个不同本地地址的主机在同一时刻,用同一个全球 ip 地址和互联网通信;

- 端口号是加在全球 ip 地址上,转换到不同的网内 ip 地址;
3. ARP,DHCP 和 ICMP 协议
3.1. 概念
ARP(地址解析协议):将 ip 地址解析到链路层使用的 MAC 地址(物理地址);
DHCP(动态主机配置协议):指示主机如何获取 ip 地址、掩码、网关地址和 DNS(上网四件套)
ICMP(网络控制报文协议):网络连通性和差错控制;
3.2. 层次结构

- ℹ️:DHCP 属于应用层协议;
3.3. ARP 协议
作用:ip 地址 → MAC 地址(物理地址)。MAC → ip 的为 RARP 协议;
ARP 高速缓存(ARP Cache):每个主机上都设有一个 ARP 高速缓存,存放局域网上所有主机和路由器的 ip 地址到 MAC 地址映射表;
局域网的 ip 数据报发送
局域网的主机 A 欲向 B 发送数据;
1)先查询 ARP 高速缓存,若有 B 的 ip 地址,则直接得到 B 的 MAC 地址,写入 MAC 帧,通过局域网发送;
2)若无,广播发送 ARP 请求分组

ARP请求:广播,目的 ip 地址和目的 MAC 地址是全 1;
ARP 响应:单播,定向发送;
跨局域网的数据报发送:主机 A 先发送给网关地址的路由器,再由路由器转发;
ARP 解析是自动进行的;
ARP 典型的四种应用情况
主机 → 本局域网上的另一主机;
主机 → 其他网域的另一主机;
路由器 → 局域网上的另一主机;
路由器 → 其他网域的另一主机:也是先转发给局域网的另一路由器,再由其进行转发;
- 其他网域指的是不和该路由器直接相连的网域;
3.4. DHCP 协议
允许一台计算机加入新网络时自动获取 ip 地址,提供即插即用联网机制(plug-and-play networking);
获取的信息:1)ip 地址,2)子网掩码,3)默认路由器的 ip 地址,4)域名服务器的 ip 地址(DNS);
DHCP 工作过程

0)DHCP 服务器被动打开,监听客户端的报文;
1)需要 ip 地址的主机广播发送 DHCP 发现报文(DHCP DISCOVER),该主机成为 DHCP 客户;
- 本地网络上所有主机均收到该报文,但只有 DHCP 服务器响应报文;
2)DHCP 服务器从数据库中查找该计算机配置信息,若找到,则返回配置信息,否则从地址池中分配一个。服务器返回 DHCP 提供报文(DHCP OFFER);
租用期:DHCP 分配的 ip 地址是临时的,客户只能在有限的时间内使用该地址,称为租用期;
- 租用期由服务器决定,客户也可在 DISCOVER 报文中提出对租用期的要求;
3)客户收到 OFFER 报文后,发送 DHCPREQUEST 报文,表示请求确认 DHCP 分配;
4)服务器发送 DHCPACK 报文,最终确认 DHCP 分配;
5)租用期到时,客户发送 DHCPREQUEST 报文,确认 DHCP 分配情况(是否允许继续使用);
6)服务器返回 DHCPNACK 报文,表示不允许继续使用,则客户端重新进入 DISCOVER。返回 DHCPACK 表示允许继续使用;
ℹ️:上述报文全为广播形式发送,基于 UDP 协议传输;
3.5. ICMP 协议
ICMP 协议允许主机进行差错和异常情况的报告,提高 ip 数据报交付的成功率;
ICMP 属于 IP 层协议,ICMP 报文是作为 ip 数据报的数据部分;
ICMP 报文格式(了解)

5 种差错报文:终点不可达、源点抑制(路由器拥堵导致报文丢弃)、超时(TTL)、参数错误(首部字段值)、改变路由(路由器指示发送端修改路由);
2 种询问报文:1)回送请求和回答报文(ping),2)时间戳请求和回答报文(32 位数,从 1900-01-01 开始的时间戳)
4. ipv6
4.1. 主要特点
- 新的报文结构、巨大的地址空间、新的地址分配方式、更好的 QOS 支持、内置安全性、新的邻居发现协议、可扩展性和移动性;
4.2. 新的报文结构


首部长度固定为 40 字节,称为基本首部(basic header),字段减少为 8 个。取消不必要的功能(如检验和),加速路由器处理速度。
基本首部后可以跟 0 个或多个扩展首部,扩展首部 + 数据部分 = 报文的有效载荷(净载荷),报文长度最大 64 KB;
4.3. ipv6 地址
ipv6 的目的地址可以是以下三种基本类型
单播(unicast):传统的点对点通信;
多播(multicast):一点对多点通信;
任播(anycast):新增类型,任播的目的是一组主机,但只需交付其中一个,通常选择最近的;
结点和接口
实现 ipv6 的主机和路由器称为结点,ipv6 地址是分配给结点上面的接口;
一个结点可以有多个单播地址,一个单播地址可以唯一表示一个结点;
ipv6 地址记法:冒号十六进制
每 16 bit 用一个四位十六进制数表示,省略前导 0。共 8 个数,各数之间冒号分隔,如:
2403:d400:1000:12:f49a:b3ed:24c8:a877;一连串连续的 0 可以用一对冒号(::)取代:如
fe80::56c6:ffff:fe7b:5802。零压缩只能使用一次,否则会有二义性;CIDR 斜线表示法,如
12AB:0000:0000:CD30:0000:0000:0000:0000/60;特殊地址:全 0,写为
::,目前未分配。环回地址:::1。映射 ipv4 的地址:80 位全 0 + 16 位全 1 + 32位 ipv4 地址,即
0000 0000 0000 0000 0000 FFFF (ipv4);