一、网络层的功能
- 网络层负责的是主机到主机之间的通信,主要关心IP数据报(分组)的路径选择。
- 网络层向上提供简单灵活的、无连接的、尽最大努力交付的数据报服务。
- 网络在发送分组时不需要先建立连接。每一个分组(IP 数据报)独立发送。
- 网络层不提供可靠传输保证。即所传送的分组可能丢失、重复和失序,也不保证分组传送的时限。
二、网际协议IP(Internet Protocol)
- 网际协议 IP 是 TCP/IP 体系中两个最主要的协议之一。与 IP 协议配套使用的还有四个协议:
- 地址解析协议 ARP (Address Resolution Protocol)
- 逆地址解析协议 RARP (Reverse Address Resolution Protocol)
- 网际控制报文协议 ICMP (Internet Control Message Protocol)
- 网际组管理协议 IGMP (Internet Group Management Protocol)
- IP 地址就是给每个连接在因特网上的主机(或路由器接口)分配一个在全世界范围是唯一的32位的标识符。
- IP 地址现在由因特网名字与号码指派公司ICANN (Internet Corporation for Assigned Names and Numbers)进行分配
1. IP 地址与编址方法
IP地址的编址方法经历了三个阶段
- 分类的IP地址:这是最基本的编址方法,在 1981 年就通过了相应的标准协议。
- 子网的划分:这是对最基本的编址方法的改进,其标准在 1985 年通过。
- 构造超网:这是比较新的无分类编址方法。1993 年提出后很快就得到推广应用。
2. 分类的 IP 地址
IP地址都由两个固定长度的字段组成
- 网络号 net-id,它标志主机(或路由器)所连接到的网络
- 主机号 host-id,它标志该主机(或路由器)。
2.1 IP 地址的分类
-
A 类 IP 地址的注意点
最大网络数 2^7 - 2 ,00000000表示本网络,01111111用于软件环回测试
最大主机数为 2^24 - 2,全0和全1的主机号有特殊的作用,
-
B类 IP 地址的注意点
最大网络数 2^14 -1 ,规定128.0.0.0不指派,从128.1.0.0开始
最大主机数为 2^16 - 2,全0和全1的主机号有特殊的作用
-
C类 IP 地址的注意点
最大网络数 2^21 - 1 ,规定192.0.0.0不指派,从192.0.1.0开始
最大主机数 2^8 - 2,全0和全1的主机号有特殊的作用
其实,IP 地址编址方案将 IP 地址空间划分为 A、B、C、D、E 五类,其中 A、B、C 是基本类,D、E 类作为多播和保留使用,为特殊地址。
每个 IP 地址包括两个标识码(ID),即网络 ID 和主机 ID。同一个物理网络上的所有主机都使用同一个网络 ID,网络上的一个主机(包括网络上工作站,服务器和路由器等)有一个主机 ID 与其对应。A~E 类地址的特点如下:
A 类地址:以 0 开头,第一个字节范围:0~127;
B 类地址:以 10 开头,第一个字节范围:128~191;
C 类地址:以 110 开头,第一个字节范围:192~223;
D 类地址:以 1110 开头,第一个字节范围为 224~239;
E 类地址:以 1111 开头,保留地址;
2.2 IP 地址的特点
- IP 地址由网络号和主机号组成
- 方便了IP地址的管理:ICANN在分配IP地址时只分配网络号,而剩下的主机号则由得到该网络号的单位自行分配。
- 减少路由表中的项目:路由器仅根据目的主机所连接的网络号来转发分组,而不考虑目的主机号
- IP地址标志了一个主机(或路由器)和一个网络的接口
- 当一个主机同时连接到两个网络上时,该主机就必须同时具有两个相应的IP地址,其网络号net-id 必须是不同的。这种主机称为多归属主机。
- 一个路由器至少应当有两个接口分别连接到两个不同的网络,并且为这两个接口分配不同网络号的IP地址。
- 一个网络是指具有相同网络号net-id的主机的集合。
- 用网桥(或交换机)连接起来的若干个局域网仍为一个网络,这些局域网都具有同样的网络号net-id。
- 所有分配到网络号net-id的网络(不管是范围很小的局域网,还是可能覆盖很大地理范围的广域网)都是平等的。
2.3 IP 层转发分组的流程
- 网络层的分组(IP数据报)是由路由器转发的。
- 路由器转发分组的依据是路由表。
- 路由表中最主要的两个信息:(目的网络地址,下一跳地址[或转发接口])
- 目的网络地址:分组要到达的目的主机的网络号
- 下一跳地址:路由器为了能将分组送达目的网络,下一步应将分组交付给哪个IP地址的接口。
- 转发接口:路由器将分组从自己的哪个接口转发
在路由表中,对每一条路由,最主要的信息是(目的网络地址,下一跳地址[或转发接口] )
2.3.1 路由的类型
路由的类型主要有三种:网络路由、特定主机路由、默认路由
网络路由
- 目的网络是一个网络地址
- 可以想像,若按目的主机号来制作路由表,则所得出的路由表就会过于庞大。
- 通常按主机所在的网络地址来制作路由表,一个网络地址可以包括该网络内的所有主机,可以简化路由表。
特定主机路由
- 目的网络是一个特定的目的主机的IP地址
- 采用特定主机路由可使网络管理人员能更方便地控制网络和测试网络,同时也可在需要考虑某种安全问题时采用这种特定主机路由。
默认路由
- 目的网络是一个特殊的标记0.0.0.0,表示与所有的网络匹配
- 如果在路由表中没有找到目标的网络路由或主机路由,则按照默认路由的指示转发数据包。
- 采用默认路由可以减少路由表所占用的空间和搜索路由表所用的时间
对于仅有少数接口接入因特网的情况特别适用:
不需要为互联网中所有网络配置对应路由,而只需要用一个默认路由代替所有相同去向的路由
2.3.2 分组转发算法
(1) 从数据报的首部提取目的地址D, 得出目的网络地址为 N。
(2) 若网络 N 与此路由器直接相连,则把数据报直接交付目的主机 D;否则是间接交付,执行(3)。
(3) 若路由表中有目的地址为 D 的特定主机路由,则把数据报传送给路由表中所指明的下一跳路由器;否则,执行(4)。
(4) 若路由表中有到达网络 N 的路由,则把数据报传送给路由表指明的下一跳路由器;否则,执行(5)。
(5) 若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器;否则,执行(6)。
(6) 报告转发分组出错。
2.4 划分子网和构造超网
早期的分类的IP地址的设计不够合理。
- IP地址空间的利用率有时很低。A类地址可连接的主机数超过1000万,B类地址可连接的主机数超过6万。
- 给每一个物理网络分配一个网络号会使路由表变得太大因而使网络性能变坏。
两级的 IP 地址不够灵活。
子网掩码的规定
- 因特网规定:所有的网络都必须使用子网掩码,在路由器的路由表中也必须有子网掩码字段
- 如果一个网络不划分子网,则该网络使用默认的子网掩码
一道简单的题目如下:
2.4.1 在划分子网的情况下路由器转发分组的算法
使用子网划分后,路由表必须包含三项内容:
- 目的网络地址,子网掩码,下一跳地址
数据报的首部并没有提供子网掩码的信息
具体过程如下:
(1) 从收到的分组的首部提取目的 IP 地址 D。
(2) 先用路由器各接口的子网掩码和 D 逐位相“与”,看是否和相应的网络地址匹配。若匹配,则将分组直接交付。否则就是间接交付,执行(3)。
(3) 若路由表中有目的地址为 D 的特定主机路由,则将分组传送给指明的下一跳路由器;否则,执行(4)。
(4) 对路由表中的每一行的子网掩码和 D 逐位相“与”,若其结果与该行的目的网络地址匹配,则将分组传送给该行指明的下一跳路由器;否则,执行(5)。
(5) 若路由表中有一个默认路由,则将分组传送给路由表中所指明的默认路由器;否则,执行(6)。
(6) 报告转发分组出错。
2.4.2 划分子网
- 划分子网纯属一个单位内部的事情。单位对外仍然表现为没有划分子网的网络。
- 凡是从其他网络发送给本单位某个主机的IP数据报,仍然是根据IP数据报的目的网络号 net-id,先找到连接在本单位网络上的路由器。
- 本单位路由器在收到IP数据报后,再按目的网络号 net-id 和子网号 subnet-id 找到目的子网。
2.4.3 无分类编址 CIDR
-
Classless Inter-Domain Routing(无分类域间路由选择)
-
划分子网在一定程度上缓解了因特网在发展中遇到的困难。然而因特网仍然面临三个必须尽早解决的问题:
- B类地址在1992年已分配了近一半,眼看就要全部分配完毕!
- 因特网主干网上的路由表中的项目数急剧增长。
- 整个 IPv4 的地址空间最终将全部耗尽。
-
CIDR 消除了传统的 A 类、B 类和 C 类地址以及划分子网的概念,因而可以更加有效地分配 IPv4 的地址空间。
-
CIDR将IP地址分为两部分:前面部分是网络前缀,用于指明网络,后面部分指明主机。
- CIDR没有指定网络前缀位数
- CIDR编址的记法:斜线记法(CIDR记法)
- 如128.14.35.7/20表示前面20位是网络前缀,后面的12位是主机号
- CIDR把网络前缀都相同的连续的IP地址称为CIDR 地址块。
- 只要知道CIDR地址块中任何一个地址,就可以知道该地址块的最小地址、最大地址和地址数。
- CIDR可以更加有效地分配 IPv4 的地址空间
- 某企业拥有主机数目为800台,应如何申请IP?
- 分类的IP编址方法:申请一个B类地址,如172.16.0.0
- CIDR:2^9 < 800 < 2^10,申请一个网络前缀为22的地址块,如172.16.4.0/22,相当于一个传统B类地址的1/26(1/64)
路由聚合(route aggregation)
- 将去向相同的多条路由聚合成一条或若干条,称为路由聚合,也称为构成超网(supernetting)
- 好处:减少路由器的路由条目
- 聚合的关键:查看待聚合网络的网络号拥有相同的高位最多是多少位
最长前缀匹配
某路由器路由表如下所示:
当路由器收到一个数据报,目的地址为:206.0.71.130,路由器应如何转发?
206.0.71.130 & 255.255.252.0 = 206.0.68.0
206.0.71.130 & 255.255.255.128 = 206.0.71.128
应当从匹配结果中选择具有最长网络前缀的路由:最长前缀匹配。
网络前缀越长,其地址块就越小,因而路由就越具体。
最长前缀匹配又称为最长匹配或最佳匹配
2.5 因特网的路由选择协议
从路由算法的自适应性分类
- 静态路由选择策略:简单和开销小、不能及时适应网络状态的变化
- 动态路由选择策略:较为复杂,开销也比较大、能适应网络状态的变化
自治系统 AS(Autonomous System)
- 使用单一和一致的路由选择协议的一组路由器的集合。
内部网关协议IGP(Interior Gateway Protocol)
- 在AS内部使用的路由选择协议。如RIP、OSPF
外部网关协议EGP(External Gateway Protocol)
- 在AS之间使用的路由选择协议,负责将一个AS的路由信息传递到另一个AS。如BGP-4
2.5.1 路由信息协议RIP(Routing Information Protocol)
- 路由信息协议 RIP 是内部网关协议中最先得到广泛使用的协议。
- RIP的最大优点是简单,计算路由开销小
1. 工作原理
- RIP是一种基于距离向量的路由选择协议。
- RIP 协议要求网络中的每一个路由器都要维护从它自己到其他每一个目的网络的距离记录。
“距离”的定义
- 路由器到直接连接的网络的距离定义为 0。
- 从一个路由器到非直接连接的网络的距离定义为所经过的路由器数。
- RIP 协议中的“距离”也称为“跳数”(hop count),每经过一个路由器,跳数就加 1。
- 距离是RIP对一个路由的好差的衡量。距离越短的路由越好。
- **“距离”的最大值为16,当距离为16时,表示网络不可达。**可见 RIP 只适用于小型互连网。
- RIP 不能在两个网络之间同时使用多条路由。只会选择一个距离较小的路由。即使另一条路由具有更低的传输时延。
2. RIP 协议的三个要点
- 仅和相邻路由器交换信息。
- 交换的信息是当前本路由器所知道的全部信息,即自己的路由表。
- 按固定的时间间隔(每隔 30 秒)交换路由信息。
3. 距离向量算法
收到相邻路由器(其地址为 X)的一个 RIP 报文:
(1) 先修改此 RIP 报文中的所有项目:把“下一跳”字段中的地址都改为 X,并把所有的“距离”字段的值加 1。
(2) 对修改后的 RIP 报文中的每一个项目,重复以下步骤:
-
若项目中的目的网络不在路由表中,则把该项目加到路由表中。
-
否则
- 若下一跳字段给出的路由器地址是同样的,则把收到的项 目 替换原路由表中的项目。
-
否则
- 若收到项目中的距离小于路由表中的距离,则进行更新,
-
否则,什么也不做。
(3) 若 3 分钟还没有收到相邻路由器的更新路由表,则把此相邻路由器记为不可达路由器,即将距离置为16(距离为16表示不可达)。
4. RIP 协议的报文
5. RIP 协议的优缺点
- RIP 协议最大的优点就是实现简单,开销较小。
- RIP 限制了网络的规模,它能使用的最大距离为 15(16 表示不可达)。
- 路由器之间交换的路由信息是路由器中的完整路由表,因而随着网络规模的扩大,开销也就增加。
- 当网络出现故障时,要经过比较长的时间才能将此信息传送到所有的路由器,甚至会出现路由自环问题。【解决路由自环的方法:水平分割】