04-网络层
04-网络层
4.1 网络层概述
网络层的主要任务是实现网络互联,进而实现数据包在各网络之间的传输
要实现网络层任务,需要解决以下主要问题:
网络层向运输层提供怎样的服务(可靠传输还是不可靠传输)
网络层寻址问题
路由选择问题
因特网(Internet)是目前全世界用户数量醉倒的互联网,它使用TCP/IP协议栈
由于TCP/IP协议栈的网络层使用网际协议IP,它是整个协议栈的核心协议,因此子啊TCP/IP协议栈中网络层常被称为网际层
综上所述,我们通过学习TCP/IP协议栈的网际层来学习网络层的理论知识和实践技术
4.2 网络层提供的两种服务
虚电路服务与数据报服务的比较
对比方面 | 虚电路服务 | 数据报服务 |
---|---|---|
思路 | 可靠通信应当由网络来保证 | 可靠通信应当由用户主机来保证 |
连接的建立 | 必须建立网络层连接 | 不需要建立网络层连接 |
终点地址 | 仅在连接建立阶段使用,每个分组使用短的虚电路号 | 每个分组都有重点的完整地址 |
分组的转发 | 属于同一条虚电路的分组均按照同一路由进行转发 | 每个分组可走不通的路由 |
当节点出故障时 | 所有通过出故障的节点的虚电路均不能工作 | 出故障的节点可能会丢失分组,一些路由可能会发生变化 |
分组的顺序 | 总是按发送顺序到达终点 | 到达终点时不一定按照发送顺序 |
服务质量保证 | 可以将通信资源提前分配给每一个虚电路,容易实现 | 很难实现 |
4.3
4.3.1 IPv4地址概述
-
在TCP/IP体系中,IP地址是一个最基本的概念,我们必须把它弄清楚。
-
IPv4地址就是给因特网(Internet)上的每一台主机(或路由器)的每一个接口分配一个在全世界范围内是唯一的32比特的标识符。
-
IP地址由因特网名字和数字分配机构ICANN(Internet Corporation for Assigned Names and Numbers)进行分配。
我国用户可向亚太网络信息中心APNIC(Asia Pacific Network Information Center)申请IP地址,需要缴费
2011年2月3日,互联网好吗分配管理户IANA(由ICANN行驶职能)宣布,IPv4地址已经分配完毕
我国在2014至2015年也逐步停止了向新用户和应用分配IPv4地址。同时全面开展商用部署IPv6 -
IPv4地址的编址方法经历了如下三个历史阶段
1981分类编址->1985划分子网->1993无分类编址 -
32比特的IPv4地址不方便阅读、记录以及输入等,因此IPv4地址采用点分十进制表示方法以方便用户使用
4.3.2 分类编址的IPv4地址
A类地址 以0开头 8位网络号 24位主机号
B类地址 以10开头 16位网络号 24位主机号
C类地址 以110开头 24位网络号 24位主机号
D类地址 以1110开头 多播地址
E类地址 以1111开头 保留为今后使用
注意事项:
只有A类、B类和C类地址可分配给网络中的主机或路由器的各接口
主机号为全0的地址是网络地址,不能分配给主机或路由器的各接口
主机号为全1的接口是广播地址,不能分配给主机或路由器的各接口
网络类别 | 第一个可指派的网络号 | 最后一个可指派的网络号 | 最大可指派的网络数量 | 每个网络中的最大主机数量 | 不能指派的网络号 | 占总地址空间 |
---|---|---|---|---|---|---|
A | 1 | 126 | 126 | 2^24-2=16777214 | 0,127 | 1/2 |
B | 128.0 | 191.255 | 2^(16-2)=16384 | 2^16-2=65534 | 无 | 1/4 |
C | 192.0.0 | 223.255.255 | 2^(24-3)=2097152 | 2^8-2=254 | 无 | 1/8 |
网络类别 | 作用 | 第一个地址 | 最后一个地址 | 地址数量 | 占总地址空间 |
---|---|---|---|---|---|
D | 多播地址 | 224.0.0.0 | 239.255.255.255 | 2^28=268435456 | 1/16 |
E | 保留为今后使用 | 224.0.0.0 | 255.255.255.255 | 2^28=268435456 | 1/16 |
一般不使用的特殊IP地址
网络号 | 主机号 | 作为源地址 | 作为目的地址 | 代表的意思 |
---|---|---|---|---|
0 | 0 | 可以 | 不可以 | 在本网络上的本主机(DHCP协议) |
0 | host-id | 可以 | 不可 | 在本网络上的某台主机host-id |
全1 | 全1 | 不可 | 可以 | 只在本网络上进行广播(各路由器均不转发) |
net-id | 全1 | 不可 | 可以 | 对net-id上的多有主机进行广播 |
127 | 非全0或全1 | 可以 | 可以 | 用于本地软件环回测试 |
4.3.3 划分子网的IPv4地址
-
为新增网络申请新的网络号会带来以下弊端
需要等待时间和花费更多的费用
会增加其他路由器中路由表记录的数量
浪费原有网络号中剩余的大量IP地址 -
可以从主机号部分借用一部分比特作为子网号
-
32比特的子网掩码可以表明分类IP地址的主机号部分被借用了几个比特作为子网号
子网掩码使用连续的比特1来对应网络号和子网号
子网掩码使用连续的比特0来对应主机号
将划分子网的IPv4地址与其相应的子网掩码进行逻辑与运算就可得到IPv4地址所在子网的网络地址 -
给定一个分类的IP地址和其相应的子网掩码,就可知道子网划分的细节
划分出的子网数量
每个子网可分配的IP地址数量
每个子网的网络地址和广播地址
每个子网可分配的最小和最大地址 -
默认的子网掩码是指在未划分子网的情况下使用的子网掩码
A类:255.0.0.0
B类:255.255.0.0
C类:255.255.255.0
4.3.4 无分类编址的IPv4地址
- 划分子网在一定程度上缓解了因特网在发展中遇到的困难,但是数量巨大的C类网因为其地址空间太小并没有得到充分使用,而因特网的IP地址仍在加速消耗,整个IPv4地址空间面临全部耗尽的威胁
- 为此,因特网工程任务组IETF又提出了采用无分类编址的方法来解决IP地址紧张的问题,同时还专门成立IPv6工作组负责研究新版本IP以彻底解决IP地址耗尽问题
- 1993年,IETF发布了无分类域间路由选择CIDR(Classless Inter-Domain Routig)的RFC文档:RFC 1517-1519 和1520
CIDR消除了传统的A类、B类和C类地址空间,以及划分子网的概念
CIDR可以更加有效地分配IPv4的地址空间,并且在新的IPv6使用之前允许因特网的规模继续增长 - CIDR使用“斜线记法”,或称CIDR记法。即在IPv4地址后面加上斜线“/”,在斜线后面协商网络前缀所占的比特数量
- CIDR实际上是将网络前缀都相同的连续IP地址组成一个“CIDR地址块”
- 我们只要知道CIDR地址块中的任何一个地址,就可以知道该地址的全部细节
地址块的最小地址
地址块的最大地址
地址块中的地址数量
地址块聚合某类网络(A类,B类或C类)的数量
地址掩码(也可继续称为子网掩码) - 路由聚合(构造超网)的方法是找共同前缀
- 网络前缀越长,地址块越小,路由越具体
- 若路由器查表转发分组时发现有多条路由可选,则选择网络前缀最长的那条,这成为最长前缀匹配,因为这样的路由更具体
4.3.5 IPv4地址的应用规划
定长的子网掩码FLSM(Fixed Length Subnet Mask)
使用同一个子网掩码来划分子网
子网划分方式不灵活:只能划分出2^n个子网(n是从主机号部分借用的用来作为子网号的比特数量)
每个子网所分配的IP地址数量相同,容易造成IP地址浪费
变长的子网掩码VLSM(Variable Length Subnet Mask)
使用不同的子网掩码来划分子网
子网划分方式灵活:可以按需分配
每个子网所分配的IP地址数量可以不同,尽可能减少对IP地址的浪费
4.4 IP数据报的发送盒转发过程
-
主机发送IP数据报
判断目的主机是否与自己在同一个网络
若在同一个网络,则属于直接交付
若不在同一个网络,则属于间接交付,传输给主机所在的网络的默认网关(路由器),由默认网关帮忙转发 -
路由器转发IP数据报
- 检查IP数据报首部是否出错
若出错,直接丢弃该IP数据报并通告源主机;
若没有出错,则进行转发 - 根据IP数据报的目的地址在路由表中查找匹配的条目
若找到匹配的条目,则转发给条目中指示的下一跳;
若找不到,则丢弃该IP数据报并通告源主机
- 检查IP数据报首部是否出错
课外知识
中继器和集线器工作在物理层,既不隔离冲突域也不隔离广播域
网桥和交换机(多端口网桥)工作在数据链路层,可以隔离冲突域,不能隔离广播域
路由器工作在网络层,既能隔离冲突域,也隔离广播域
4.5 静态路由配置及其可能产生的路由环路问题
- 静态路由配置是指用户或网络管理员使用路由器的相关命令给路由器人工配置路由表
这种人工配置方式简单、开销小。但不能及时适应网络状态(流量、拓扑等)的变化
一般只在小规模网络中采用 - 使用静态路由配置可能出现以下导致产生路由环路的错误
配置错误
聚合了不存在的网络
网络故障 - 路由条目的类型
直连网络
静态路由(人工配置)
动态路由(路由选择协议) - 特殊的静态路由网络
默认路由(目的网络为0.0.0.0,地址掩码为255.255.255.255)
黑洞路由
4.6 路由协议选择
4.6.1 路由选择协议概述
静态路由选择
由人工配置的网络路由、默认路由、特定主机路由、黑洞路由等都属于静态路由
这种人工配置方式简单、开销小,但不能及时适应网络状态(流量、拓扑等)的变化
一般只在小规模网络中采用
动态路由选择
路由器通过路由选择协议自动获取路由信息
比较复杂、开销比较大,能较好地适应网络状态的变化
适用于大规模网络
路由选择处理机(路由选择协议)
路由表一般仅包含从目的网络到下一跳的映射
路由表需要对网络拓扑变化的计算最优化
转发表是从路由表得出的
转发表的结构应当使查找过程最优化
路由选择协议:内部网关协议(IGP) 和外部网关协议(EGP)
内部网关协议(IGP)
- 路由信息协议RIP
- 内部网关路由协议IGRP
1和2两个协议基于距离向量
RIP在因特网上最早使用
IGRP是思科早起私有的协议,现在已经被EIGRP取代 - 增强型内部网关路由协议(EIGRP)
思科私有的,用来取代IGRP的混合型路由协议(结合距离向量和链路状态) - 开放式最短路径有限OSPF
- 中间系统到中间系统IS-IS
4和5基于链路状态
OSPF在各种网络中广泛使用
集成化IS-IS是ISP骨干网上最常用的IGP协议
外部网关协议EGP:边界网关协议BGP
4.6.2 路由信息协议RIP的基本工作原理
-
路由信息协议RIP(Routing Information Protocol)是内部网关协议IGP中最先得到广泛使用的协议之一,其相关标准文档为RFC 1058
-
RIP要求自治系统AS内的每一个路由器都要维护从它自己到AS内其他每一个网络的距离记录。这是一组距离,称为“距离向量”
-
RIP使用跳数(Hop Count)作为度量(Metric)来衡量到达目的网络的距离
路由器到直连网络的距离定义为1
路由器到非直连网络的距离定义为所经过的路由器数加1
允许一条路径最多只能包含15个路由器。距离等于16时相当于不可达。因此,RIP只适用于小型互联网 -
RIP认为好的路由就是距离短的路由,也就是所通过路由器数量最少得路由
-
当到达同意目的网络有多条距离相等的路由是,可以进行等价负载均衡
-
RIP包含以下三个要点
和谁交换信息 仅和相邻路由器交换信息
交换什么信息 自己的路由表
何时交换信息 周期性交换(例如每30秒) -
RIP的基本工作过程
- 路由器刚开始工作时,只知道自己到直连网络的距离为1
- 每个路由仅和相邻路由器周期性地交换并更新路由信息
- 若干交换和更新后,每个路由器都知道到达本AS内各网络的最短距离和下一跳地址,称为收敛
-
RIP的路由条目的更新规则
发现了新的网络,添加
到达目的网络,想通下一跳,最新消息,更新
到达目的网络,不同下一跳,新路由优势,更新
到达目的网络,不同下一跳,新路由劣势,不更新
到达目的网络,不同下一跳,等价负载均衡 -
RIP存在 坏消息传播得慢 的问题
-
坏消息传播得慢又称为路由环路或距离无穷计数问题,这是距离向量算法的一个固有问题,可以采用多种措施减少出现该问题打来的危害
限制最大路径距离为15(16标识不可达)
当路由表发生变化时就立即发送更新报文(即 触发更新)而不仅是周期性发送
让路由器记录收到某种特定路由信息的接口,而不让同意路由信息再通过此接口向反方向传送(即 水平分割)
4.6.3 开放最短路径有限OSPF的基本工作原理
- 开放最短路径优先OSPF(Open Shortest Path First),是为客服RIP的缺点在1989年开发出来的
开放 表名OSPF协议不是受某一家厂商控制,而是公开发表的
最短路径优先 是因为使用了Dijkstra提出的最短路径算法SPF - OSPF是基于链路状态的,而不像RIP那样是基于距离向量的
- OSPF采用SPF算法计算路由,从算法上保证了不会产生路由环境
- OSPF不限制网络规模,更新效率高,收敛速度快
- 链路状态是指本路由器都和那些路由器相邻,以及相应链路的代价(cost)
代价 用来标识费用、距离、时延、带宽等等。这些都由网络管理人员来决定 - 使用OSPF的每个路由器都会产生链路状态通告LSA(Link State Advertisement)。LSA中包含以下内容:直连网络的链路状态信息,邻居路由器的链路状态信息
- LSA被封装在链路状态更新分组LSU中,采用红帆法发送
- 使用OSPF的每个路由器都要有一个链路状态数据库LSDB,用于存储LSA
- 通过各路由器洪泛发送封装有自己LSA的LSU分组,个路由器的LSDB最终将达到一致
- 使用OSPF的个路由器基于LSDB进行最短路径优先SPF计算,构建出各自到达其他各路由器的最短路径,即构建各自的路由表
- OSPF有以下五中分组类型
问候(hello)分组
数据库描述(database description)分组
链路状态请求(link state request)分组
链路状态更新(link state update)分组
链路状态确认(link state acknowledgement)分组 - OSPF在多点接入网络中路由器邻居关系的建立
选举指定路由器DR(designated router)和备用的指定路由器BDR(backup designated router)
所有的非DR/BDR只与DR/BDR建立邻居关系
非DR/BDR之间通过DR/BDR交换信息 - 为了使OSPF能够用于规模很大的网络,OSPF把一个自治系统再划分为若干个更小的范围,叫做区域(Area)
划分区域的好处就是把利用洪泛交换链路状体信息的范围局限于每一个区域而不是整个自治系统,这就减少了整个网络上的通信量