网络层:CIDR(构成超网)、ICMP(网际控制报文协议)
在介绍CIDR(Classless Inter-Domain Routing)之前,回顾IP地址的编制方法的三个历史阶段:
(1)分类的IP地址;
(2)子网的划分(子网掩码)
(3)构成超网(CIDR)
思考:为什么已有子网划分还需要无分类编制(CIDR)?
(1)子网划分仍存在一部分IP地址浪费(网络号位数相同的子网的主机规模相等)
(2)主干网上路由表中项目数急剧增加
如果照此发展,IP地址很快就会分配完
在变长子网掩码VLSM(Variable Length Subnet Mask)基础上提出无分类编制方法----正式名字:无分类域间路由选择器(Classless Inter-Domain Routing)
CIDR主要特点:
- 消除了传统的A类、B类和C类地址以及划分子网的概念
- 使用各种长度的网络前缀(network-prefix)****来代替分类地址中的网络号和子网号
- IP地址从三级编址(使用子网掩码)又回到了两级编址;
- 无分类的两级编址: IP地址 ::={ <网络前缀>,<主机号> }
- CIDR地址块:网络前缀都相同的连续的IP地址
CIDR记法:
(1) “斜线记法” 例:128.14.47.25/15----斜线后面数值表示网络前缀的位数
(2) 把点分十进制中低位连续的0省略 例: 10.0.0.0/10简写为10/10
(3) 在网络前缀的后面加一个星号* 如: 0000101000* ----星号表示IP地址中的主机号,可以是任意值
CIDR地址块:网络前缀都相同的连续的IP地址
我们只要知道CIDR地址块中任意一个地址,就可以知道地址块的起始地址(即最小地址)、最大地址和地址块中的地址数。
例:
已知地址块中某一地址128.14.35.7/20(10000000 00001110 00100011 00000111)
那么该地址块包含2^12个地址数
最小地址:128.14.32.0(10000000 00001110 00100000 00000000)
最大地址:128.14.47.255(10000000 00001110 00101111 11111111)
注:
一般不使用主机号全0和全1的地址,但不用不代表不存在,故这里加上这两个地址
通常用地址块中最小地址和网络前缀的位数指明这个地址块 128.14.32.0/20,也简称为“/20地址块”
地址掩码:由一组1和一组0组成,1的个数为网络前缀的个数
如128.14.32.0/20 掩码为:11111111 11111111 11110000 00000000
斜线记法中,斜线后面的数字为地址掩码中1的个数
路由聚合(构成超网):一个CIDR地址块中有很多地址,所以在路由表中就利用CIDR地址块来查找目的地址,使得路由表中的一个项目可以表示原来传统分类的很多个路由
如:/13地址块相当于8个B类或2^11个C类地址
只要网络前缀少于24位(C类网络号位数)就可构成超网———网络前缀缩短可构成超网
最长前缀匹配(最长匹配/最佳匹配):
路由表每一条项目:“网络前缀” 和 “下一跳”
由于在查路由表时可能会得到不止一个匹配结果,所以从匹配结果中选择具有最长网络前缀的路由
例:
收到的分组IP地址为D=206.0.71.130
路由表:
网络前缀 | 下一跳 |
---|---|
206.0.68.0/22 | 1 |
206.0.71.128/25 | 2 |
查找路由表中第一个项目:掩码M=11111111 11111111 11111100 00000000
D AND M 得206.0.68.0/22 匹配成功
查找路由表中第二个项目:掩码M=11111111 11111111 11111111 10000000
同理D AND M 得206.0.71.128/25 匹配成功
由最长前缀匹配 下一跳为2
固定子网分配IP地址与CIDR地址块分配IP地址的区别:前者分配的IP地址规模相同,后者可根据实际情况分配规模不等的IP地址
ICMP(网际控制报文协议)
IP层(网络层)的协议包括:
(1)网际协议IP
(2)地址解析协议ARP(Address Resolution Protocol)
(3)网际控制报文协议ICMP(Internet Control Message Protocol)
(4)网际组管理协议IGMP(Internet Group Management Protocol)
网络层向上只提供简单灵活、无连接的、尽最大努力交付的数据报服务(不可靠传输)
ICMP允许主机或路由器报告差错情况和提供有关异常情况的报告
注意:虽然ICMP报文作为IP层数据报的数据,但ICMP仍然是IP层的协议
ICMP报文的种类
(1)ICMP差错报告报文
(2)ICMP询问报文
ICMP差错报告报文有五种:
(1)终点不可达
(2)源点抑制
(3)时间超过
(4)参数问题
(5)改变路由(重定向)
不应发送ICMP差错报告报文情况:
(1)对ICMP差错报告报文,不再发送ICMP差错报告报文
(2)对第一个分片的数据报片的所有后续数据报片,都不发送ICMP差错报告报文
(3)对具有多播地址的数据报,都不发送ICMP差错报告报文
(4)对具有特殊地址(如127.0.0.0或0.0.0.0)的数据报,不发送ICMP差错报告报文
ICMP询问报文有两种:
(1)回送请求和回答
(2)时间戳请求和回答
ICMP的应用举例:
(1)分组网间探测PING (Packet InterNet Groper),用来测试两台主机之间的连通性
PING使用了ICMP回送请求与回送回答报文
PING是应用层直接使用网络层ICMP的一个例子,没有通过运输层的TCP或UDP
(2)traceroute/tracert(UNIX操作系统中为traceroute,Windows操作系统中是tracert),它用来跟踪一个分组从源点到终点的路径
利用IP数据报中TTL字段(跳数)和ICMP时间超过差错报文实现
如果这些内容对大家有用的话,希望大家点个赞咯