《计算机网络(第七版)-谢希仁》重点知识 - 网络层

网络层

根据B站视频《计算机网络(谢希仁第七版)-方老师》上课整理


网络层提供的两种服务

数据报服务: 网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务。不提供服务质量的承诺

image-20210819101151439

虚电路服务(逻辑连接) 按照存储转发方式传送,实际还是电路连接

image-20210819100754064

虚电路服务与数据报服务的对比

对比的方面虚电路服务数据报服务
思路可靠通信应当由网络来保证可靠通信应当由用户主机来保证
连接的建立必须有不需要
终点地址仅在连接建立阶段使用,每个分组使用短的虚电路号每个分组都有终点的完整地址
分组的转发属于同一条虚电路的分组均按照同一路由进行转发每个分组独立选择路由进行转发
当结点出故障时所有通过出故障的结点的虚电路均不能工作出故障的结点可能会丢失分组,一些路由可能会发生变化
分组的顺序总是按发送顺序到达终点到达终点时不一定按发送顺序
端到端的差错处理和流量控制可以由网络负责,也可以由用户主机负责由用户主机负责

网络协议IP(重要)

网际协议 IP 是 TCP/IP 体系中两个最主要的协议之一,与IP协议配套使用还有三个协议

image-20210819101745077

想让网络互连能够通信,那么如何将异构的网络互相连接起来?

  • 将网络互相连接起来要使用一些中间设备
  • 中间设备又称为中间系统或中继 (relay)系统
  • 有以下五种不同的中间设备
    • 物理层中继系统:转发器 (repeater)
    • 数据链路层中继系统:网桥 或 桥接器 (bridge)
    • 网络层中继系统:路由器 (router)
    • 网桥和路由器的混合物:桥路器 (brouter)
    • 网络层以上的中继系统:网关 (gateway)

网络互联使用路由器

当中继系统是转发器或网桥时,一般并不称之为网络互联,因为这仅仅是一个网络扩大了,仍只是一个网络,而网络互联都是指路由器进行网络互联和路由选择

由于历史的原因,许多有关 TCP/IP 的文献将网络层使用的路由器称为网关

image-20210819104203321

虚拟互联网络的意义

  • 虚拟互连网络也就是逻辑互连网络,它的意思就是互连起来的各种物理网络的异构性本来是客观存在的,但是我们利用 IP 协议就可以使这些性能各异的网络从用户看起来好像是一个统一的网络

  • 使用 IP 协议的虚拟互连网络可简称为 IP 网

  • 使用虚拟互连网络的好处是: 当互联网上的主机进行通信时,就好像在一个网络上通信一样,而看不见互连的各具体的网络异构细节

  • 如果在这种覆盖全球的 IP 网的上层使用 TCP 协议,那么就是现在的互联网 (Internet)

image-20210819104625682

分类的IP地址

在 TCP/IP 体系中,IP 地址是一个最基本的概念。

IP地址的表示方法
  • 将IP地址划分为若干个固定类
  • 每一类地址都由两个固定长度的字段组成,其中一个字段是网络号 net-id,它标志主机(或路由器)所连接到的网络,而另一个字段则是主机号 host-id,它标志该主机(或路由器)
  • 主机号在它前面的网络号所指明的网络范围内必须是唯一的
  • 由此可见,一个 IP 地址在整个互联网范围内是唯一的
image-20210819110157410

可记为:

image-20210819110215185

各类IP地址的网络号字段与主机号字段

image-20210819113718712

点十进制记法

每八位一组,提高可读性

image-20210819113821591

IP地址的指派范围

网络 类别最大可指派 的网络第一个可指派网络最后一个可指派的网络号每个网络最大主机数
A126 (27 – 2)112616777214
B16383 (214 – 1)128.1191.25565534
C2097151 (221– 1)192.0.1223.255.255254

一般不使用的特殊的IP地址

网络号主机号源地址 使用目的地址 使用代表的意思
00可以不可在本网络上的本主机(见6.6 DHCP协议)
0host-id可以不可在本网络上的某台主机 host-id
1 1不可可以只在本网络上进行广播(各路由器均不转发)
net-id 1不可可以 net-id 上的所有主机进行广播
127非全 0 或全 1的任何数可以可以用作本地软件环回测试之用

IP地址的重要特点

  • IP 地址是一种分等级的地址结构。分两个等级的好处是:
    • 第一,IP 地址管理机构在分配 IP 地址时只分配网络号,而剩下的主机号则由得到该网络号的单位自行分配。这样就方便了 IP 地址的管理
    • 第二,路由器仅根据目的主机所连接的网络号来转发分组(而不考虑目的主机号),这样就可以使路由表中的项目数大幅度减少,从而减小了路由表所占的存储空间
  • 实际上 IP 地址是标志一个主机(或路由器)和一条链路的接口。
    • 当一个主机同时连接到两个网络上时,该主机就必须同时具有两个相应的 IP 地址,其网络号 net-id 必须是不同的。这种主机称为多归属主机 (multihomed host)
    • 由于一个路由器至少应当连接到两个网络(这样它才能将 IP 数据报从一个网络转发到另一个网络),因此一个路由器至少应当有两个不同的 IP 地址
  • 用转发器或网桥连接起来的若干个局域网仍为一个网络,因此这些局域网都具有同样的网络号 net-id。
  • 所有分配到网络号 net-id 的网络,无论是范围很小的局域网,还是可能覆盖很大地理范围的广域网,都是平等的

互联网中的IP地址

image-20210819163521062

在同一个局域网上的主机或路由器的IP 地址中的网络号必须是一样的。图中的网络号就是 IP地址中的 net-id

路由器总是具有两个或两个以上的 IP 地址。路由器的每一个接口都有一个不同网络号的 IP 地址。

两个路由器直接相连的接口处,可指明也可不指明 IP 地址,这种特殊网络叫做无编号网络或无名网络。如指明 IP 地址,则这一段连线就构成了一种只包含一段线路的特殊“网络” 。现在常不指明 IP 地址。

IP地址与硬件地址

  • 硬件地址(或物理地址) 是数据链路层和物理层使用的地址
  • IP 地址是网络层和以上各层使用的地址,是一种逻辑地址(称 IP 地址是逻辑地址是因为 IP 地址是用软件实现的)
image-20210819164929598

地址解析协议 ARP

(Address Resolution Protocol)

通信时使用了两个地址:

  • IP地址(网络层地址)
  • MAC地址(数据链路层地址)

利用ARP协议可以利用IP地址找到硬件地址

image-20210819165826666
协议要点

不管网络层使用的是什么协议,在实际网络的链路上传送数据帧时,最终还是必须使用硬件地址
每一个主机都设有一个 ARP 高速缓存 (ARP cache),里面有所在的局域网上的各主机和路由器的 IP 地址到硬件地址的映射表,其作用:

  • 存放最近获得的 IP 地址到 MAC 地址的绑定,以减少 ARP 广播的数量
  • 为了减少网络上的通信量,主机 A 在发送其 ARP 请求分组时,就将自己的 IP 地址到硬件地址的映射写入 ARP 请求分组
  • 当主机 B 收到 A 的 ARP 请求分组时,就将主机 A 的这一地址映射写入主机 B 自己的 ARP 高速缓存中。这对主机 B 以后向 A 发送数据报时就更方便了
image-20210819172514179
  • 当主机 A 欲向本局域网上的某个主机 B 发送 IP 数据报时,就先在其 ARP 高速缓存中查看有无主机 B 的 IP 地址
    • 如有,就可查出其对应的硬件地址,再将此硬件地址写入 MAC 帧,然后通过局域网将该 MAC 帧发往此硬件地址
    • 如没有, ARP 进程在本局域网上广播发送一个 ARP 请求分组。收到 ARP 响应分组后,将得到的 IP 地址到硬件地址的映射写入 ARP 高速缓存
  • ARP请求分组:包含发送方硬件地址 / 发送方 IP 地址 / 目标方硬件地址(未知时填 0) / 目标方 IP 地址
  • 本地广播 ARP 请求(路由器不转发ARP请求)
  • ARP 响应分组:包含发送方硬件地址 / 发送方 IP地址 / 目标方硬件地址 / 目标方 IP 地址
  • ARP 分组封装在物理网络的帧中传输
应当注意的问题
  • ARP 是解决同一个局域网上的主机或路由器的 IP 地址和硬件地址的映射问题,因为路由器不会转发ARP请求。

  • 如果所要找的主机和源主机不在同一个局域网上,那么就要通过 ARP 找到一个位于本局域网上的某个路由器的硬件地址,然后把分组发送给这个路由器,让这个

  • 路由器把分组转发给下一个网络。剩下的工作就由下一个网络来做。

  • 从 IP 地址到硬件地址的解析是自动进行的,主机的用户对这种地址解析过程是不知道的

  • 只要主机或路由器要和本网络上的另一个已知 IP 地址的主机或路由器进行通信,ARP 协议就会自动地将该 IP 地址解析为链路层所需要的硬件地址

使用ARP的四种情况

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bE8CcGhQ-1630813577392)(网络层.assets/image-20210819174330669.png)]

  1. 主机->本网络上的另一个主机: 这时用 ARP 找到目的主机的硬件地址
  2. 主机->另一个网络上的一个主机: 这时用 ARP 找到本网络上的一个路由器的硬件地址。剩下的工作由这个路由器来完成
  3. 路由器->本网络上的一个主机: 这时用 ARP 找到目的主机的硬件地址
  4. 路由器->另一个网络上的一个主机: 这时用 ARP 找到本网络上另一个路由器的硬件地址。剩下的工作由这个路由器来完成
为什么要用MAC地址和IP地址?
  • 由于全世界存在着各式各样的网络,它们使用不同的硬件地址。要使这些异构网络能够互相通信就必须进行非常复杂的硬件地址转换工作,因此几乎是不可能的事
  • IP 编址把这个复杂问题解决了。 连接到互联网的主机只需各自拥有一个唯一的 IP 地址,它们之间的通信就像连接在同一个网络上那样简单方便,因为上述的调用 ARP 的复杂过程都是由计算机软件自动进行的,对用户来说是看不见这种调用过程的
  • 因此,在虚拟的 IP 网络上用 IP 地址进行通信给广大的计算机用户带来了很大的方便。

IP数据报的格式

一个IP数据报由首部(固定长度共20字节)和数据两部分组成

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NyOAx2uJ-1630813433819)(网络层.assets/image-20210819204838136.png)]

最大传输单元MTU(Maximum Transfer Unit)数据链路层规定的一个数据帧中的数据字段的最大长度

  • 版本——占 4 位,指 IP 协议的版本。目前的 IP 协议版本号为 4 (即 IPv4)。

  • 首部长度——占 4 位,可表示的最大数值是 15 个单位(一个单位为 4 字节),因此 IP 的首部长度的最大值是 60 字节。

  • 区分服务——占 8 位,用来获得更好的服务。在旧标准中叫做服务类型,但实际上一直未被使用过。1998 年这个字段改名为区分服务。只有在使用区分服务(DiffServ)时,这个字段才起作用。在一般的情况下都不使用这个字段

  • 总长度——占 16 位,指首部和数据之和的长度,单位为字节,因此数据报的最大长度为 65535 字节。总长度必须不超过最大传送单元 MTU。

  • 标识(identification) ——占 16 位,它是一个计数器,用来产生 IP 数据报的标识,当数据报的长度超过网络的MTU而必须分片时,相同的值使分片后的各数据报片能够正确的重装成原来的数据报。

  • 标志(flag) ——占 3 位, 目前只有前两位有意义。

    • 标志字段的最低位是 MF (More Fragment)。MF = 1 表示后面“还有分片”。MF= 0 表示最后一个分片。
    • 标志字段中间的一位是 DF (Don’t Fragment) 。只有当 DF= 0 时才允许分片。
  • 片偏移——占13 位,指出:较长的分组在分片后某片在原分组中的相对位置。片偏移以 8 个字节为偏移单位。

  • 生存时间——占8 位,记为 TTL (Time To Live),指示数据报在网络中可通过的路由器数的最大值,每经过一次路由转发都会减一,当TTL为零时,丢弃这个数据报。

  • 协议——占8 位,指出此数据报携带的数据使用何种协议,以便目的主机的 IP 层将数据部分上交给那个处理过程

  • 首部检验和——占16 位,只检验数据报的首部,不检验数据部分。这里不采用 CRC 检验码而采用简单的计算方法。源地址和目的地址都各占 4 字节

IP数据报的转发分组流程

假设:有四个 A 类网络通过三个路由器连接在一起。每一个网络上都可能有成千上万个主机。可以想像,若按目的主机号来制作路由表,每一个路由表就有 4 万个项目,即 4 万行(每一行对应于一台主机),则所得出的路由表就会过于庞大。但若按主机所在的网络地址来制作路由表,那么每一个路由器中的路由表就只包含 4 个项目(每一行对应于一个网络),这样就可使路由表大大简化

image-20210819213815551
查找路由表

根据目的网络地址就能确定下一跳路由器,这样做的结果是:

  • IP 数据报最终一定可以找到目的主机所在目的网络上的路由器(可能要通过多次的间接交付
  • 只有到达最后一个路由器时,才试图向目的主机进行直接交付
特定主机路由

虽然互联网所有的分组转发都是基于目的主机所在的网络,但在大多数情况下都允许有这样的特例,即为特定的目的主机指明一个路由。
采用特定主机路由可使网络管理人员能更方便地控制网络和测试网络,同时也可在需要考虑某种安全问题时采用这种特定主机路由。

默认路由

找不到路径就交给默认路由转发

  • 路由器还可采用默认路由以减少路由表所占用的空间和搜索路由表所用的时间
  • 这种转发方式在一个网络只有很少的对外连接时是很有用的
  • 默认路由在主机发送 IP 数据报时往往更能显示出它的好处
  • 如果一个主机连接在一个小网络上,而这个网络只用一个路由器和互联网连接,那么在这种情况下使用默认路由是非常合适的
image-20210819214511182

特别注意:

  • IP 数据报的首部中没有地方可以用来指明“下一跳路由器的 IP 地址”
  • 当路由器收到待转发的数据报,不是将下一跳路由器的 IP 地址填入 IP 数据报,而是送交下层的网络接口软件
  • 网络接口软件使用 ARP 负责将下一跳路由器的 IP 地址转换成硬件地址,并将此硬件地址放在链路层的 MAC 帧的首部,然后根据这个硬件地址找到下一跳路由器。
路由表转发算法
  1. 从数据报的首部提取目的主机的 IP 地址 D, 得出目的网络地址为 N
  2. 若网络 N 与此路由器直接相连,则把数据报直接交付目的主机 D;否则是间接交付,执行 (3)
  3. 若路由表中有目的地址为 D 的特定主机路由,则把数据报传送给路由表中所指明的下一跳路由器;否则,执行 (4)
  4. 若路由表中有到达网络 N 的路由,则把数据报传送给路由表指明的下一跳路由器;否则,执行 (5)
  5. 若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器;否则,执行 (6)
  6. 报告转发分组出错
关于路由表
  • 路由表没有给分组指明到某个网络的完整路径
  • 路由表指出,到某个网络应当先到某个路由器(即下一跳路由器)
  • 在到达下一跳路由器后,再继续查找其路由表,知道再下一步应当到哪一个路由器
  • 这样一步一步地查找下去,直到最后到达目的网络

划分子网

从两级 IP 地址到三级 IP 地址

  • 在 ARPANET 的早期,IP 地址的设计确实不够合理:

    • IP 地址空间的利用率有时很低
    • 给每一个物理网络分配一个网络号会使路由表变得太大因而使网络性能变坏
    • 两级的 IP 地址不够灵活
  • 从 1985 年起在 IP 地址中又增加了一个“子网号字段”,使两级的 IP 地址变成为三级的 IP 地址

  • 这种做法叫做划分子网 (subnetting)

  • 划分子网已成为互联网的正式标准协议

基本思路

  • 划分子网纯属一个单位内部的事情。单位对外仍然表现为没有划分子网的网络
  • 从主机号借用若干个位作为子网号 subnet-id,而主机号 host-id 也就相应减少了若干个位
image-20210819225342685
  • 凡是从其他网络发送给本单位某个主机的 IP 数据报,仍然是根据 IP 数据报的目的网络号 net-id,先找到连接在本单位网络上的路由器
  • 然后此路由器在收到 IP 数据报后,再按目的网络号 net-id 和子网号 subnet-id 找到目的子网
  • 最后就将 IP 数据报直接交付目的主机

一个未划分子网的B类网络145.13.0.0

image-20210819225544985

划分后

当没有划分子网时,IP 地址是两级结构,划分子网后 IP 地址就变成了三级结构,划分子网只是把 IP 地址的主机号 host-id 这部分进行再划分,而不改变 IP 地址原来的网络号 net-id

image-20210819225644531

优点:

  • 减少了 IP 地址的浪费
  • 使网络的组织更加灵活
  • 更便于维护和管理

划分子网纯属一个单位内部的事情,对外部网络透明,对外仍然表现为没有划分子网的一个网络。

子网掩码

从一个 IP 数据报的首部并无法判断源主机或目的主机所连接的网络是否进行了子网划分。使用子网掩码 (subnet mask) 可以找出 IP 地址中的子网部分。

规则:
子网掩码长度 = 32 位
某位 = 1: IP地址中的对应位为网络号和子网号
某位 = 0: IP地址中的对应位为主机号

image-20210819230214971

如何用子网掩码找出IP地址中的子网部分?

image-20210819230832559

子网掩码是一个网络或一个子网的重要属性

  • 路由器在和相邻路由器交换路由信息时,必须把自己所在网络(或子网)的子网掩码告诉相邻路由器
  • 路由器的路由表中的每一个项目,除了要给出目的网络地址外,还必须同时给出该网络的子网掩码
  • 若一个路由器连接在两个子网上就拥有两个网络地址和两个子网掩码

子网划分的方法

  • 固定长度子网和变长子网两种子网划分方法
  • 在采用固定长度子网时,所划分的所有子网的子网掩码都是相同的
  • 虽然根据已成为互联网标准协议的 RFC 950 文档,子网号不能为全 1 或全 0,但随着无分类域间路由选择 CIDR 的广泛使用,现在全 1 和全 0 的子网号也可以使用了,但一定要谨慎使用,确认你的路由器所用的路由选择软件是否支持全 0 或全 1 的子网号这种较新的用法
  • 划分子网增加了灵活性,但却减少了能够连接在网络上的主机总数

子网中的分组转发

  1. 从收到的分组的首部提取目的 IP 地址 D
  2. 先用各网络的子网掩码和 D 逐位相“与”,看是否和相应的网络地址匹配。若匹配,则将分组直接交付。否则就是间接交付,执行 (3)。
  3. 若路由表中有目的地址为 D 的特定主机路由,则将分组传送给指明的下一跳路由器;否则,执行 (4)。
  4. 对路由表中的每一行,将子网掩码和 D 逐位相“与”。若结果与该行的目的网络地址匹配,则将分组传送给行指明的下一跳路由器;否则,执行 (5)。
  5. 若路由表中有一个默认路由, 则将分组传送给路由表中所指明的默认路由器;否则,执行 (6)。
  6. 报告转发分组出错。

无分类编址CIDR(构造超网)

CIDR的特点
  • CIDR 消除了传统的 A 类、B 类和 C 类地址以及划分子网的概念,因而可以更加有效地分配 IPv4 的地址空间
  • CIDR使用各种长度的“网络前缀”(network-prefix)来代替分类地址中的网络号和子网号
  • IP 地址从三级编址(使用子网掩码)又回到了两级编址
image-20210825111906525

两级编址的记法:

CIDR 使用“斜线记法”(slash notation),它又称为 CIDR 记法,即在 IP 地址面加上一个斜线“/”,然后写上网络前缀所占的位数(这个数值对应于三级编址中子网掩码中 1 的个数)。例如: 220.78.168.0/24

CIDR地址块

  • CIDR 把网络前缀都相同的连续的 IP 地址组成“CIDR 地址块
  • 128.14.32.0/20 表示的地址块共有 212 个地址(因为斜线后面的 20 是网络前缀的位数,所以这个地址的主机号是 12 位)
    • 这个地址块的起始地址是 128.14.32.0
    • 在不需要指出地址块的起始地址时,也可将这样的地址块简称为“/20 地址块
    • 128.14.32.0/20 地址块的最小地址:128.14.32.0
    • 128.14.32.0/20 地址块的最大地址:128.14.47.255
    • 全 0 和全 1 的主机号地址一般不使用。

路由聚合

一个CIDR地址块可以表示多个地址,这种的聚合常称为路由聚合(也称构成超网),有利于减少路由器之间的信息交换,从而提高整个互联网的性能。CIDR虽然不使用子网,但是任然用“掩码”,但是不叫子网掩码

CIDR记法的其他形式

  • 10.0.0.0/10 可简写为 10/10,也就是把点分十进制中低位连续的 0 省略
  • 10.0.0.0/10 隐含地指出 IP 地址 10.0.0.0 的掩码是 255.192.0.0。此掩码可表示为:
image-20210825152156289
  • 网络前缀的后面加一个星号 的表示方法,如 00001010 00,在星号 之前是网络前缀,而星号表示 IP 地址中的主机号,可以是任意值。
最长前缀匹配

即是,在查找路由表的时候可能有不止一个匹配结果,我们选择最长的网络前缀的路由。(如:查找到了重庆、重庆渝北两个路由,我们选择重庆渝北这个最长的前缀,最详细的),最长前缀匹配又称最佳匹配或最长匹配

二叉线索查找路由表

为了进行更加有效的查找,通常是将无分类编址的路由表存放在一种层次的数据结构中,然后自上而下地按层次进行查找。这里最常用的就是二叉线索 (binary trie)

image-20210825154617090

网际控制报文协议ICMP

(Internet Control Message Protocol)

  • 为了更有效地转发 IP 数据报和提高交付成功的机会,在网际层使用了网际控制报文协议 ICMP (Internet Control Message Protocol)
  • ICMP 是互联网的标准协议
  • ICMP 允许主机或路由器报告差错情况和提供有关异常情况的报告
  • 但 ICMP 不是高层协议(看起来好像是高层协议,因为 ICMP 报文是装在 IP 数据报中,作为其中的数据部分),而是 IP 层的协议。

ICMP报文格式

image-20210825155904670

ICMP报文的种类

ICMP差错报告报文

差错报告报文有4种:

  1. 终点不可达
  2. 时间超过
  3. 参数问题
  4. 改变路由(重定向)(Redirect)

ICMP差错报文数据字段内容:

image-20210825161427062

不发送ICMP差错报告报文的几种情况:

  • 对 ICMP 差错报告报文不再发送 ICMP 差错报告报文(防止无限套娃)
  • 对第一个分片的数据报片的所有后续数据报片都不发送 ICMP 差错报告报文(前面丢了,后面也丢,只发送一次)
  • 对具有多播地址的数据报都不发送 ICMP 差错报告报文
  • 对具有特殊地址(如127.0.0.0 或 0.0.0.0)的数据报不发送 ICMP 差错报告报文
ICMP询问报文

有两种

  • 回送请求和回答报文

是由主机和路由器向一个特定的目的主机发出的询问,收到询问报文,必须给予发送ICMP回送回答报文,用来测试目的站是否可达或者了解其状态

  • 时间戳请求和回答报文

请求某台主机或路由器回答当前的日期和时间,在ICMP时间戳回答报文中有一个32位字段,写入1900年1月1日到现在一共有多少秒,时间戳请求与回答可用于时钟同步和时间测量。

下面的几种 ICMP 报文不再使用:

  • 信息请求与回答报文
  • 掩码地址请求和回答报文
  • 路由器询问和通告报文
  • 源点抑制报文

ICMP的应用举例

PING (Packet InterNet Groper)

  • PING 用来测试两个主机之间的连通性
  • PING 使用了 ICMP 回送请求与回送回答报文
  • PING 是应用层直接使用网络层 ICMP 的例子,它没有通过运输层的 TCP 或UDP
image-20210825164542721

Traceroute 的应用举例

  • 在 Windows 操作系统中这个命令是 tracert
  • 用来跟踪一个分组从源点到终点的路径
  • 它利用 IP 数据报中的 TTL 字段和 ICMP 时间超过差错报告报文实现对从源点到终点的路径的跟踪
image-20210825164654644

互联网的路由选择协议(重点)

互联网采用分层次的路由选择协议。

即使把整个互联网划分位为许多较小的自治系统(autonomous system)记作AS,在单一技术管理下的一组路由器,而这些路由器使用一种自治系统内的路由选择协议和共同的度量

image-20210825212750781

在当前的互联网中,最大的ISP就是一个自治系统,这样就把路由选择协议划分为两大类,即:

  1. 内部网关协议IGP(Interior Gateway Protocol):在一个自治系统内部使用的路由选择协议,目前这类路由选择协议使用得最多,如 RIP 和 OSPF 协议。
  2. 外部网关协议 EGP (External Gateway Protocol) :若源站和目的站处在不同的自治系统中,当数据报传到一个自治系统的边界时,就需要使用一种协议将路由选择信息传递到另一个自治系统中。这样的协议就是外部网关协议 EGP。在外部网关协议中目前使用最多的是 BGP-4。
image-20210825213750910

注意事项:

  • 互联网的早期 RFC 文档中未使用“路由器”而是使用“网关”这一名词。但是在新的 RFC 文档中又使用了“路由器”这一名词。应当把这两个术语当作同义词
  • IGP 和 EGP 是协议类别的名称。但 RFC 在使用 EGP 这个名词时出现了一点混乱,因为最早的一个外部网关协议的协议名字正好也是 EGP。因此在遇到名词 EGP 时,应弄清它是指旧的协议 EGP 还是指外部网关协议 EGP 这个类别。

内部网关协议-RIP协议

RIP协议(Routing Information Protocol)路由信息协议,是一种分布式的基于距离向量的路由选择协议(只考虑路由转发次数,不考虑其他的)。

特点:

  1. 仅和相邻路由器交换信息
  2. 交换的信息是当前本路由器所知道的全部信息,即自己的路由表
  3. 按固定的时间间隔交换路由信息,例如,每隔 30 秒。当网络拓扑发生变化时,路由器也及时向相邻路由器通告拓扑变化后的路由信息

路由表的建立

  • 路由器在刚刚开始工作时,只知道到直接连接的网络的距离(此距离定义为 1)。它的路由表是空的
  • 以后,每一个路由器也只和数目非常有限的相邻路由器交换并更新路由信息
  • 经过若干次更新后,所有的路由器最终都会知道到达本自治系统中任何一个网络的最短距离和下一跳路由器的地址
  • RIP 协议的收敛 (convergence) 过程较快。“收敛”就是在自治系统中所有的结点都得到正确的路由选择信息的过程

坏消息,传播得慢

image-20210825225929504
  1. 当网1出了故障以后R1向相邻的路由器说:无法到达网1,即是(距离为16)
  2. 但是R2不知道网1出了故障,在R2收到R1的更新报文之前的报文,还发送原来的报文
  3. R1收到R2的更新报文后,知道R2可以到达网1,会更新自己的路由表,距离是3,下一跳为R2
  4. 而R2收到R1能到达的报文之后,又更新路由表,距离为4,疯狂套娃到距离为16,才会发现网1不可到达
image-20210826104731568

RIP协议的优缺点:

优点

  • 实现简单,开销较小。

缺点:

  • RIP 限制了网络的规模,它能使用的最大距离为 15(16 表示不可达)
  • 路由器之间交换的路由信息是路由器中的完整路由表,因而随着网络规模的扩大,开销也就增加。
    “坏消息,传播得慢”,使更新过程的收敛时间过长
  • 当网络出现故障时,要经过比较长的时间,才能传送到所有的路由器

内部网关协议-OSPF协议

开放最短路径优先 OSPF (Open Shortest Path First) 是为克服 RIP 的缺点在 1989 年开发出来的,对比起RIP来说,OSPF更综合的考虑到了路径问题

基本特点:

  • 开放 ”表明 OSPF 协议不是受某一家厂商控制,而是公开发表的
  • 最短路径优先 ”是因为使用了 Dijkstra 提出的最短路径算法 SPF
  • 采用分布式的链路状态协议 (link state protocol)
  • 注意: OSPF 只是一个协议的名字,它并不表示其他的路由选择协议不是“最短路径优先”

三个要点:

  • 向本自治系统中所有路由器发送信息,这里使用的方法是洪泛法
  • 发送的信息就是与本路由器相邻的所有路由器的链路状态,但这只是路由器所知道的部分信息
    • “链路状态”就是说明本路由器都和哪些路由器相邻,以及该链路的“度量”(metric)
  • 只有当链路状态发生变化时,路由器才用洪泛法向所有路由器发送此信息

外部网关协议-BGP协议

是不同自治系统的路由器之间交换路由信息的协议,可以将 BGP-4 简写为 BGP

BGP发言人

  • 每一个自治系统的管理员要选择至少一个路由器作为该自治系统的“ BGP 发言人” (BGP speaker)
  • 一般说来,两个 BGP 发言人都是通过一个共享网络连接在一起的,而 BGP 发言人往往就是 BGP 边界路由器,但也可以不是 BGP 边界路由器。

BGP交换路由信息

  • 一个 BGP 发言人与其他自治系统中的 BGP 发言人要交换路由信息,就要先建立 TCP 连接,然后在此连接上交换 BGP 报文以建立 BGP 会话(session),利用 BGP 会话交换路由信息
  • 使用 TCP 连接能提供可靠的服务,也简化了路由选择协议
  • 使用 TCP 连接交换路由信息的两个 BGP 发言人,彼此成为对方的邻站(neighbor)或对等站(peer) 。
image-20210826161613077

BGP发言人交换路径向量

image-20210826161937447 image-20210826161959754

特点:

  • BGP 协议交换路由信息的结点数量级是自治系统数的量级,这要比这些自治系统中的网络数少很多
  • 每一个自治系统中 BGP 发言人(或边界路由器)的数目是很少的。这样就使得自治系统之间的路由选择不致过分复杂
  • BGP 支持 CIDR,因此 BGP 的路由表也就应当包括目的网络前缀、下一跳路由器,以及到达该目的网络所要经过的各个自治系统序列
  • 在 BGP 刚刚运行时,BGP 的邻站是交换整个的 BGP 路由表。但以后只需要在发生变化时更新有变化的部分。这样做对节省网络带宽和减少路由器的处理开销都有好处

路由器的构成(省略部分)

  • 路由器是一种典型的网络层设备
  • 路由器是互联网中的关键设备
  • 路由器的主要作用是:
    • 连通不同的网络
    • 选择信息传送的线路。选择通畅快捷的近路,能大大提高通信速度,减轻网络系统通信负荷,节约网络系统资源,提高网络系统畅通率,从而让网络系统发挥出更大的效益来。

路由器的结构

image-20210826162637679
  • 整个的路由器结构可划分为两大部分:
    • 路由选择部分
    • 分组转发部分
  • 路由选择部分
    • 也叫做控制部分,其核心构件是路由选择处理机
    • 路由选择处理机的任务是根据所选定的路由选择协议构造出路由表,同时经常或定期地和相邻路由器交换路由信息而不断地更新和维护路由表

计算机网络中的性能指标中的

  • 排队时延:即是路由器的分组排队等待发送的过程
  • 处理时延:即是查找路由表的时延

IPv6

  • IP 是互联网的核心协议
  • 互联网经过几十年的飞速发展,到 2011 年 2 月,IPv4 的 32 位地址已经耗尽
  • ISP 已经不能再申请到新的 IP 地址块了
  • 我国在 2014 – 2015 年也逐步停止了向新用户和应用分配 IPv4 地址
  • 解决 IP 地址耗尽的根本措施就是采用具有更大地址空间的新版本的 IP,即 IPv6。

IPv6的基本首部

  • IPv6 仍支持无连接的传送,但将协议数据单元 PDU 称为分组。为方便起见,本书仍采用数据报这一名词。
  • 所引进的主要变化如下:
    • 更大的地址空间。 IPv6 将地址从 IPv4 的 32 位 增大到了 128 位。
    • 扩展的地址层次结构。
    • 灵活的首部格式。 IPv6 定义了许多可选的扩展首部。
    • 改进的选项。 IPv6 允许数据报包含有选项的控制信息,其选项放在有效载荷中。
    • 允许协议继续扩充。
    • 支持即插即用(即自动配置)。因此 IPv6 不需要使用 DHCP。
    • 支持资源的预分配。 IPv6 支持实时视像等要求,保证一定的带宽和时延的应用。
    • IPv6 首部改为 8 字节对齐。 首部长度必须是 8 字节的整数倍。原来的 IPv4 首部是 4 字节对齐。

IPv6 数据报由两大部分组成:

  • 基本首部 (base header)
  • 有效载荷 (payload)。 有效载荷也称为净负荷。有效载荷允许有零个或多个扩展首部 (extension header),再后面是数据部分。
image-20210826173607657
IPv6基本首部组成
image-20210826174034920

版本(version)—— 4 位。它指明了协议的版本,对 IPv6 该字段总是 6。

通信量类(traffic class)—— 8 位。这是为了区分不同的 IPv6 数据报的类别或优先级。目前正在进行不同的通信量类性能的实验。

流标号(flow label)—— 20 位。 “流”是互联网络上从特定源点到特定终点的一系列数据报, “流”所经过的路径上的路由器都保证指明的服务质量。所有属于同

一个流的数据报都具有同样的流标号。

有效载荷长度(payload length)—— 16 位。它指明 IPv6 数据报除基本首部以外的字节数(所有扩展首部都算在有效载荷之内),其最大值是 64 KB。

下一个首部(next header)—— 8 位。它相当于 IPv4 的协议字段或可选字段。

跳数限制(hop limit)—— 8 位。源站在数据报发出时即设定跳数限制。路由器在转发数据报时将跳数限制字段中的值减 1。当跳数限制的值为零时,就要将此

数据报丢弃。

源地址—— 128 位。是数据报的发送站的 IP 地址。

目的地址—— 128 位。是数据报的接收站的 IP 地址。

IPv6的扩展首部
  • IPv6 把原来 IPv4 首部中选项的功能都放在扩展首部中,并将扩展首部留给路径两端的源站和目的站的主机来处理
  • 数据报途中经过的路由器都不处理这些扩展首部(只有一个首部例外,即逐跳选项扩展首部)
  • 这样就大大提高了路由器的处理效率
IPv6的地址
  • IPv6 数据报的目的地址可以是以下三种基本类型地址之一:
    • 单播 (unicast): 传统的点对点通信
    • 多播 (multicast): 一点对多点的通信
    • 任播 (anycast): 这是 IPv6 增加的一种类型。任播的目的站是一组计算机,但数据报在交付时只交付其中的一个,通常是距离最近的一个。
冒号十六进制记法
  • 在 IPv6 中,每个地址占 128 位,地址空间大于 3.41038

  • 为了使地址再稍简洁些,IPv6 使用冒号十六进制记法(colon hexadecimal notation, 简写为 colon hex)
    每个 16 位的值用十六进制值表示,各值之间用冒号分隔。例如:

    68E6:8C64:FFFF:FFFF:0:1180:960A:FFFF

  • 在十六进制记法中,允许把数字前面的 0 省略。例如把 0000 中的前三个 0 省略,写成 1 个 0

零压缩

  • 冒号十六进制记法可以允许零压缩 (zero compression),即一连串连续的零可以为一对冒号所取代。

    FF050:0:0:0:0:0:B3 可压缩为:

    FF05::B3

  • 注意:在任一地址中只能使用一次零压缩

IPv6分类

地址类型二进制前缀
未指明地址00…0(128位),可记为 ::/128
环回地址00…1(128位),可记为 ::1/128
多播地址11111111(8位),可记为 FF00::/8
本地链路单播地址1111111010(10位), 可记为 FE80::/10
全球单播地址(除上述四种外,所有其他的二进制前缀)

未指明地址

  • 这是 16 字节的全 0 地址,可缩写为两个冒号“::”
  • 这个地址只能为还没有配置到一个标准的 IP 地址的主机当作源地址使用
  • 这类地址仅此一个。

环回地址

  • *即 0:0:0:0:0:0:0:1(记为 ::1)。
  • 作用和 IPv4 的环回地址一样。
  • 这类地址也是仅此一个。

多播地址

  • 功能和 IPv4 的一样。
  • 这类地址占 IPv6 地址总数的 1/256。

本地链路单播地址 (Link-Local Unicast Address)

  • 有些单位的网络使用 TCP/IP 协议,但并没有连接到互联网上。连接在这样的网络上的主机都可以使用这种本地地址进行通信,但不能和互联网上的其他主机通信。
  • 这类地址占 IPv6 地址总数的 1/1024。

全球单播地址

  • IPv6 的这一类单播地址是使用得最多的一类。
  • 曾提出过多种方案来进一步划分这 128 位的单播地址。
  • 根据 2006 年发布的草案标准 RFC 4291 的建议, IPv6 单播地址的划分方法非常灵活。
image-20210826181626218

IPv4向IPv6过渡

向 IPv6 过渡只能采用逐步演进的办法,同时,还必须使新安装的 IPv6 系统能够向后兼容:IPv6 系统必须能够接收和转发 IPv4 分组,并且能够为 IPv4 分组选择路由。

两种向 IPv6 过渡的策略:

  • 使用双协议栈(整个IPv6转化为IPv4)
    • 双协议栈 (dual stack) 是指在完全过渡到 IPv6 之前,使一部分主机(或路由器)装有两个协议栈,一个 IPv4 和一个 IPv6
    • 双协议栈的主机(或路由器)记为 IPv6/IPv4,表明它同时具有两种 IP 地址:一个 IPv6 地址和一个 IPv4 地址
    • 双协议栈主机在和 IPv6 主机通信时是采用 IPv6 地址,而和 IPv4 主机通信时就采用 IPv4 地址
    • 根据 DNS 返回的地址类型可以确定使用 IPv4 地址还是 IPv6 地址
image-20210826183857980
  • 使用隧道技术(把IPv6封装成IPv4的数据部分)
    • 在 IPv6 数据报要进入 IPv4 网络时,把 IPv6 数据报封装成为 IPv4 数据报,整个的 IPv6 数据报变成了 IPv4 数据报的数据部分
    • 当 IPv4 数据报离开 IPv4 网络中的隧道时,再把数据部分(即原来的 IPv6 数据报)交给主机的 IPv6 协议栈
image-20210826183946990
ICMPv6
  • IPv6 也不保证数据报的可靠交付,因为互联网中的路由器可能会丢弃数据报
  • 因此 IPv6 也需要使用 ICMP 来反馈一些差错信息。新的版本称为 ICMPv6

地址解析协议 ARP 和网际组管理协议 IGMP 协议的功能都已被合并到 ICMPv6 中

image-20210826185848095

ICMPv6报文的分类

  • CMPv6 是面向报文的协议,它利用报文来报告差错,获取信息,探测邻站或管理多播通信
  • ICMPv6 还增加了几个定义报文的功能及含义的其他协议
image-20210826190015911

IP多播

基本概念

  • IP 多播 (multicast,以前曾译为组播) 已成为互联网的一个热门课题。
    目的:更好第支持一对多通信。
  • 一对多通信:一个源点发送到许多个终点。
    • 例如,实时信息的交付(如新闻、股市行情等),软件更新,交互式会议及其他多媒体通信。
image-20210826214825616

多播IP地址

  • IP 多播所传送的分组需要使用多播 IP 地址
  • 在多播数据报的目的地址写入的是多播组的标识符
  • 多播组的标识符就是 IP 地址中的 D 类地址(多播地址)
  • 每一个 D 类地址标志一个多播组
  • 多播地址只能用于目的地址,不能用于源地址

多播数据报

  • 多播数据报和一般的 IP 数据报的区别就是它使用 D 类 IP 地址作为目的地址,并且首部中的协议字段值是 2,表明使用网际组管理协议 IGMP
  • 多播数据报也是“尽最大努力交付”,不保证一定能够交付多播组内的所有成员
  • 对多播数据报不产生 ICMP 差错报文。因此,若在 PING 命令后面键入多播地址,将永远不会收到响应

在局域网上进行硬件多播

  • 互联网号码指派管理局 IANA 拥有的以太网地址块的高 24 位为 00-00-5E。

  • 因此 TCP/IP 协议使用的以太网地址块的范围是

    • 从 00-00-5E-00-00-00
    • 到 00-00-5E-FF-FF-FF
  • 不难看出,在每一个地址中,只有23位可用作多播。

  • D 类 IP 地址可供分配的有 28 位,在这 28 位中的前 5 位不能用来构成以太网硬件地址。

D IP 地址与以太网多播地址的映射关系

由于多播 IP 地址与以太网硬件地址的映射关系不是唯一的,因此收到多播数据报的主机,还要在 IP 层利用软件进行过滤,把不是本主机要接收的数据报丢弃。

image-20210826223251834

IP 多播需要两种协议

  1. 网际组管理协议 IGMP(Internet Group Management Protocol)

    多播组的多播数据包应该传送到R1、R2、R3、和R4,但是R4所连接的局域网又没有参加多播组的成员,那IGMP就是使多播路由器知道多播组成员信息:

    image-20210826223744529
  2. 反向路径广播PRB(Reverse Path Broadcasting)

    后面…省略

虚拟专用网VPN和网络地址转换NAT

  • 利用公用的互联网作为本机构各专用网之间的通信载体,这样的专用网又称为虚拟专用网VPN (Virtual Private Network)
  • 专用网”是因为这种网络是为本机构的主机用于机构内部的通信,而不是用于和网络外非本机构的主机通信(即是一些银行、政府所用的“内网”数据加密的)
  • 虚拟”表示“好像是”,但实际上并不是,因为现在并没有真正使用通信专线,而VPN只是在效果上和真正的专用网一样

利用隧道技术实现虚拟专用网

image-20210826230653027 image-20210826230702157

网络地址转换NAT

在专用网上使用专用地址的主机如何与互联网上的主机通信(并不需要加密)?

解决:

  1. 再申请一些全球 IP 地址。但这在很多情况下是不容易做到的。
  2. 采用网络地址转换 NAT。这是目前使用得最多的方法。
    • 网络地址转换 NAT (Network Address Translation) 方法于1994年提出。
    • 需要在专用网连接到互联网的路由器上安装 NAT 软件。装有 NAT 软件的路由器叫做 NAT路由器,它至少有一个有效的外部全球IP地址
    • 所有使用本地地址的主机在和外界通信时,都要在 NAT 路由器上将其本地地址转换成全球 IP 地址,才能和互联网连接。

转换过程

image-20210826231658090
  1. 内部主机 A 用本地地址 IPA 和互联网上主机 B 通信所发送的数据报必须经过 NAT 路由器
  2. NAT 路由器将数据报的源地址 IPA转换成全球地址 IPG,并把转换结果记录到NAT地址转换表中,目的地址 IPB 保持不变,然后发送到互联网
  3. NAT 路由器收到主机 B 发回的数据报时,知道数据报中的源地址是 IPB 而目的地址是 IPG
  4. 根据 NAT 转换表,NAT 路由器将目的地址 IPG 转换为 IPA,转发给最终的内部主机 A

可以看出,在内部主机与外部主机通信时,在NAT路由器上发生了两次地址转换:

  • 离开专用网时:替换源地址,将内部地址替换为全球地址;
  • 进入专用网时:替换目的地址,将全球地址替换为内部地址;

多协议标记交换MPLS

  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值