【计网】第四章 网络层


文章目录

  • 网络层
    • 一、网际协议 IP
      • 1.1 虚拟互连网络
      • 1.2 分类的 IP 地址
      • 1.3 IP 地址与硬件地址
      • 1.4 地址解析协议 ARP
      • 1.5 IP 数据报的格式
      • 1.6 IP 层转发分组的流程
    • 二、划分子网和构造超网
      • 2.1 划分子网
      • 2.2 使用子网时分组的转发
      • 2.3 无分类编址 CIDR(构造超网)
    • 三、网际控制报文协议 ICMP
    • 四、互联网的路由选择协议
      • 4.1 有关路由选择协议的几个基本概念
      • 4.2 内部网关协议 RIP
      • 4.3 内部网关协议 OSPF
      • 4.4 外部网关协议 BGP
    • 五、IPV6
      • 5.1 IPv6 的基本首部
      • 5.2 IPv6 的地址
      • 5.3 从 IPv4 向 IPv6 过渡


网络层

链接:https://pan.baidu.com/s/1P39s5e6_-co_WNL1zvrNrQ?pwd=p9v2
提取码:p9v2
–来自百度网盘超级会员V1的分享

一、网际协议 IP

网际协议 IP 是 TCP/IP 体系中两个最主要的协议之一。

与 IP 协议配套使用的还有三个协议:

  • 地址解析协议 ARP (Address Resolution Protocol)
  • 网际控制报文协议 ICMP (Internet Control Message Protocol)
  • 网际组管理协议 IGMP (Internet Group Management Protocol)

网际层的 IP 协议及配套协议

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-O5t8Qw0W-1687080353254)(https://fastly.jsdelivr.net/gh/Code-for-dream/Blogimages/img/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/image-20230423221300541.png)]

1.1 虚拟互连网络

1、将网络互连并能够互相通信,会遇到许多问题需要解决,如:

  • 不同的寻址方案
  • 不同的最大分组长度
  • 不同的网络接入机制
  • 不同的超时控制
  • 不同的差错恢复方法
  • 不同的状态报告方法
  • 不同的路由选择技术
  • 不同的用户接入控制
  • 不同的服务(面向连接服务和无连接服务)
  • 不同的管理与控制方式等

2、将网络互相连接起来要使用一些中间设备,中间设备又称为中间系统或中继 (relay)系统,有以下几种不同的中间设备:

  • 物理层中继系统:转发器 (repeater)
  • 数据链路层中继系统:交换机(bridge)
  • 网络层中继系统:路由器 (router)

现在网络互连都是指用路由器进行网络互连和路由选择。

3、互连网络与虚拟互连网络

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sEckKxGb-1687080353255)(https://fastly.jsdelivr.net/gh/Code-for-dream/Blogimages/img/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/image-20230423221730231.png)]

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

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

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1Zcf5h27-1687080353255)(https://fastly.jsdelivr.net/gh/Code-for-dream/Blogimages/img/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/image-20230423221512835.png)]

直接交付:发送数据报接口的IP地址与目的主机IP地址在同一个网络中时,也就是发送端接口IP地址和子网掩码按位“与”操作的结果等于目的主机的IP地址和子网掩码按位“与”操作的结果。则发送端接口直接将IP数据报发送到目的主机。

间接交付:发送数据报接口IP地址与目的IP地址不在同一个网络中,则发送端接口需要发送IP数据报到与下一个路由器相连的端口。在数据报间接交付过程中,在同一个网络内使用物理地址(MAC地址)转发,只有通过路由器在不同网络中转发时才使用IP地址。

如果我们只从网络层考虑问题,那么 IP 数据报就可以想象是在网络层中传送:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Q6Bx02fn-1687080353256)(https://fastly.jsdelivr.net/gh/Code-for-dream/Blogimages/img/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/image-20230423223527190.png)]

1.2 分类的 IP 地址

1、IP 地址及其表示方法

我们把整个因特网看成为一个单一的、抽象的网络。IP 地址就是给每个连接在互联网上的主机(或路由器)分配一个在全世界范围是唯一的 32 位的标识符。

IP 地址现在由互联网名字和数字分配机构ICANN (Internet Corporation for Assigned Names and Numbers)进行分配。

2、IP 地址的编址方法

  • 分类的 IP 地址:这是最基本的编址方法,在 1981 年就通过了相应的标准协议。
  • 子网的划分:这是对最基本的编址方法的改进,其标准 [RFC 950] 在 1985 年通过。
  • 构成超网:这是比较新的无分类编址方法。 1993 年提出后很快就得到推广应用。

3、分类 IP 地址

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

这种两级的 IP 地址结构如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tA3laVY7-1687080353257)(https://fastly.jsdelivr.net/gh/Code-for-dream/Blogimages/img/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/image-20230423223839714.png)]

这种两级的 IP 地址可以记为:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-roXEu9Th-1687080353257)(https://fastly.jsdelivr.net/gh/Code-for-dream/Blogimages/img/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/image-20230423223849064.png)]

4、各类 IP 地址的网络号字段和主机号字段

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DBRVTxIR-1687080353258)(https://fastly.jsdelivr.net/gh/Code-for-dream/Blogimages/img/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/image-20230423223910567.png)]

  • A 类地址的网络号字段 net-id 为 1 字节
  • B 类地址的网络号字段 net-id 为 2 字节
  • C 类地址的网络号字段 net-id 为 3 字节

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Citun5k3-1687080353258)(https://fastly.jsdelivr.net/gh/Code-for-dream/Blogimages/img/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/image-20230423224101625.png)]

5、常用的三种类别的IP地址:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PS6MFJIf-1687080353260)(https://fastly.jsdelivr.net/gh/Code-for-dream/Blogimages/img/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/image-20230423224341285.png)]

6、特殊IP地址:

1.直接广播地址

  • A,B,C类网络 中主机部分为全1的 为广播地址如 192.168.1.255 是C类地址 ,这是个广播地址 ,向192.168.1.0 网络中所有主机广播;

2.受限的广播地址

  • 如果目的地址为 255.255.255.255 ,只是向本网络内的所有主机广播。 (不能到另一个网络)

3.环回地址

  • 如果地址为 127.0.0.1 ,表示是环回地址,用作本地软件环回测试之用。

7、IP 地址的一些重要特点

(1) IP 地址是一种分等级的地址结构。

(2) 实际上 IP 地址是标志一个主机(或路由器)和一条链路的连接

(3) 用网桥、交换机连接起来的若干个局域网仍为一个网络,因此这些局域网都具有同样的网络号 。

(4) 所有分配到网络号的网络,无论是范围很小的局域网,还是可能覆盖很大地理范围的广域网,都是平等的。

(5) 在同一个局域网上的主机或路由器的IP 地址中的网络号必须是一样的。

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

1.3 IP 地址与硬件地址

IP 地址与硬件地址是不同的地址。

从层次的角度看:

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-J7IU8ZhM-1687080353261)(https://fastly.jsdelivr.net/gh/Code-for-dream/Blogimages/img/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/image-20230423225727603.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SFWP5Skc-1687080353262)(https://fastly.jsdelivr.net/gh/Code-for-dream/Blogimages/img/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/image-20230423225842473.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Yy135tx2-1687080353264)(https://fastly.jsdelivr.net/gh/Code-for-dream/Blogimages/img/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/image-20230423225901207.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eTjpHyrM-1687080353265)(https://fastly.jsdelivr.net/gh/Code-for-dream/Blogimages/img/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/image-20230423225935459.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BSvorPDT-1687080353266)(https://fastly.jsdelivr.net/gh/Code-for-dream/Blogimages/img/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/image-20230423230156660.png)]

1.4 地址解析协议 ARP

通信时使用了两个地址:

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DUZRnHrs-1687080353267)(https://fastly.jsdelivr.net/gh/Code-for-dream/Blogimages/img/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/image-20230423230229490.png)]

每个接口都有两个地址 !

1、地址解析协议 ARP 的作用

  • 已经知道了一个机器(主机或路由器)的IP地址,找出其相应的硬件地址

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pdG19thH-1687080353268)(https://fastly.jsdelivr.net/gh/Code-for-dream/Blogimages/img/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/image-20230423230429196.png)]

2、地址解析协议 ARP 要点

不管网络层使用的是什么协议,在实际网络的链路上传送数据帧时,最终还是必须使用硬件地址。

每一个主机都设有一个 ARP 高速缓存 (ARP cache),里面有所在的局域网上的各主机和路由器的 IP 地址到硬件地址的映射表。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3ONqDAeN-1687080353268)(https://fastly.jsdelivr.net/gh/Code-for-dream/Blogimages/img/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/image-20230423230515576.png)]

当主机 A 欲向本局域网上的某个主机 B 发送 IP 数据报时,就先在其 ARP 高速缓存中查看有无主机 B 的 IP 地址。

  • 如有,就可查出其对应的硬件地址,再将此硬件地址写入 MAC 帧,然后通过局域网将该 MAC 帧发往此硬件地址。

  • 如没有, ARP 进程在本局域网上广播发送一个 ARP 请求分组。收到 ARP 响应分组后,将得到的 IP 地址到硬件地址的映射写入 ARP 高速缓存。

ARP请求分组:包含发送方硬件地址 / 发送方 IP 地址 / 目标方硬件地址(未知时填 0) / 目标方 IP 地址。

本地广播 ARP 请求(路由器不转发ARP请求)。

ARP 响应分组:包含发送方硬件地址 / 发送方 IP地址 / 目标方硬件地址 / 目标方 IP 地址。

ARP 分组封装在物理网络的帧中传输。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gKvV2FQW-1687080353270)(https://fastly.jsdelivr.net/gh/Code-for-dream/Blogimages/img/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/image-20230423230837881.png)]

3、ARP 高速缓存的作用

  • 存放最近获得的 IP 地址到 MAC 地址的绑定,以减少 ARP 广播的数量。
  • 为了减少网络上的通信量,主机 A 在发送其 ARP 请求分组时,就将自己的 IP 地址到硬件地址的映射写入 ARP 请求分组。
  • 当主机 B 收到 A 的 ARP 请求分组时,就将主机 A 的这一地址映射写入主机 B 自己的 ARP 高速缓存中。这对主机 B 以后向 A 发送数据报时就更方便了。

4、ARP缓存可以查看、添加和修改

  • “arp -a"命令可以查看ARP缓存中的内容
  • “arp -d"命令可以删除ARP缓存中所有的内容。
  • “arp -s"命令可以在ARP缓存中添加IP地址与MAC地址的映射关系,类型为static(静态)

注意点

1、ARP 是解决同一个局域网上的主机或路由器的 IP 地址和硬件地址的映射问题。

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

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

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

5、使用 ARP 的四种典型情况

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8b0mkjrD-1687080353271)(https://fastly.jsdelivr.net/gh/Code-for-dream/Blogimages/img/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/image-20230423231249387.png)]

  1. 发送方是主机,要把 IP 数据报发送到本网络上的另一个主机这时用 ARP 找到目的主机的硬件地址。(如H1->H2)

  2. 发送方是主机,要把 IP 数据报发送到另一个网络上的一个主机。这时用 ARP 找到本网络上的一个路由器的硬件地址。剩下的工作由这个路由器来完成。 (如H1->H3或 H1->H4)

  3. 发送方是路由器,要把 IP 数据报转发到本网络上的一个主机。这时用 ARP 找到目的主机的硬件地址.(如R1-H3 )

  4. 发送方是路由器,要把 IP 数据报转发到另一个网络上的一个主机。这时用 ARP 找到本网络上另一个路由器的硬件地址。剩下的工作由这个路由器来完成。(R1->H4)

1.5 IP 数据报的格式

1、一个 IP 数据报由首部和数据两部分组成。

2、首部的前一部分是固定长度,共 20 字节,是所有 IP 数据报必须具有的。

3、在首部的固定部分的后面是一些可选字段,其长度是可变的。

IP 数据报由首部和数据两部分组成

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fG18nE5r-1687080353272)(https://fastly.jsdelivr.net/gh/Code-for-dream/Blogimages/img/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/image-20230423231446781.png)]

首部的前一部分是固定长度,共 20 字节,是所有 IP 数据报必须具有的。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PIrRm9yU-1687080353274)(https://fastly.jsdelivr.net/gh/Code-for-dream/Blogimages/img/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/image-20230423231504770.png)]

可选字段,其长度是可变的

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MfRFhVb3-1687080353276)(https://fastly.jsdelivr.net/gh/Code-for-dream/Blogimages/img/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/image-20230423231522735.png)]

4、IP 数据报首部的固定部分中的各字段

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wCKe4ZiC-1687080353277)(https://fastly.jsdelivr.net/gh/Code-for-dream/Blogimages/img/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/image-20230423231622994.png)]

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

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

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

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

标识(identification) ——占 16 位,它是一个计数器,用来产生 IP 数据报的标识。

标志(flag) ——占 3 位,目前只有前两位有意义。标志字段的最低位是 MF (More Fragment)。MF  1 表示后面“还有分片”。MF  0 表示最后一个分片。标志字段中间的一位是 DF (Don’t Fragment) 。只有当 DF  0 时才允许分片。

片偏移——占13 位,指出:较长的分组在分片后某片在原分组中的相对位置。片偏移以 8 个字节为偏移单位。

生存时间——占8 位,记为 TTL (Time To Live),指示数据报在网络中可通过的路由器数的最大值。

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

首部检验和——占16 位,只检验数据报的首部,不检验数据部分。这里不采用 CRC 检验码而采用简单的计算方法。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1buE97r5-1687080353278)(https://fastly.jsdelivr.net/gh/Code-for-dream/Blogimages/img/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/image-20230424160227578.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-015HLBaN-1687080353278)(https://fastly.jsdelivr.net/gh/Code-for-dream/Blogimages/img/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/image-20230424160247712.png)]

源地址目的地址都各占 4 字节

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8e4WsBbc-1687080353279)(https://fastly.jsdelivr.net/gh/Code-for-dream/Blogimages/img/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/image-20230424160024020.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eQLBFroW-1687080353280)(https://fastly.jsdelivr.net/gh/Code-for-dream/Blogimages/img/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/image-20230424160035806.png)]

1.6 IP 层转发分组的流程

假设:有四个 A 类网络通过三个路由器连接在一起。每一个网络上都可能有成千上万个主机。

可以想像,若按目的主机号来制作路由表,每一个路由表就有 4 万个项目,即 4 万行(每一行对应于一台主机),则所得出的路由表就会过于庞大。

但若按主机所在的网络地址来制作路由表,那么每一个路由器中的路由表就只包含 4 个项目(每一行对应于一个网络),这样就可使路由表大大简化。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-o16f6zj1-1687080353280)(https://fastly.jsdelivr.net/gh/Code-for-dream/Blogimages/img/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/image-20230424160414692.png)]

1、查找路由表

根据目的网络地址就能确定下一跳路由器,这样做的结果是:IP 数据报最终一定可以找到目的主机所在目的网络上的路由器(可能要通过多次的间接交付)。只有到达最后一个路由器时,才试图向目的主机进行直接交付。

2、特定主机路由

虽然互联网所有的分组转发都是基于目的主机所在的网络,但在大多数情况下都允许有这样的特例,即为特定的目的主机指明一个路由。

采用特定主机路由可使网络管理人员能更方便地控制网络和测试网络,同时也可在需要考虑某种安全问题时采用这种特定主机路由。

3、默认路由 (default route)

路由器还可采用默认路由以减少路由表所占用的空间和搜索路由表所用的时间。

这种转发方式在一个网络只有很少的对外连接时是很有用的。

默认路由在主机发送 IP 数据报时往往更能显示出它的好处。

如果一个主机连接在一个小网络上,而这个网络只用一个路由器和互联网连接,那么在这种情况下使用默认路由是非常合适的。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gFe25J1U-1687080353281)(https://fastly.jsdelivr.net/gh/Code-for-dream/Blogimages/img/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/image-20230424160721676.png)]

4、转发的实际过程

IP 数据报的首部中没有地方可以用来指明“下一跳路由器的 IP 地址”。

当路由器收到待转发的数据报,不是将下一跳路由器的 IP 地址填入 IP 数据报,而是送交下层的网络接口软件。

网络接口软件使用 ARP 负责将下一跳路由器的 IP 地址转换成硬件地址,并将此硬件地址放在链路层的 MAC 帧的首部,然后根据这个硬件地址找到下一跳路由器。

5、路由器分组转发算法

(1) 从数据报的首部提取目的主机的 IP 地址 D, 得出目的网络地址为 N。

(2) 若网络 N 与此路由器直接相连,则把数据报直接交付目的主机 D;否则是间接交付,执行 (3)。

(3) 若路由表中有目的地址为 D 的特定主机路由,则把数据报传送给路由表中所指明的下一跳路由器;否则,执行 (4)。

(4) 若路由表中有到达网络 N 的路由,则把数据报传送给路由表指明的下一跳路由器;否则,执行 (5)。

(5) 若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器;否则,执行 (6)。

(6) 报告转发分组出错。

路由表没有给分组指明到某个网络的完整路径。路由表指出,到某个网络应当先到某个路由器(即下一跳路由器)。在到达下一跳路由器后,再继续查找其路由表,知道再下一步应当到哪一个路由器。这样一步一步地查找下去,直到最后到达目的网络。

二、划分子网和构造超网

2.1 划分子网

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

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

(1) IP 地址空间的利用率有时很低。

(2) 给每一个物理网络分配一个网络号会使路由表变得太大因而使网络性能变坏。

(3) 两级的 IP 地址不够灵活。

2、三级 IP 地址

从 1985 年起在 IP 地址中又增加了一个“子网号字段”,使两级的 IP 地址变成为三级的 IP 地址。这种做法叫做划分子网 (subnetting) 。划分子网已成为互联网的正式标准协议。

3、划分子网的基本思路

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

  • 从主机号借用若干个位作为子网号 subnet-id,而主机号 host-id 也就相应减少了若干个位。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-e07febsH-1687080353281)(https://fastly.jsdelivr.net/gh/Code-for-dream/Blogimages/img/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/image-20230424161448311.png)]

  • 凡是从其他网络发送给本单位某个主机的 IP 数据报,仍然是根据 IP 数据报的目的网络号 net-id,先找到连接在本单位网络上的路由器。

  • 然后此路由器在收到 IP 数据报后,再按目的网络号 net-id 和子网号 subnet-id 找到目的子网。

  • 最后就将 IP 数据报直接交付目的主机。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-c9agG9AO-1687080353282)(https://fastly.jsdelivr.net/gh/Code-for-dream/Blogimages/img/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/image-20230424161606558.png)]

当没有划分子网时,IP 地址是两级结构。

划分子网后 IP 地址就变成了三级结构。

划分子网只是把 IP 地址的主机号 host-id 这部分进行再划分,而不改变 IP 地址原来的网络号 net-id。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4wbE1Goh-1687080353283)(https://fastly.jsdelivr.net/gh/Code-for-dream/Blogimages/img/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/image-20230424161628552.png)]

优点:

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

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

3、子网掩码

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

规则:

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iB8RsddV-1687080353284)(https://fastly.jsdelivr.net/gh/Code-for-dream/Blogimages/img/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/image-20230424161807200.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Y6yqRO7o-1687080353284)(https://fastly.jsdelivr.net/gh/Code-for-dream/Blogimages/img/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/image-20230424161836708.png)]

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SmdhejWU-1687080353285)(https://fastly.jsdelivr.net/gh/Code-for-dream/Blogimages/img/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/image-20230424161931812.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7vTprtph-1687080353285)(https://fastly.jsdelivr.net/gh/Code-for-dream/Blogimages/img/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/image-20230424162000644.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DtgG0Uwt-1687080353286)(https://fastly.jsdelivr.net/gh/Code-for-dream/Blogimages/img/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/image-20230424162059435.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XAZP5nWS-1687080353287)(https://fastly.jsdelivr.net/gh/Code-for-dream/Blogimages/img/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/image-20230424162139424.png)]

2.2 使用子网时分组的转发

(1) 从收到的分组的首部提取目的 IP 地址 D。

(2) 先用 本网络的子网掩码和 D 逐位相“与”,看是否和相应的网络地址匹配。若匹配,则将分组直接交付。否则就是间接交付,执行 (3)。

(3) 若路由表中有目的地址为 D 的特定主机路由,则将分组传送给 指明的下一跳路由器;否则,执行 (4)。

(4) 对路由表中的每一行,将子网掩码和 D 逐位相“与”。若结果与该行的目的网络地址匹配,则将分组传送给该行指明的下一跳路由器;否则,执行 (5)。

(5) 若路由表中有一个默认路由,则将分组传送给路由表中所指明 的默认路由器;否则,执行 (6)。

(6) 报告转发分组出错。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7TWvijXj-1687080353288)(https://fastly.jsdelivr.net/gh/Code-for-dream/Blogimages/img/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/image-20230424162250132.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8iyaHJsP-1687080353288)(https://fastly.jsdelivr.net/gh/Code-for-dream/Blogimages/img/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/image-20230424162300245.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sdi0haBG-1687080353289)(https://fastly.jsdelivr.net/gh/Code-for-dream/Blogimages/img/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/image-20230424162307529.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2Ukvs1Gz-1687080353290)(https://fastly.jsdelivr.net/gh/Code-for-dream/Blogimages/img/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/image-20230424162322349.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-frDIA8bP-1687080353292)(https://fastly.jsdelivr.net/gh/Code-for-dream/Blogimages/img/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/image-20230424162334435.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IVYe2Mxx-1687080353293)(https://fastly.jsdelivr.net/gh/Code-for-dream/Blogimages/img/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/image-20230424162341656.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dNeXdcHd-1687080353294)(https://fastly.jsdelivr.net/gh/Code-for-dream/Blogimages/img/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/image-20230424162352460.png)]

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

划分子网在一定程度上缓解了互联网在发展中遇到的困难。互联网仍然面临三个必须尽早解决的问题:

(1) B 类地址在 1992 年已分配了近一半;

(2) 互联网主干网上的路由表中的项目数急剧增长(从几千个增长到几万个)。(3) 整个 IPv4 的地址空间最终将全部耗尽。无分类域间编址CIDR (Classless Inter-Domain Routing)。

1、CIDR 最主要的特点

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

2、无分类的两级编址

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-m3O0aPP3-1687080353295)(https://fastly.jsdelivr.net/gh/Code-for-dream/Blogimages/img/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/image-20230525151944637.png)]

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

**3、CIDR 地址块 **

  • CIDR 把网络前缀都相同的连续的 IP 地址组成“CIDR 地址块”。

  • 128.14.32.0/20 表示的地址块共有 2^duia12 个地址(因为斜线后面的 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 的主机号地址一般不使用。

    • 计算过程:128.14.32.0/20= 10000000 00001110 00100000 00000000

      128.14.32.0/20 地址块的最小可用地址:

      10000000 00001110 00100000 00000001

      128.14.32.0/20 地址块的最大可用地址:

      10000000 00001110 00101111 11111110

      128.14.32.0/20 地址块的最小可用地址:128.14.32.1

      128.14.32.0/20 地址块的最大可用地址:128.14.47.254

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1llcHT0E-1687080353296)(https://fastly.jsdelivr.net/gh/Code-for-dream/Blogimages/img/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/image-20230525153558890.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mgAzlGwx-1687080353298)(https://fastly.jsdelivr.net/gh/Code-for-dream/Blogimages/img/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/image-20230525153641980.png)]

4、路由聚合

  • 一个 CIDR 地址块可以表示很多地址,这种地址的聚合常称为路由聚合,它使得路由表中的一个项目可以表示很多个(例如上千个)原来传统分类地址的路由。
  • 路由聚合有利于减少路由表中的表项,从而提高了整个互联网的性能。
  • CIDR 虽然不使用子网了,但仍然使用“掩码”这一名词(但不叫子网掩码)。
  • 对于 /20 地址块,它的掩码是 20 个连续的 1。 斜线记法中的数字就是掩码中1的个数。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fTPJZ5tM-1687080353299)(https://fastly.jsdelivr.net/gh/Code-for-dream/Blogimages/img/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/image-20230525153809017.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JHHBPuKf-1687080353300)(https://fastly.jsdelivr.net/gh/Code-for-dream/Blogimages/img/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/image-20230525160015227.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SlGE3Kix-1687080353301)(https://fastly.jsdelivr.net/gh/Code-for-dream/Blogimages/img/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/image-20230525155933261.png)]

**5、构成超网 **

  • 前缀长度不超过 23 位的 CIDR 地址块都包含了多个 C 类地址。
  • 这些 C 类地址合起来就构成了超网。
  • CIDR 地址块中的地址数一定是 2 的整数次幂。
  • 网络前缀越短,其地址块所包含的地址数就越多。
  • CIDR 的一个好处是:可以更加有效地分配 IPv4 的地址空间,可根据客户的需要分配适当大小的 CIDR 地址块。

三、网际控制报文协议 ICMP

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

1、ICMP 报文的格式

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rWR2mPMt-1687080353303)(https://fastly.jsdelivr.net/gh/Code-for-dream/Blogimages/img/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/image-20230525160243441.png)]

2、ICMP 报文的种类

  • ICMP 报文的种类有两种,即 ICMP 差错报告报文ICMP 询问报文

  • ICMP 报文的前 4 个字节是统一的格式,共有三个字段:即类型、代码和检验和。接着的 4 个字节的内容与 ICMP 的类型有关。

  • ICMP 差错报告报文共有 4 种

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-F28y7ZpW-1687080353305)(https://fastly.jsdelivr.net/gh/Code-for-dream/Blogimages/img/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/image-20230525160702817.png)]

  • ICMP 差错报告报文的数据字段的内容

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-H7Nxk26q-1687080353311)(https://fastly.jsdelivr.net/gh/Code-for-dream/Blogimages/img/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/image-20230525160728982.png)]

  • ICMP 询问报文有两种

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-veGm890x-1687080353312)(https://fastly.jsdelivr.net/gh/Code-for-dream/Blogimages/img/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/image-20230525160948019.png)]

3、ICMP 的应用举例

  • PING (Packet InterNet Groper)

    • PING 用来测试两个主机之间的连通性。

    • PING 使用了 ICMP 回送请求与回送回答报文。

    • PING 是应用层直接使用网络层 ICMP 的例子,它没有通过运输层的 TCP 或UDP。

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vsafeXJH-1687080353313)(https://fastly.jsdelivr.net/gh/Code-for-dream/Blogimages/img/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/image-20230525161038723.png)]

四、互联网的路由选择协议

4.1 有关路由选择协议的几个基本概念

  1. 理想的路由算法算法必须是正确的和完整的。
  2. 算法在计算上应简单。
  3. 算法应能适应通信量和网络拓扑的变化,这就是说,要有自适应性。
  4. 算法应具有稳定性。
  5. 算法应是公平的。
  6. 算法应是最佳的。

1、从路由算法的自适应性考虑

  • 静态路由选择策略——即非自适应路由选择,其特点是简单和开销较小,但不能及时适应网络状态的变化。
  • 动态路由选择策略——即自适应路由选择,其特点是能较好地适应网络状态的变化,但实现起来较为复杂,开销也比较大。

2、分层次的路由选择协议

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

  • 自治系统 (AS) 的定义:在单一的技术管理下的一组路由器,而这些路由器使用一种 AS 内部的路由选择协议和共同的度量以确定分组在该 AS 内的路由,同时还使用一种 AS 之间的路由选择协议用以确定分组在 AS之间的路由。

  • 重要的是一个 AS 对其他 AS 表现出的是一个单一的和一致的路由选择策略。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8kzI546k-1687080353314)(https://fastly.jsdelivr.net/gh/Code-for-dream/Blogimages/img/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/image-20230525161408530.png)]

3、互联网有两大类路由选择协议

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OAG74H0k-1687080353315)(https://fastly.jsdelivr.net/gh/Code-for-dream/Blogimages/img/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/image-20230525161508729.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jCurvo0v-1687080353316)(https://fastly.jsdelivr.net/gh/Code-for-dream/Blogimages/img/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/image-20230525161544223.png)]

4.2 内部网关协议 RIP

1、工作原理

  • 路由信息协议 RIP (Routing Information Protocol) 是内部网关协议 IGP 中最先得到广泛使用的协议。
  • RIP 是一种分布式的、基于距离向量的路由选择协议。
  • RIP 协议要求网络中的每一个路由器都要维护从它自己到其他每一个目的网络的距离记录。

**2、“距离”的定义 **

  • 从一个路由器到直接连接的网络的距离定义为 1。
  • 从一个路由器到非直接连接的网络的距离定义为所经过的路由器数加 1。
  • RIP 协议中的“距离”也称为“跳数”(hop count),因为每经过一个路由器,跳数就加 1。
  • 这里的“距离”实际上指的是“最短距离”
  • RIP 认为一个好的路由就是它通过的路由器的数目少,即“距离短”。
  • RIP 允许一条路径最多只能包含 15 个路由器。
  • “距离”的最大值为 16 时即相当于不可达。可见 RIP 只适用于小型互联网。
  • RIP 不能在两个网络之间同时使用多条路由。RIP 选择一个具有最少路由器的路由(即最短路由),哪怕还存在另一条高速(低时延)但路由器较多的路由。

3、RIP 协议的三个特点

(1) 仅和相邻路由器交换信息。

(2) 交换的信息是当前本路由器所知道的全部信息,即自己的路由表。

(3) 按固定的时间间隔交换路由信息,例如,每隔 30 秒。当网络拓扑发生变化时,路由器也及时向相邻路由器通告拓扑变化后的路由信息。

4、路由表的建立

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

5、距离向量算法

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8G3tvrqV-1687080353316)(https://fastly.jsdelivr.net/gh/Code-for-dream/Blogimages/img/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/image-20230525161919529.png)]

这种算法的要点是这样的:设X是结点 A 到 B 的最短路径上的一个结点。若把路径 A→B 拆成两段路径 A→X 和 X→B,则每一段路径 A→X 和 X→B 也都分别是结点 A 到 X 和结点 X 到 B 的最短路径。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-g8cRRPvl-1687080353317)(https://fastly.jsdelivr.net/gh/Code-for-dream/Blogimages/img/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/image-20230525161948190.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qLUKB8bW-1687080353318)(https://fastly.jsdelivr.net/gh/Code-for-dream/Blogimages/img/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/image-20230525163401102.png)]

6、RIP2 协议的报文格式

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3yP6GGeV-1687080353318)(https://fastly.jsdelivr.net/gh/Code-for-dream/Blogimages/img/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/image-20230525163500237.png)]

RIP2 报文由首部和路由部分组成。

RIP2 报文中的路由部分由若干个路由信息组成。每个路由信息需要用 20 个字节。

路由标记填入自治系统的号码,这是考虑使 RIP 有可能收到本自治系统以外的路由选择信息。

再后面指出某个网络地址、该网络的子网掩码、下一跳路由器地址以及到此网络的距离。

RIP 协议特点:好消息传播得快,坏消息传播得慢。

RIP 存在的一个问题:当网络出现故障时,要经过比较长的时间 (例如数分钟) 才能将此信息传送到所有的路由器。

优点:

  • 实现简单,开销较小。

缺点:

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

4.3 内部网关协议 OSPF

开放最短路径优先 OSPF (Open Shortest Path First)是为克服 RIP 的缺点在 1989 年开发出来的。OSPF 的原理很简单,但实现起来却较复杂。

1、OSPF 协议的基本特点

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

2、OSPF 路由协议三个要点

  1. 向本自治系统中所有路由器发送信息,这里使用的方法是洪泛法。

  2. 发送的信息就是与本路由器相邻的所有路由器的链路状态,但这只是路由器所知道的部分信息。

    • “链路状态”就是说明本路由器都和哪些路由器相邻,以及该链路的“度量”(metric)。
  3. 只有当链路状态发生变化时,路由器才用洪泛法向所有路由器发送此信息。

**3、链路状态数据库 (link-state database) **

  • 由于各路由器之间频繁地交换链路状态信息,因此所有的路由器最终都能建立一个链路状态数据库。
  • 这个数据库实际上就是全网的拓扑结构图,它在全网范围内是一致的(这称为链路状态数据库的同步)。
  • OSPF 的链路状态数据库能较快地进行更新,使各个路由器能及时更新其路由表。OSPF 的更新过程收敛得快是其重要优点。

4、路由选择算法常用的度量标准

(1)带宽(bandwidth):链路的数据容量。

(2)延迟(delay):分组沿着从源到目的的每条链路移动所需的时间。

(3)负载(load):网络资源的活动量。

(4)跳数(hop count):分组到达目的地之前必须经过的路由器个数。

(5)代价(cost):由管理员指派的基于带宽、花费等的度量值。

**5、OSPF 的区域 (area) **

  • 为了使 OSPF 能够用于规模很大的网络,OSPF 将一个自治系统再划分为若干个更小的范围,叫做区域。
  • 每一个区域都有一个 32 位的区域标识符(用点分十进制表示)。
  • 区域也不能太大,在一个区域内的路由器最好不超过 200 个。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Z1Nn5Dwf-1687080353319)(https://fastly.jsdelivr.net/gh/Code-for-dream/Blogimages/img/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/image-20230525164004525.png)]

划分区域的好处就是将利用洪泛法交换链路状态信息的范围局限于每一个区域而不是整个的自治系统,这就减少了整个网络上的通信量。

在一个区域内部的路由器只知道本区域的完整网络拓扑,而不知道其他区域的网络拓扑的情况。

OSPF 使用层次结构的区域划分。在上层的区域叫做主干区域 (backbone area)。

主干区域的标识符规定为0.0.0.0。主干区域的作用是用来连通其他在下层的区域。

**6、OSPF 其他特点 **

  • OSPF 不用 UDP 而是直接用 IP 数据报传送。
  • OSPF 构成的数据报很短。这样做可减少路由信息的通信量。
  • OSPF 对不同的链路可根据 IP 分组的不同服务类型 而设置成不同的度量值。因此,OSPF 对于不同类型的业务可计算出不同的路由。
  • 支持可变长度的子网划分和无分类编址 CIDR。
  • OSPF 还规定每隔一段时间,如 30 分钟,要刷新一次数据库中的链路状态。 由于一个路由器的链路状态只涉及到与相邻路由器的连通状态。因此当互联网规模很大时,OSPF 协议要比距离向量协议 RIP 好得多。 OSPF 没有“坏消息传播得慢”的问题,据统计,其响应网络变化的时间小于 100 ms。

**7、OSPF 分组 **

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DxU0OiTm-1687080353320)(https://fastly.jsdelivr.net/gh/Code-for-dream/Blogimages/img/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/image-20230525164222901.png)]

OSPF 的五种分组类型

  • 类型1,问候 (Hello) 分组。

  • 类型2,数据库描述 (Database Description) 分组。

  • 类型3,链路状态请求 (Link State Request) 分组。

  • 类型4,链路状态更新 (Link State Update) 分组,用洪泛法对全网更新链路状态。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DnROTttl-1687080353321)(https://fastly.jsdelivr.net/gh/Code-for-dream/Blogimages/img/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/image-20230525164328003.png)]

  • 类型5,链路状态确认 (Link State Acknowledgment) 分组。

OSPF 的基本操作

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2o9aBdhP-1687080353322)(https://fastly.jsdelivr.net/gh/Code-for-dream/Blogimages/img/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/image-20230525164305175.png)]

4.4 外部网关协议 BGP

BGP 是不同自治系统的路由器之间交换路由信息的协议。 BGP 较新版本是 2006 年 1 月发表的 BGP-4(BGP 第 4 个版本),即 RFC 4271 ~ 4278。 可以将 BGP-4 简写为 BGP。

1、BGP 使用环境不同

  • 互联网的规模太大,使得自治系统之间路由选择非常困难。对于自治系统之间的路由选择,要寻找最佳路由是很不现实的。当一条路径通过几个不同 AS 时,要想对这样的路径计算出有意义的代价是不太可能的。比较合理的做法是在 AS 之间交换“可达性”信息。
  • 自治系统之间的路由选择必须考虑有关策略。
  • 因此,边界网关协议 BGP 只能是力求寻找一条能够到达目的网络且比较好的路由(不能兜圈子),而并非要寻找一条最佳路由。

2、BGP 发言人

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

3、BGP 交换路由信息

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

4、BGP 发言人和自治系统 AS 的关系

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6uYEAvoX-1687080353322)(https://fastly.jsdelivr.net/gh/Code-for-dream/Blogimages/img/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/image-20230525164612896.png)]

**AS 的连通图举例 **

BGP 所交换的网络可达性的信息就是要到达某个网络所要经过的一系列 AS。

当 BGP 发言人互相交换了网络可达性的信息后,各 BGP 发言人就根据所采用的策略从收到的路由信息中找出到达各 AS 的较好路由。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jHauZYqa-1687080353324)(https://fastly.jsdelivr.net/gh/Code-for-dream/Blogimages/img/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/image-20230525164702395.png)]

BGP 发言人交换路径向量

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7Wbg5bVa-1687080353325)(https://fastly.jsdelivr.net/gh/Code-for-dream/Blogimages/img/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/image-20230525164724108.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-M9cQvgd2-1687080353326)(https://fastly.jsdelivr.net/gh/Code-for-dream/Blogimages/img/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/image-20230525164739979.png)]

5、BGP 协议的特点

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

6、BGP-4 共使用四种报文

(1) 打开 (OPEN) 报文,用来与相邻的另一个BGP发言人建立关系。

(2) 更新 (UPDATE) 报文,用来发送某一路由的信息,以及列出要撤消的多条路由。

(3) 保活 (KEEPALIVE) 报文,用来确认打开报文和周期性地证实邻站关系。

(4) 通知 (NOTIFICATION) 报文,用来发送检测到的差错。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rg3MaJKQ-1687080353327)(https://fastly.jsdelivr.net/gh/Code-for-dream/Blogimages/img/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/image-20230525164835172.png)]

五、IPV6

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

IPv6 仍支持无连接的传送,但将协议数据单元 PDU 称为分组。为方便起见,本书仍采用数据报这一名词。所引进的主要变化如下:

  • 更大的地址空间。IPv6 将地址从 IPv4 的 32 位 增大到了 128 位。
  • 扩展的地址层次结构。
  • 灵活的首部格式。 IPv6 定义了许多可选的扩展首部。
  • 改进的选项。 IPv6 允许数据报包含有选项的控制信息,其选项放在有效载荷中。

所引进的主要变化如下(续):

  • 允许协议继续扩充。 支持即插即用(即自动配置)。因此 IPv6 不需要使用 DHCP。
  • 支持资源的预分配。 IPv6 支持实时视像等要求,保证一定的带宽和时延的应用。
  • IPv6 首部改为 8 字节对齐。首部长度必须是 8 字节的整数倍。原来的 IPv4 首部是 4 字节对齐。

5.1 IPv6 的基本首部

1、IPv6 数据报的一般形式

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

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

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qWXx5lPj-1687080353327)(https://fastly.jsdelivr.net/gh/Code-for-dream/Blogimages/img/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/image-20230525165041347.png)]

IPv6 将首部长度变为固定的 40 字节,称为基本首部。把首部中不必要的功能取消了,使得 IPv6 首部的字段数减少到只有 8 个。IPv6 对首部中的某些字段进行了如下的更改:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7GLA7pEq-1687080353328)(https://fastly.jsdelivr.net/gh/Code-for-dream/Blogimages/img/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/image-20230525165106497.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-d9naCVTn-1687080353329)(https://fastly.jsdelivr.net/gh/Code-for-dream/Blogimages/img/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/image-20230525170023874.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-G1koHDLl-1687080353329)(https://fastly.jsdelivr.net/gh/Code-for-dream/Blogimages/img/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/image-20230525170032834.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-c6rL7wEK-1687080353330)(https://fastly.jsdelivr.net/gh/Code-for-dream/Blogimages/img/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/image-20230525170041515.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-A85WEH6c-1687080353330)(https://fastly.jsdelivr.net/gh/Code-for-dream/Blogimages/img/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/image-20230525170050640.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fWcyq7Zf-1687080353331)(https://fastly.jsdelivr.net/gh/Code-for-dream/Blogimages/img/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/image-20230525170058450.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qCWAMPlA-1687080353331)(https://fastly.jsdelivr.net/gh/Code-for-dream/Blogimages/img/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/image-20230525170110359.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-L8Rd4aym-1687080353332)(https://fastly.jsdelivr.net/gh/Code-for-dream/Blogimages/img/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/image-20230525170118436.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hkuqItHL-1687080353333)(https://fastly.jsdelivr.net/gh/Code-for-dream/Blogimages/img/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/image-20230525170125706.png)]

2、IPv6 的扩展首部

  • IPv6 把原来 IPv4 首部中选项的功能都放在扩展首部中,并将扩展首部留给路径两端的源站和目的站的主机来处理。
  • 数据报途中经过的路由器都不处理这些扩展首部(只有一个首部例外,即逐跳选项扩展首部)。
  • 这样就大大提高了路由器的处理效率。

在 RFC 2460 中定义了六种扩展首部:

(1) 逐跳选项 (2) 路由选择 (3) 分片 (4) 鉴别 (5) 封装安全有效载荷 (6) 目的站选项

每一个扩展首部都由若干个字段组成,它们的长度也各不相同。但所有扩展首部的第一个字段都是8位的“下一个首部”字段。此字段的值指出了在该扩展首部后面的字段是什么。

5.2 IPv6 的地址

IPv6 数据报的目的地址可以是以下三种基本类型地址之一:

​ (1) 单播 (unicast):传统的点对点通信。

​ (2) 多播 (multicast):一点对多点的通信。

​ (3) 任播 (anycast):这是 IPv6 增加的一种类型。任播的目的站是一组计算机,但数据报在交付时只交付其中的一个,通常是距离最近的一个。

1、结点与接口

  • IPv6 将实现 IPv6 的主机和路由器均称为结点。
  • 一个结点就可能有多个与链路相连的接口。
  • IPv6 地址是分配给结点上面的接口的。
    • 一个接口可以有多个单播地址。
    • 其中的任何一个地址都可以当作到达该结点的目的地址。即一个结点接口的单播地址可用来唯一地标志该结点。

2、冒号十六进制记法

  • 在 IPv6 中,每个地址占 128 位,地址空间大于 3.4x10^38 。
  • 为了使地址再稍简洁些,IPv6 使用冒号十六进制记法(colon hexadecimal notation, 简写为 colon hex)。
  • 每个 16 位的值用十六进制值表示,各值之间用冒号分隔。例如: 68E6:8C64:FFFF:FFFF:0:1180:960A:FFFF
  • 在十六进制记法中,允许把数字前面的 0 省略。例如把 0000 中的前三个 0 省略,写成 1 个 0。

3、零压缩

  • 冒号十六进制记法可以允许零压缩 (zero compression),即一连串连续的零可以为一对冒号所取代。 FF05:0:0:0:0:0:0:B3 可压缩为: FF05::B3
  • 注意:在任一地址中只能使用一次零压缩。

4、点分十进制记法的后缀

  • 冒号十六进制记法可结合使用点分十进制记法的后缀,这种结合在 IPv4 向 IPv6 的转换阶段特别有用。

  • 例如:0:0:0:0:0:0:128.10.2.1 再使用零压缩即可得出: ::128.10.2.1CIDR 的斜线表示法仍然可用。

  • 例如:60 位的前缀 12AB00000000CD3 可记为: 12AB:0000:0000:CD30:0000:0000:0000:0000/60

    或 12AB::CD30:0:0:0:0/60 (零压缩)或 12AB:0:0:CD30::/60 (零压缩)

5、IPv6 地址分类

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-I1k1N3y2-1687080353334)(https://fastly.jsdelivr.net/gh/Code-for-dream/Blogimages/img/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/image-20230525171521781.png)]

  • 未指明地址

    • 这是 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 单播地址的划分方法非常灵活。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cJgvoVAm-1687080353334)(https://fastly.jsdelivr.net/gh/Code-for-dream/Blogimages/img/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/image-20230525171644758.png)]

5.3 从 IPv4 向 IPv6 过渡

你可能感兴趣的:(计算机网络,网络,网络协议,tcp/ip)