目录
一、网络层概述
二、网络层提供的两种服务
(一)面向连接的虚电路服务
(二)无连接的数据报服务
(三)虚电路服务与数据报服务的比较
三、IPv4地址及其应用
(一)IPv4地址概述
(二)分类编址的IPv4地址
1、A类地址
2、B类地址
3、C类地址
(三)划分子网的IPv4地址
(四)无分类编址的IPv4地址
(五)IPv4地址的应用规划
1、定长的子网掩码FLSM
2、边长的子网掩码VLSM
3、例题
四、IP数据包的发送和转发过程
五、静态路由配置及其可能产生的路由环路问题
(一)静态路由
(二)默认路由
(三)特定主机路由
(四)路由环路问题
1、静态路由配置错误导致的路由环路问题
2、聚合了不存在的网络导致的路由环路
3、网络故障导致的路由环路
一、网络层概述
网络层的主要任务是实现网络互连,进而实现数据包在各网络之间的传输
要实现网络层任务,需要解决以下主要问题:
- 网络层向运输层提供怎样的服务 (“可靠传输”还是“不可靠传输”)
- 网络层寻址问题
- 路由选择问题
因特网 (Internet)是目前全世界用户数量最多的互联网,它使用TCP/IP协议栈
由于TCP/IP协议栈的网络层使用网际协议IP,它是整个协议栈的核心协议,因此在TCP/IP协议栈中网络层常称为网际层
综上所述,我们通过学习TCP/IP协议栈的网际层来学习网络层的理论知识和实践技术。
二、网络层提供的两种服务
(一)面向连接的虚电路服务
可靠通信由网络来保证
必须建立网络层的连接——虚电路VC(Virtual Circuit)
通信双方沿着已建立的虚电路发送分组
目的主机的地址仅在连接建立阶段使用,之后每个分组的首部只需携带一条虚电路的编号(构成虚电路的每一段链路都有一个虚电路编号)。
这种通信方式如果再使用可靠传输的网络协议,就可使所发送的分组最终正确到达接收方(无差错按序到达、不丢失、不重复)。
通信结束后,需要释放之前所建立的虚电路。
很多广域分组交换网都使用面向连接的虚电路服务例如,曾经的X.25和逐渐过时的帧中继FR、异步传输模式ATM等。
然而,因特网的先驱者并没有采用上面这种服务,而是采取了无连接的数据报服务。
(二)无连接的数据报服务
可靠通信应当由用户主机来保证
不需要建立网络层连接
每个分组可走不同的路径
每个分组的首部必须携带目的主机的完整地址
这种通信方式所传送的分组可能误码、丢失、重复和失序
由于网络本身不提供端到端的可靠传输服务,这就使网络中的路由器可以做得比较简单,而且价格低廉(与电信网的交换机相比较)
因特网采用了这种设计思想,也就是将复杂的网络处理功能置于因特网的边缘 (用户主机和其内部的运输层),而将相对简单的尽最大努力的分组交付功能置于因特网核心。
(三)虚电路服务与数据报服务的比较
由于TCP/IP体系结构的因特网的网际层提供的是简单灵活、无连接的、尽最大努力交付的数据报服务,因此本章主要围绕网际层如何传送IP数据报这个主题进行讨论。
三、IPv4地址及其应用
(一)IPv4地址概述
在TCP/IP体系中,IP地址是一个最基本的概念,我们必须把它弄清楚。
IPv4地址就是给因特网(lnternet) 上的每一台主机 (或路由器)的每一个接口分配一个在全世界范围内是唯一的32比特的标识符
IP地址由因特网名字和数字分配机构ICANN(Intemet Corporation for Assigned Names and Numbers)进行分配
- 我国用户可向亚太网络信息中心APNIC(Asia Pacific Network lnformation Center)申请IP地址,需要缴费
- 2011年2月3日,互联网号码分配管理局IANA (由ICANN行使职能)宣布,IPv4地址已经分配完毕
- 我国在2014至2015年也逐步停止了向新用户和应用分配IPv4地址。同时全面开展商用部署IPv6。
IPv4地址的编址方法经历了如下三个历史阶段
32比特的IPv4地址不方便阅读、记录以及输入等,因此IPv4地址采用点分十进制表示方法以方便用户使用。
8位无符号二进制整数转十进制数的转换方法
十进制正整数转8位无符号二进制数的转换方法
(二)分类编址的IPv4地址
1、A类地址
2、B类地址
注意:有些教材中指出128.0是保留网络号,B类第一个可指派的网络号为128.1。
但根据2002年9月发表的RFC 3330文档,128.0网络号已经可以分配了。有兴趣的同学可以自行查询以128.0开头的IP地址,看看它们属于哪些国家
3、C类地址
注意:有些教材中指出192.0.0是保留网络号,C类第一个可指派的网络号为192.0.1。
但根据2002年9月发表的RFC 3330文档,192.0.0网络号已经可以分配了。只不过目前还没有分配出去。
总结:
(三)划分子网的IPv4地址
为什么会出现划分子网?
举例:假设子网1本来是一个公司的所有设备,申请的是B类子网,但是只使用了子网的一部分IP地址,当后续公司扩展,新建了其他子网,此时如果继续申请B类子网, 不仅会浪费原有B类子网的IP地址,还需要等待时间和花费更多的费用。所以就出现了子网划分。在主机号中取一部分的比特当成子网号
如果未在图中标记子网号部分,那么我们和计算机又如何知道分类地址中主机号有多少比特被
用作子网号了呢?
32比特的子网掩码可以表明分类IP地址的主机号部分被借用了几个比特作为子网号
- 子网掩码使用连续的比特1来对应网络号和子网号
- 子网掩码使用连续的比特0来对应主机号
- 将划分子网的IPv4地址与其相应的子网掩码进行逻辑与运算就可得到IPv4地址所在子网的网络地址
【举例】已知某个网络的地址为218.75.230.0,使用子网掩码255.255.255.128对其进行子网划分,请给出划分细节
【解析】
默认的子网掩码是指在未划分子网的情况下使用的子网掩码
(四)无分类编址的IPv4地址
划分子网在一定程度上缓解了因特网在发展中遇到的困难,但是数量巨大的C类网因为其地址空间太小并没有得到充分使用,而因特网的IP地址仍在加速消耗,整个IPv4地址空间面临全部耗尽的威胁。
为此,因特网工程任务组IETF又提出了采用无分类编址的方法来解决IP地址紧张的问题同时还专门成立IPv6工作组负责研究新版本IP以彻底解决IP地址耗尽问题。
1993年,IETF发布了无分类域间路由选择CIDR(Classless Inter-Domain Routing)的RFC文档:RFC1517~1519和1520。
- CIDR消除了传统的A类、B类和C类地址,以及划分子网的概念
- CIDR可以更加有效地分配IPv4的地址空间,并且可以在新的IPv6使用之前允许因特网的规模继续增长。
CIDR使用“斜线记法”,或称CIDR记法。即在IPv4地址后面加上斜线“/”,在斜线后面写上网络前缀所占的比特数量
CIDR实际上是将网络前缀都相同的连续的IP地址组成一个“CIDR地址块“
我们只要知道CIDR地址块中的任何一个地址,就可以知道该地址块的全部细节
- 地址块的最小地址
- 地址块的最大地址
- 地址块中的地址数量
- 地址块聚合某类网络(A类、B类或C类)的数量地址掩码(也可继续称为子网掩码)
【练习】请给出CIDR地址块128.14.35.7/20的全部细节(最小地址,最大地址,地址数量,聚合
C类网数量,地址掩码)。
【解析】
路由聚合
(五)IPv4地址的应用规划
1、定长的子网掩码FLSM
- 使用同一个子网掩码来划分子网
- 子网划分方式不灵活: 只能划分出2”个子网(n是从主机号部分借用的用来作为子网号的比特数量)
- 每个子网所分配的IP地址数量相同容易造成IP地址浪费
2、边长的子网掩码VLSM
- 使用不同的子网掩码来划分子网
- 子网划分方式灵活: 可以按需分配
- 每个子网所分配的IP地址数量可以不同,尽可能减少对IP地址的浪费
3、例题
【举例】假设申请到的C类网为218.75.230.0,请使用定长的子网掩码给下图所示的小型互联网中的各设备分配IP地址
我们需要将C类网络218.75.230.0划分成5个子网,每个子网上可分配的IP地址数量不得少于各自的需求
因为是5个子网,所以需要3位比特位作为子网号
划分出来的8个子网如下,从其中挑选5个分配即可:
【举例】假设申请到的地址块为218.75.230.0/24,请使用变长的子网掩码给下图所示的小型互联网中的各设备分配IP地址
首先分析至少需要多少位主机位才能满足需要
我们需要从地址块218.75.230.0/24中取出5个地址块(1个“/27”地址块,3个“/28”地址块,1个“/30”地址块),按需分配给5个网络
四、IP数据包的发送和转发过程
IP数据报的发送和转发过程包含了以下两个部分:
- 主机发送IP数据包
- 路由器转发IP数据包
以下是两个网络,由路由器R相连,不同网络间的主机相互发送数据属于间接交付,同个网络内的属于直接交付。
源主机是如何知道目的主机是否与自己在同一网络中?
将目标主机的IP地址与自己的子网掩码相与,结果不为自己的网络地址则属于不同网络。如下图,将F地址与C的子网掩码相与,结果与C的网络地址不同,就知道了F与自己不在同一网络内。
主机C如何知道路由器R的存在?S1网络内的主机的默认网关为R路由器端口0的IP地址,主机发送跨网络的数据报会发送到默认网关也就是路由器R。路由器R接收到数据报后会如何进行转发?
- 检查IP数据报首部是否出错:若出错,则直接丢弃该IP数据报并通告源主机;若没有出错,则进行转发
- 根据IP数据报的目的地址在路由表中查找匹配的条目:若找到匹配的条目,则转发给条目中指示的下一跳若找不到,则丢弃该IP数据报并通告源主机
对于广播数据报,路由器不转发,也就是路由器即隔离冲突域,也隔离广播域
五、静态路由配置及其可能产生的路由环路问题
静态路由配置是指用户或网络管理员使用路由器的相关命令给路由器人工配置路由表
- 这种人工配置方式简单、开销小。但不能及时适应网络状态(流量、拓扑等)的变化
- 一般只在小规模网络中采用
使用静态路由配置可能出现以下导致产生路由环路的错误
- 配置错误
- 聚合了不存在的网络
- 网络故障
(一)静态路由
路由器R1同个自己的接口0所配置的IP地址和地址掩码,可以自动得出接口0所在的网络,,由于接口0与该网络直连,则下一跳不是路由器地址,而是通过接口0转发IP数据报给该网络中的某个主机,这属于直接交付。这条自动得出的路由条目的类型属于直连路由。R1的1号端口和R2的两个端口也同理。但如果R1要发送IP数据报给网络192.168.2.0/24,此时可以使用路由器的相关配置命令,给R1添加一条到达该目的网络的路由条目。该路由条目是我们人工配置的静态路由,目的网络为目的网络的地址,下一跳则是R2的0号端口
(二)默认路由
如果是发送IP数据报给R2连接的因特网, 由于因特网中包含了众多的网络,如果我们给R1的添加针对这些网络的每一条路由条目,则会给人工配置带来巨大的工作量,并且使R1的路由表变得非常大,降低了查表转发的速度。实际上,对有相同下一跳的不同目的网络的路由条目,可以用一条默认路由条目来替代。默认路由条目中的目的网络地址为0.0.0.0,地址掩码也为0.0.0.0,其CIDR形式为0.0.0.0/0。在本例中,默认路由的下一跳地址为R2的0号端口,由于是人工配置,因此也为静态路由,当没有路由表项匹配目的地址时,自动发送至默认路由
(三)特定主机路由
特定主机路由一般用于网络管理人员对网络的管理和测试,另外,在需要考虑某种安全问题时,也可采用特定主机路由。特定主机路由的目的网络为特定主机的IP地址,地址掩码为255.255.255.255,其CIDR形式为特定主机IP地址/32,在本例中,特定主机路由的下一跳地址为R2的0号端口,由于是人工配置,因此也为静态路由。可以看到特定主机路由的网络前缀最长,路由最具体,而默认路由前缀最短,路由最模糊,当路由器查表转发IP数据报时,有多条路径可选的情况下,选择前缀最长的路由条目进行转发。
(四)路由环路问题
1、静态路由配置错误导致的路由环路问题
例子基本情况如下:
当R2要转发数据报到网络192.168.1.0/24,下一跳转发的应该是R1的接口0,此时如果错误的配置R2的静态路由表项下一跳地址为R3的端口0,就会出现路由环路
为了防止IP数据报在路由环路中永久兜圈,在IP数据报首部设有生存时间TTL字段,IP数据报进入路由器后,TTL字段的值减1。若TTL的值不等于0,则被路由器转发,否则被丢弃。
2、聚合了不存在的网络导致的路由环路
共同的前缀聚合出一个路由。
当R2想发送到网络192.168.3.0/24,此时R1所连接的网络中不存在改网络,但是在R2的路由表中却有对应的路由条目,所以会转发到R1的1号端口,而R1找不到对应的路由条目,又会转发到默认路由,即R2的0号端口。
可以在R2的路由表中配置聚合网络中不存在的黑洞路由,本质上是路由器内部的一个虚拟接口,让IP数据报有来无回,相当于丢弃该数据报、
3、网络故障导致的路由环路
R1连接的192.168.1.0/24线路发生故障, 会删除路由表相应的路由条目,但是R2不知道,所以发送到该网络的数据报会进入R1的1号端口,然后又走R1的默认路由,发生路由环路。
可以配置黑洞路由,当线路故障,删除相应的路由条目时,添加对应网络的黑洞路由。当网络线路恢复正常,会使黑洞路由失效,添加正常的路由条目。当线路故障,会自动删除路由条目,恢复黑洞路由。