计算机网络-------网络层
计算机网络-------网络层
一、网络层的两种服务
在计算机网络领域,网络层应该向运输层提供怎样的服务(“面向连接”还是“无连接”)曾引起了长期的争论。
一种观点是借助于电信网的成功经验,让网络负责可靠交付,计算机网络应模仿电信网络,使用面向连接的通信方式。
另一种观点是网络提供数据报服务,网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务。网络在发送分组时不需要先建立连接。每一个分组(即 IP 数据报)独立发送,与其前后的分组无关(不进行编号)。网络层不提供服务质量的承诺。即所传送的分组可能出错、丢失、重复和失序(不按序到达终点),当然也不保证分组传送的时限。
对比的方面 | 虚电路服务 | 数据报服务 |
---|---|---|
思路 | 可靠通信应当由网络来保证 | 可靠通信应当由用户主机来保证 |
连接的建立 | 必须有 | 不需要 |
终点地址 | 仅在连接建立阶段使用,每个分组使用短的虚电路号 | 每个分组都有终点的完整地址 |
分组的转发 | 属于同一条虚电路的分组均按照同一路由进行转发 | 每个分组独立选择路由进行转发 |
当结点出故障时 | 所有通过出故障的结点的虚电路均不能工作 | 出故障的结点可能会丢失分组,一些路由可能会发生变化 |
分组的顺序 | 总是按发送顺序到达终点 | 到达终点时不一定按发送顺序 |
二、网际协议IP
虚拟互联网络
- 不同的寻址方案
- 不同的最大分组长度
- 不同的网络接入机制
- 不同的超时控制
- 不同的差错恢复方法
- 不同的状态报告方法
- 不同的路由选择技术
网络互连使用路由器
- 当中继系统是转发器或网桥时,一般并不称之为网络互连,因为这仅仅是把一个网络扩大了,而这仍然是一个网络。
- 网关由于比较复杂,目前使用得较少。
- 网络互连都是指用路由器进行网络互连和路由选择。
分类 IP 地址
- 将IP地址划分为若干个固定类。
- 每一类地址都由两个固定长度的字段组成,其中一个字段是网络号 net-id,它标志主机(或路由器)所连接到的网络,而另一个字段则是主机号 host-id,它标志该主机(或路由器)。
- 主机号在它前面的网络号所指明的网络范围内必须是唯一的。
- 由此可见,一个 IP 地址在整个互联网范围内是唯一的。
- IP地址::=
常用的三种类别的IP地址
网络类别 | 最大可指派的网络数 | 第一个可指派的网络号 | 最后一个可指派的网络号 | 每个网络中最大主机数 |
---|---|---|---|---|
A | **126 (2^7 **– 2) | 1 | 126 | 16777214 |
B | 16383 (2^14 – 1) | 128.1 | 191.255 | 65534 |
C | 2097151 (2^21 – 1) | 192.0.1 | 223.255.255 | 254 |
一般不使用的特殊的IP地址
网络号 | 主机号 | 源地址使用 | 目的地址使用 | 代表的意思 |
---|---|---|---|---|
0 | 0 | 可以 | 不可 | 在本网络上的本主机 |
0 | host-id | 可以 | 不可 | 在本网络上的某台主机host-id |
全1 | 全1 | 不可 | 可以 | 只在本网络上进行广播(各路由器均不转发) |
net-id | 全1 | 不可 | 可以 | 对net-id上的所有主机进行广播 |
127 | 非全0或全1的任何数 | 可以 | 可以 | 用作本地软件环回测试之用 |
IP地址的一些重要特点:
- IP 地址管理机构在分配 IP 地址时只分配网络号,而剩下的主机号则由得到该网络号的单位自行分配。这样就方便了 IP 地址的管理。
- 路由器仅根据目的主机所连接的网络号来转发分组(而不考虑目的主机号),这样就可以使路由表中的项目数大幅度减少,从而减小了路由表所占的存储空间。
- 由于一个路由器至少应当连接到两个网络(这样它才能将 IP 数据报从一个网络转发到另一个网络),因此一个路由器至少应当有两个不同的 IP 地址。
- 用转发器或网桥连接起来的若干个局域网仍为一个网络,因此这些局域网都具有同样的网络号 net-id。
3、IP地址和硬件地址
-
IP 地址与硬件地址是不同的地址。
-
从层次的角度看,
- 硬件地址(或物理地址)是数据链路层和物理层使用的地址,网卡。
- IP 地址是网络层和以上各层使用的地址,是一种逻辑地址(称 IP 地址是逻辑地址是因为 IP 地址是用软件实现的)。
- IP 地址放在 IP 数据报的首部,而硬件地址则放在 MAC 帧的首部。
-
IP 层抽象的互联网屏蔽了下层很复杂的细节。在抽象的网络层上讨论问题,就能够使用统一的、抽象的 IP 地址研究主机和主机或主机和路由器之间的通信
主机H1与H2通信中使用IP地址与硬件地址HA
在网络层写入IP数据报首部的地址 | 在数据链路层写入MAC帧首部的地址 | |||
---|---|---|---|---|
源地址 | 目的地址 | 源地址 | 目的地址 | |
从H1到R1 | IP1 | IP2 | HA1 | HA3 |
从R1到R2 | IP1 | IP2 | HA4 | HA5 |
从R2到H2 | IP1 | IP2 | HA6 | HA2 |
4、地址解析协议ARP
通信时使用了两个地址
- IP地址(网络层地址)
- MAC地址(数据链路层地址)
已经知道了一个机器(主机或路由器)的IP地址,如何找出其相应的硬件地址?
-
地址解析协议 ARP 就是用来解决这样的问题的,ARP作用:从网络层使用的 IP 地址,解析出在数据链路层使用的硬件地址。
-
不管网络层使用的是什么协议,在实际网络的链路上传输数据帧时,最终还是必须使用硬件地址。
-
每一个主机都设有一个ARP高速缓存,里面有所有在局域网上的个主机和路由器的IP地址到硬件地址的映射表
-
<IP address;MAC address; TTL> TTL(Time To Live):地址映射有效时间。
-
当主机 A 欲向本局域网上的某个主机 B 发送 IP 数据报时,就先在其 ARP 高速缓存中查看有无主机 B 的 IP 地址。
- 如有,就可查出其对应的硬件地址,再将此硬件地址写入 MAC 帧,然后通过局域网将该 MAC 帧发往此硬件地址。
- 如没有, ARP 进程在本局域网上广播发送一个 ARP 请求分组。收到 ARP 响应分组后,将得到的 IP 地址到硬件地址的映射写入 ARP 高速缓存。
地址解析协议ARP要点
-
ARP请求分组:包含发送方硬件地址 / 发送方 IP 地址 / 目标方硬件地址(未知时填 0) / 目标方 IP 地址。
-
本地广播 ARP 请求(路由器不转发ARP请求)
-
ARP 响应分组:包含发送方硬件地址 / 发送方 IP地址 / 目标方硬件地址 / 目标方 IP 地址。
-
ARP 分组封装在物理网络的帧中传输。
ARP 高速缓存的作用
- 存放最近获得的 IP 地址到 MAC 地址的绑定,以减少 ARP 广播的数量。
- 为了减少网络上的通信量,主机 A 在发送其 ARP 请求分组时,就将自己的 IP 地址到硬件地址的映射写入 ARP 请求分组。
- 当主机 B 收到 A 的 ARP 请求分组时,就将主机 A 的这一地址映射写入主机 B 自己的 ARP 高速缓存中。这对主机 B 以后向 A 发送数据报时就更方便了。
应当注意的问题
- ARP 是解决同一个局域网上的主机或路由器的 IP 地址和硬件地址的映射问题,广播请求不经路由器转发。
- 如果所要找的主机和源主机不在同一个局域网上,那么就要通过 ARP 找到一个位于本局域网上的某个路由器的硬件地址,然后把分组发送给这个路由器,让这个路由器把分组转发给下一个网络。剩下的工作就由下一个网络来做。
- 从 IP 地址到硬件地址的解析是自动进行的,主机的用户对这种地址解析过程是不知道的。
- 只要主机或路由器要和本网络上的另一个已知 IP 地址的主机或路由器进行通信,ARP 协议就会自动地将该 IP 地址解析为链路层所需要的硬件地址。
使用 ARP 的四种典型情况
- 发送方是主机,要把 IP 数据报发送到本网络上的另一个主机。这时用 ARP 找到目的主机的硬件地址。
- 发送方是主机,要把 IP 数据报发送到另一个网络上的一个主机。这时用 ARP 找到本网络上的一个路由器的硬件地址。剩下的工作由这个路由器来完成。
- 发送方是路由器,要把 IP 数据报转发到本网络上的一个主机。这时用 ARP 找到目的主机的硬件地址。
- 发送方是路由器,要把 IP 数据报转发到另一个网络上的一个主机。这时用 ARP 找到本网络上另一个路由器的硬件地址。剩下的工作由这个路由器来完成。
为什么不直接使用硬件地址进行通信
- 由于全世界存在着各式各样的网络,它们使用不同的硬件地址。要使这些异构网络能够互相通信就必须进行非常复杂的硬件地址转换工作,因此几乎是不可能的事。
- IP 编址把这个复杂问题解决了。连接到互联网的主机只需各自拥有一个唯一的 IP 地址,它们之间的通信就像连接在同一个网络上那样简单方便,因为上述的调用 ARP 的复杂过程都是由计算机软件自动进行的,对用户来说是看不见这种调用过程的。
- 因此,在虚拟的 IP 网络上用 IP 地址进行通信给广大的计算机用户带来了很大的方便。
5、IP数据报的格式
- 一个数据报由首部和数据两部分构成。
- 首部的前一部分是固定长度,共**20字节*,是所有IP数据报必须具有的。
- 在首部固定部分的后面是一些可选字段,其长度是可变的。
IP层转发分组流程
-
假设:有四个 A 类网络通过三个路由器连接在一起。每一个网络上都可能有成千上万个主机。
-
可以想像,若按目的主机号来制作路由表,每一个路由表就有 4 万个项目,即 4 万行(每一行对应于一台主机),则所得出的路由表就会过于庞大。
-
但若按主机所在的网络地址来制作路由表,那么每一个路由器中的路由表就只包含 4 个项目(每一行对应于一个网络),这样就可使路由表大大简化。
默认路由
-
路由器还可采用默认路由以减少路由表所占用的空间和搜索路由表所用的时间。
-
这种转发方式在一个网络只有很少的对外连接时是很有用的。
-
默认路由在主机发送 IP 数据报时往往更能显示出它的好处。
-
如果一个主机连接在一个小网络上,而这个网络只用一个路由器和互联网连接,那么在这种情况下使用默认路由是非常合适的。
-
只要目的网络不在路由表中,就一律选择默认路由
路由器分组转发算法
- 从数据报的首部提取目的主机的 IP 地址 D, 得出目的网络地址为 N。
- 若网络 N 与此路由器直接相连,则把数据报直接交付目的主机 D;否则是间接交付,执行3。
- 若路由表中有目的地址为 D 的特定主机路由,则把数据报传送给路由表中所指明的下一跳路由器;否则,执行4。
- 若路由表中有到达网络 N 的路由,则把数据报传送给路由表指明的下一跳路由器;否则,执行5。
- 若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器;否则,执行6。
- 报告转发分组出错。
6、划分子网和构造超网
从两级IP地址到三级IP地址
两级IP地址
- IP 地址空间的利用率有时很低
- 给每一个物理网络分配一个网络号会使路由表变得太大因而使网络性能变坏
- 两级的 IP 地址不够灵活
三级IP地址
- 在 IP 地址中又增加了一个“子网号字段”,使两级的 IP 地址变成为三级的 IP 地址。
- 这种做法叫作划分子网 (subnetting)
划分子网的基本思路
- 划分子网纯属一个单位内部的事情。单位对外仍然表现为没有划分子网的网络。
- 从主机号借用若干个位作为子网号 subnet-id,而主机号 host-id 也就相应减少了若干个位。
- IP地址 ::=
- 凡是从其他网络发送给本单位某个主机的 IP 数据报,仍然是根据 IP 数据报的目的网络号 net-id,先找到连接在本单位网络上的路由器。
- 然后此路由器在收到 IP 数据报后,再按目的网络号 net-id 和子网号 subnet-id 找到目的子网。
- 最后就将 IP 数据报直接交付目的主机。
子网掩码
- 从一个 IP 数据报的首部并无法判断源主机或目的主机所连接的网络是否进行了子网划分。
- 使用子网掩码(subnet mask)可以找出 IP 地址中的子网部分。
规则
- 子网掩码长度=32位
- 某位=1:IP地址中的对应位为网络号和子网号
- 某位=0:IP地址中的对应位为主机号
子网划分方法
- 有固定长度子网和变长子网两种子网划分方法。
- 在采用固定长度子网时,所划分的所有子网的子网掩码都是相同的。
- 划分子网增加了灵活性,但却减少了能够连接在网络上的主机总数。
B 类地址的子网划分选择
子网号的位数 | 子网掩码 | 子网数 | 每个子网的主机数 |
---|---|---|---|
2 | 255.255.192.0 | 2 | 16382 |
3 | 255.255.224.0 | 6 | 8190 |
4 | 255.255.240.0 | 14 | 4094 |
5 | 255.255.248.0 | 30 | 2046 |
6 | 255.255.252.0 | 62 | 1022 |
7 | 255.255.254.0 | 126 | 510 |
8 | 255.255.255.0 | 254 | 254 |
9 | 255.255.255.128 | 510 | 126 |
10 | 255.255.255.192 | 1022 | 62 |
11 | 255.255.255.224 | 2046 | 30 |
12 | 255.255.255.240 | 4094 | 14 |
13 | 255.255.255.248 | 8190 | 6 |
14 | 255.255.255.252 | 16382 | 2 |
使用子网时分组的转发
- 在不划分子网的两级 IP 地址下,从 IP 地址得出网络地址是个很简单的事
- 但在划分子网的情况下,从 IP 地址却不能唯一地得出网络地址来,这是因为网络地址取决于那个网络所采用的子网掩码,但数据报的首部并没有提供子网掩码的信息
- 因此分组转发的算法也必须做相应的改动
在划分子网情况下路由器转发分组的算法
- 从收到的分组的首部提取目的 IP 地址 D。
- 先用各网络的子网掩码和 D 逐位相“与”,看是否和相应的网 络地址匹配。若匹配,则将分组直接交付。否则就是间接交付, 执行 3。
- 若路由表中有目的地址为 D 的特定主机路由,则将分组传送给 指明的下一跳路由器;否则,执行 4。
- 对路由表中的每一行,将子网掩码和 D 逐位相“与”。若结果与该行的目的网络地址匹配,则将分组传送给该行指明的下一跳路由器;否则,执行 5。
- 若路由表中有一个默认路由,则将分组传送给路由表中所指明 的默认路由器;否则,执行 6。
- 报告转发分组出错
6、网际控制报文协议ICMP
ICMP
- 为了更有效地转发 IP 数据报和提高交付成功的机会,在网际层使用了网际控制报文协议 ICMP (Internet Control Message Protocol)。
- ICMP 是互联网的标准协议。
- ICMP 允许主机或路由器报告差错情况和提供有关异常情况的报告。
- 但 ICMP 不是高层协议(看起来好像是高层协议,因为 ICMP 报文是装在 IP 数据报中,作为其中的数据部分),而是 IP 层的协议。
ICMP 询问报文有两种
- 回送请求和回答报文
- 时间戳请求和回答报文
PING
- PING 用来测试两个主机之间的连通性
- PING 使用了 ICMP 回送请求与回送回答报文。
- PING 是应用层直接使用网络层 ICMP 的例子,它没有通过运输层的 TCP 或UDP。
Traceroute
- 在 Windows 操作系统中这个命令是 tracert。
- 用来跟踪一个分组从源点到终点的路径。
- 它利用 IP 数据报中的 TTL 字段和 ICMP 时间超过差错报告报文实现对从源点到终点的路径的跟踪
7、互联网的路由选择协议
自治系统 AS(Autonomous System)
- 自治系统 AS 的定义:在单一的技术管理下的一组路由器,而这些路由器使用一种 AS 内部的路由选择协议和共同的度量以确定分组在该 AS 内的路由,同时还使用一种 AS 之间的路由选择协议用以确定分组在 AS之间的路由。
- 现在对自治系统 AS 的定义是强调下面的事实:尽管一个 AS 使用了多种内部路由选择协议和度量,但重要的是一个 AS 对其他 AS 表现出的是一个单一的和一致的路由选择策略。
互联网有两大类路由选择协议
内部网关协议 IGP (Interior Gateway Protocol)
-
在一个自治系统内部使用的路由选择协议。
-
目前这类路由选择协议使用得最多,如 RIP 和 OSPF 协议。
外部网关协议 EGP (External Gateway Protocol)
-
若源站和目的站处在不同的自治系统中,当数据报传到一个自治系统的边界时,就需要使用一种协议将路由选择信息传递到另一个自治系统中。这样的协议就是外部网关协议 EGP。
-
在外部网关协议中目前使用最多的是 BGP-4。
自治系统之间的路由选择也叫作域间路由选择 (interdomain routing),在自治系统内部的路由选择叫作域内路由选择 (intradomain routing) 。
内部网关协议 RIP
- 路由信息协议 RIP (Routing Information Protocol) 是内部网关协议 IGP 中最先得到广泛使用的协议。
- RIP 是一种分布式的、基于距离向量的路由选择协议。
- RIP 协议要求网络中的每一个路由器都要维护从它自己到其他每一个目的网络的距离记录。
“距离”的定义
- 从一个路由器到直接连接的网络的距离定义为 1
- 从一个路由器到非直接连接的网络的距离定义为所经过的路由器数加 1
- RIP 协议中的“距离”也称为“跳数”(hop count),因为每经过一个路由器,跳数就加 1
- 这里的“距离”实际上指的是“最短距离”
- RIP 认为一个好的路由就是它通过的路由器的数目少,即“距离短”
- RIP 允许一条路径最多只能包含 15 个路由器
- “距离”的最大值为 16 时即相当于不可达。可见 RIP 只适用于小型互联网
- RIP 不能在两个网络之间同时使用多条路由
- RIP 选择一个具有最少路由器的路由(即最短路由),哪怕还存在另一条高速(低时延)但路由器较多的路由。
RIP 协议的三个特点
- 仅和相邻路由器交换信息。
- 交换的信息是当前本路由器所知道的全部信息,即自己的路由表。
- 按固定的时间间隔交换路由信息,例如,每隔 30 秒。当网络拓扑发生变化时,路由器也及时向相邻路由器通告拓扑变化后的路由信息。
路由表的建立
- 路由器在刚刚开始工作时,只知道到直接连接的网络的距离(此距离定义为1)。它的路由表是空的。
- 以后,每一个路由器也只和数目非常有限的相邻路由器交换并更新路由信息。
- 经过若干次更新后,所有的路由器最终都会知道到达本自治系统中任何一个网络的最短距离和下一跳路由器的地址。
- RIP 协议的收敛 (convergence) 过程较快。“收敛”就是在自治系统中所有的结点都得到正确的路由选择信息的过程。
路由器之间交换信息与路由表更新
- RIP 协议让互联网中的所有路由器都和自己的相邻路由器不断交换路由信息,并不断更新其路由表,使得从每一个路由器到每一个目的网络的路由都是最短的(即跳数最少)。
- 虽然所有的路由器最终都拥有了整个自治系统的全局路由信息,但由于每一个路由器的位置不同,它们的路由表当然也应当是不同的。
RIP 协议的优缺点
优点
- 实现简单,开销较小。
缺点
- RIP 限制了网络的规模,它能使用的最大距离为 15(16 表示不可达)。
- 路由器之间交换的路由信息是路由器中的完整路由表,因而随着网络规模的扩大,开销也就增加。
- 坏消息传播得慢”,使更新过程的收敛时间过长
内部网关协议 OSPF
- 向本自治系统中所有路由器发送信息,这里使用的方法是洪泛法。
- 发送的信息就是与本路由器相邻的所有路由器的链路状态,但这只是路由器所知道的部分信息。
- 只有当链路状态发生变化时,路由器才用洪泛法向所有路由器发送此信息。
OSPF 直接用 IP 数据报传送
- OSPF 不用 UDP 而是直接用 IP 数据报传送。
- OSPF 构成的数据报很短。这样做可减少路由信息的通信量。
- 数据报很短的另一好处是可以不必将长的数据报分片传送。
- 但分片传送的数据报只要丢失一个,就无法组装成原来的数据报,而整个数据报就必须重传。
IP多播
- IP 多播 (multicast,以前曾译为组播) 已成为互联网的一个热门课题。
- 目的:更好第支持一对多通信。
- 一对多通信:一个源点发送到许多个终点。
- 例如,实时信息的交付(如新闻、股市行情等),软件更新,交互式会议及其他多媒体通信。
- 在互联网上进行多播就叫作 IP 多播。
- 互联网范围的多播要靠路由器来实现。
- 能够运行多播协议的路由器称为多播路由器(multicast router)。当然它也可以转发普通的单播IP数据报。
多播数据报
- 多播数据报和一般的 IP 数据报的区别就是它使用 D 类 IP 地址作为目的地址,并且首部中的协议字段值是2,表明使用网际组管理协议 IGMP。
- 多播数据报也是“尽最大努力交付”,不保证一定能够交付多播组内的所有成员。
- 对多播数据报不产生 ICMP 差错报文。因此,若在 PING 命令后面键入多播地址,将永远不会收到响应。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了