第 4 章 网络层

第 4 章 网络层

1、思维导图

image-20201222160032369

2、网络层功能

网络层的任务

宏观上来看,网络层的主要任务是把分组从源端传到目的端,为分组交换网上的不同主机提供通信服务。网络层传输单位是数据报,但是数据报过大的话,会被切割为一个个分组

网络层的功能

  1. 功能一:路由选择与分组转发(选择最佳路径)
  2. 功能二:异构网络互联(将异构的网络连接起来形成更大的网络)
  3. 功能三:拥塞控制(若所有结点都来不及接受分组,而要丢弃大量分组的话,网络就处于拥塞状态。因此要采取一定措施,缓解这种拥塞)
    1. 拥塞控制是一种全局性的概念,若整个网络的负载过重,会导致大部分分组被丢弃
    2. 有两种拥塞控制的方式:静态控制(说白了就是手动指定)和动态控制(各网络设备动态进行调整)

3、IP数据报格式

3.1、TCP/IP协议栈

传输层 IP 协议占大头呀~~~

image-20201222194037017

3.2、IP数据报格式

IP数据报:首部 + 数据部分

IP 数据报过长就会进行分片,变为一个个分组,分组时网络层

image-20201222194125694

各字段含义

  1. 版本(4bit):指明使用 IP 协议的版本,是 IPv4 or IPv6?

  2. 首部长度(4bit):单位是4B

    1. 首部长度最小为 5,即首部的字节数最少为 5 × 4 = 20B,即固定部分的长度为 20B
    2. 首部长度最大为 15,即首部的字节数最大为 15 × 4 = 60B,即可变部分的长度为 40B
  3. 区分服务(8bit):指示期望获得哪 种类型的服务。

  4. 总长度(16bit):首部+数据的长度,单位是 1B。即总长度最长为 216 - 1 = 65535B,但实际上永远不可能达到这个数,IP 数据报的长度往往受限于链路层的 MTU,超过 MTU 就会被拆分为分组

  5. 生存时间(8bit):time to live (TTL),IP 分组的保质期,每经过一个路由器就减 1,变成 0 则直接丢弃,目的是为了防止报文无限制兜圈子

  6. 协议:数据部分(传输层)使用的协议

    协议名ICMPIGMPTCPEGPIGPUDPIPv6ESPOSPF
    字段值1268917415089
  7. 首部检验和(16bit):只检验首部,通常采用二进制求和

  8. 源地址和目的地址(32位):IP 地址

  9. 可选字段(0~40B):用来支持排错、测量以及安全等措施

  10. 填充:全 0,把首部补成4B的整数倍(因为首部长度的单位为 4B,所以必须补为 4B 的整数倍)

image-20201222194226529

4、IP数据报分片

4.1、最大传送单元MTU

最大传送单元MTU的概念

最大传送单元MTU是指链路层数据帧可封装数据的上限。以太网的MTU是1500字节。

如果所传送的数据报长度超过某链路的MTU值?→ 分片

image-20201222195858510

4.2、IP数据报格式

分片的字段

  1. 标识:同一数据报的分片使用同一标识。
  2. 标志:只有 2 位有意义
    1. 中间位DF(Don’t Fragment):
      1. DF=1,禁止分片
      2. DF=0,允许分片
    2. 最低位MF (More Fragment) :当 DF = 0 时,MF 才有意义
      1. MF=1,后面“还有分片”
      2. MF=0,代表最后一片或者没有分片
  3. 片偏移:指出较长分组分片后,某片在原分组中的相对位置。以8B为单位。因此除了最后一个分片,每个分片长度一定是8B的整数倍。

image-20201222195944300

长度的单位

  1. 总长度单位是1B
  2. 片偏移单位是8B
  3. 首部长度单位是4B

4.3、IP数据报分片例题

举个例题

题目要求:需要分片为长度不超过1420B的数据报片。

image-20201222200313805

分析:首部长度为 20B,所以剩下数据部分的大小最大为 1400B,分成三个分组:1400 + 1400 + 1000 = 3800B

image-20201222200335983

分片字段设置:

image-20201222200435497

5、IPv4地址

5.1、IP编址的历史阶段

3 个历史阶段

  1. 分类的IP地址
  2. 子网的划分
  3. 构成超网(无分类编址方法)

5.2、IP地址

IP地址的概念

IP地址是全世界唯一的32位/4字节标识符,标识路由器或者主机的接口。

image-20201222201003471

5.3、互联网中的IP地址

如下图中,使用三个路由器将三个子网连接在一起

路由器每个接口的 IP 地址不同,这说明路由器可以连接不同的网络,即路由器可以分割广播域

在同一局域网内,每台主机的主机号唯一

image-20201222201224435

5.4、分类的IP地址

A、B、C、D、E 类网络

A、B、C、D、E 类网络前面的固定位为类别位,用于标识网络类型上述

D 类网络在一对多通信时使用

image-20201222201436079

5.5、特殊IP地址

NetID 网络号HostID主机 号作为IP分组 源地址作为IP分组目 的地址用途
全0全0可以不可以本网范围内表示主机,路由表中用于表示默认路由 (表示整个Internet网络)
全0特定值可以不可以表示本网内某个特定主机
全1全1不可以可以本网广播地址(路由器不转发)
特定值全0不可以不可以网络地址,表示一个网络
特定值全1不可以可以直接广播地址,对特定网络上的所有主机进行广播
127任何数 (非全0/1)可以可以用于本地软件环回测试,称为环回地址

5.6、私有IP地址

私有IP地址只能在局域网内部使用哦

私有 IP 地址只能作为本网的内部 IP 地址使用,不能被路由器所识别

地址类别地址范围网段个数
A类10.0.0.0~10.255.255.2551
B类172.16.0.0~172.31.255.25516
C类192.168.0.0~192.168.255.255256

我们学校的 A 类私有 IP 地址

image-20201222201826986

5.7、分类的IP地址个数

IP地址个数的注意事项

为什么 A 类网络的最大可用网络数需要减 2,而 B 和 C 类网络的的最大可用网络数只需要减 1 呢?A 类网络需要除去网络号全为 0 和 127 的情况,而 B 和 C 类网络只需要除去网络号全为 0 情况

为什么每个网络中的最大主机数都需要减去 2 呢?因为全 0 表示本网络的网络号,全 1 表示广播地址

image-20201222202118640

6、网络地址转换(NAT)

6.1、私有IP地址

路由器无法识别私有 IP 地址

路由器对目的地址是私有IP地址的数据报一律不进行转发。即将这些私有 IP 地址放在广域网中,路由器根本无法识别这些 IP 地址

地址类别地址范围网段个数
A类10.0.0.0~10.255.255.2551
B类172.16.0.0~172.31.255.25516
C类192.168.0.0~192.168.255.255256

6.2、网络地址转换NAT

NAT的概念 & 原理

网络地址转换NAT(Network Address Translation):在专用网连接到因特网的路由器上安装NAT软件,安装了NAT软件的路由器叫NAT路由器,它至少有一个有效的外部全球IP地址。


NAT 路由器工作的原理:NAT 转换表将【专用网 IP 地址 + 端口号】映射为【公有 IP 地址 + 端口号】,完成了 WAN 与 LAN 的相互转换

image-20201222203412812

6.3、子网划分与子网掩码

6.4、分类的IP地址的弱点

分类的IP地址利用率低 & 不够灵活

  1. IP地址空间的利用率有时很低。
  2. 两级IP地址不够灵活。

image-20201222203654637

6.5、子网划分

子网划分的概念

将两级 IP 地址的主机号高位拿出来,充当子网号,就变成了三级 IP 地址

某单位划分子网后,对外仍表现为一个网络,即本单位外的网络看不见本单位内子网的划分。

image-20201222203825414

注意事项

由于主机号不能全为 0,也不能全为 1,所以主机号至少要保留两位

至于子网号是否能全 0 或全 1 要看情况,传统方式不行,使用 CIDR 技术就可以哦

举个栗子

将 B 类 IP 地址划分为三个子网

image-20201222204133999

6.6、子网掩码

子网掩码 & 子网网络地址

子网掩码的网络号为连续的 1,子网掩码的主机号为连续的 0

将子网掩码与IP地址逐位相与,就得到子网网络地址。

image-20201222204231159

举个栗子

子网掩码习题:已知IP地址是141.14.72.24,子网掩码是255.255.192.0,求网络地址。如果子网掩码是255.255.224.0,求网络地址。

二进制十进制
10000000128
11000000192
11100000224
11110000240
11111000248
11111100252
11111110254
11111111255

答:

  1. 子网掩码是255.255.192.0的情况:141.14.72.24 & 255.255.192.0 = 141.14.64.0,因此子网网络地址为 141.14.64.0
  2. 子网掩码是255.255.224.0的情况:141.14.72.24 & 255.255.224.0 = 141.14.64.0,因此子网网络地址为 141.14.64.0

虽然上面计算出来的网络地址相同,但两者的含义完全不同

  1. 对于 255.255.192.0 的子网划分:11 00000000000000,子网号有 2 位,主机号有 14 位
  2. 对于 255.255.224.0 的子网划分:111 0000000000000,子网号有 3 位,主机号有 13位

再举个栗子

某主机的IP地址为180.80.77.55,子网掩码为255.255.252.0。若该主机向其所在子网发送广播分组,则目的地址可以是( ).

A. 180.80.76.0 B. 180.80.76.255 C. 180.80.77.255 D. 180.80.79.255

答:

180.80.77.55 & 255.255.252.0 = 180.80.76.0

76.0 写成二进制为:0100 1100 0000 0000,所以子网号有 6 位:0100 11,剩下的 10 位为主机号

对于广播模式,主机号全为 1,所以广播地址为 0100 1111 1111 1111,即 79.255

6.7、使用子网时分组的转发

路由表中存储的内容

  1. 目的网络地址
  2. 目的网络子网掩码
  3. 下一跳地址

image-20201222210352829

路由器转发分组的算法流程

  1. 提取目的 IP 地址
  2. 是否直接交付?通过计算目的地址 & 子网掩码:
    1. 直接交付:如果主机就在路由器所在的子网内,就可直接交付给主机
    2. 间接交付:如果不在,则转到下一个路由器
  3. 特定主机路由:路由表中对特定主机指明的一个路由,如果存在就用,没有就拉倒
  4. 检测路由表中有无路径:计算目的 IP 地址 & 路由表每一行子网掩码的结果,如果发现有一行的计算结果为一个目的网络,那么就按照那一行规定的吓一跳地址进行转发
  5. 默认路由 0.0.0.0(路由器说:我太难了,我已无能为力,破罐子破摔吧)
  6. 丢弃,报告转发分组出错(当 TTL 变为 0 时,丢弃分组)

7、无分类编址CIDR

7.1、为什么使用无分类编址CIDR?

使用 CIDR 的原因

  1. B类地址很快将分配完毕!B 类地址网络号有 16 位,主机号有 16 位,A 类地址主机号太多,C 类地址主机号很少,B 类地址适中,因此 B 类网络地址很抢手哦~~~
  2. 路由表中的项目急剧增长!庞大的路由表很难维护~~~

由于之前的二级 IP 地址不够灵活,对地址的利用率也较低,因此我们使用子网掩码划分出子网,变为三级网络。现在又将子网号归并到网络号中,一起形成网络前缀

image-20201223152433305


CIDR 看似又变回了二级网络,其实不然,因为 CIDR 可以灵活地调整网络号和主机号的长度,即网络前缀和主机号的位数可变

7.2、无分类编址CIDR的概念

无分类编址CIDR

无分类域间路由选择(CIDR,Classless Inter-Domain Routing),有时也被称作超网络(supernetting),是一种分派和指定网络地址的方法。

CIDR记法:IP地址后加上 /,然后写上网络前缀(可以任意长度)的位数。 比如 128.14.32.0/20


CIDR把网络前缀都相同的连续的IP地址组成一个“CIDR地址块”。比如128.14.35.7/20是某CIDR地址块中的一个地址 ,则:

项目二进制地址十六进制地址
二进制地址:10000000 00001110 00100011 00000111128.14.35.7/20
所在的 CIDR 地址块:10000000 00001110 00100000 00000000128.14.32.0
CIDR 地址块的最小地址:10000000 00001110 00100000 00000000128.14.32.0
CIDR 地址块的最大地址:10000000 00001110 00101111 11111111128.14.47.255

一些专业术语

  1. CIDR 地址块:当主机号全为 0 时,得到的地址即为地址块,表示本网络,比如上面的 128.14.32.0 表示一个 CIDR 地址块
  2. 广播地址:当主机号全为 1 时,得到广播地址,比如上面的 128.14.47.255
  3. 地址掩码(子网掩码):CIDR 延用了子网掩码的概念。网络前缀全为 1,主机号全为 0,得到地址掩码,比如上面的 20 位地址掩码为 11111111 11111111 11110000 00000000

CIDR的优点

  1. 消除了传统的A类,B类和C类地址以及划分子网的概念。
  2. 融合子网地址(CIDR 的地址)与子网掩码(CIDR 的位数),方便子网划分。

7.3、CIDR 例题

举个例题

对于 CIDR 网络地址:192.199.170.82/27,有如下几个问题

1、该地址块的子网掩码?

前 27 位为网络前缀,因此前 27 位为 1,后 5 位为 0,可得子网掩码为:

1111 1111 1111 1111 1111 1111 1110 0000

2、该网络属于哪个 CIDR 地址?

 <u>1100 0000 1100 0111 1010 1010 010</u>1 0010

& 1111 1111 1111 1111 1111 1111 1110 0000

= 1100 0000 1100 0111 1010 1010 0100 0000

= 192.199.170.64/27

3、该地址块包含多少个 IP 地址?

主机号有 5 位,因此包含 25 = 32 个 IP 地址,其中全 0 表示本网络(地址块),全 1 表示

4、该地址块的最小地址?

最大地址主机号均为 0,最小地址即为 CIDR 地址块:192.199.170.64/27

5、该地址块的最大地址?

最大地址主机号均为 1:

 <u>1100 0000 1100 0111 1010 1010 010</u>1 1111

= 192.199.170.95/27

7.4、CIDR 的两个应用

7.4.1、构成超网

超网的概念

将多个子网聚合成一个较大的子网,叫做构成超网,或称为路由聚合。

其具体做法为:去所有网络地址的交集(共同部分),将网络前缀缩短,构成超网

举个栗子

如果路由器的路由表中有几个路由(目的网络地址)走的是同一个接口,那么就可以将这几个地址进行聚合,其具体做法是取这几个网络地址的交集

在 R2 路由器中,可以将网络 1 和网络 2 聚合为超网,聚合后的网络地址为:206.1.0.0/16

image-20201223161620384

子网划分与构成超网

  1. 划分子网是将网络个数由少变多(划分)
  2. 构成超网是将网络个数有多变少(聚合)

举个栗子

做一道例题:某路由表中有转发接口相同的4条路由表项,其目的网络地址分别为35.230.32.0/2135.230.40.0/2135.230.48.0/2135.230.56.0/21,将该4条路由聚合后的目的网络地址为 ()

A.35.230.0.0/19 B.35.230.0.0/20 C.35.230.32.0/19 D.35.230.32.0/20

答:只看第 16~23 位

35.230.32.0/21 0 0 1 0 0 0 0 0
35.230.40.0/21 0 0 1 0 1 0 0 0
35.230.48.0/21 0 0 1 1 0 0 0 0
35.230.56.0/21 0 0 1 1 1 0 0 0

因此聚合后的网络前缀长度为 16 + 3 = 19 位,0b0 0 1 0 0 0 0 0 = 0x32,所以聚合后的目的网络地址为 35.230.32.0/19

7.4.2、最长前缀匹配

最长前缀匹配的概念

路由器使用CIDR时:首先查找路由表,并使用目的 IP 地址与网络掩码进行与运算,但可能得到几个匹配结果

如何从多个匹配结果中选择最佳路由?应选择具有最长网络前缀的路由。因为前缀越长,地址块越小,路由就越具体。

最长前缀匹配举例

  1. 可以将清华大学看作是一个路由器网关,将计算机系和物理系分别看做是两台主机
  2. 计算机系的 CIDR 地址块为 206.0.71.128/25,物理系的 CIDR 地址块为 206.0.71.0/25,清华大学将各个系的地址聚合(有些系没有标出来),聚合后的 CIDR 地址块为 206.0.68.0/22
  3. 如果还想为计算机系分小专业,可以将主机号拿几位出来划分给网络前缀
  4. 假设现在有一个数据包,其目的地址为 206.0.71.130,现在来判断该数据报应该转发给哪个地址段
    1. 计算机系:206.0.71.130/25 & 255.255.255.128 = 206.0.71.128/25,计算出来的 206.0.71.128/25 能和 206.0.71.130/25 匹配,前缀长度为 25
    2. 物理系:206.0.71.0/25 & 255.255.255.128 = 206.0.71.128/25,计算出来的 206.0.71.128/25 能和 206.0.71.0/25 不匹配
    3. 因此,最终该数据报将转发给计算机系所在的地址段

image-20201223164555645

举个栗子

最长前缀匹配例题:路由器R0的路由表见下表:若进入路由器R0的分组的目的地址为132.19.237.5,请问该分组应该被转发到哪一个下一跳路由器( )。

A.R1 B.R2 C.R3 D.R4

目的网络地址下一跳
132.0.0.0/8R1
132.0.0.0/11R2
132.19.232.0/22R3
0.0.0.0/0R4

答:

  1. 首先 D 选项先滚蛋,0.0.0.0/0 表示默认路由,在没有任何一个路由能匹配成功时,才会选择默认路由,将报文交付给下一个默认路由器

  2. A 选项:132.0.0.0/8

    网络前缀长度为 8 位,则 132.19.237.5/8 & 255.0.0.0 = 132.0.0.0/8,计算出来的 132.0.0.0/8 和目的网络 132.0.0.0/8 匹配,网络前缀长度为 8

  3. B 选项:132.0.0.0/11

    网络前缀长度为 11 位,则 132.19.237.5/11 & 255.224.0.0 = 132.0.0.0/11,计算出来的 132.0.0.0/11 和目的网络 132.0.0.0/11 匹配,网络前缀长度为 11

  4. C 选项:132.19.232.0/22

    网络前缀长度为 22 位,则 132.19.237.5/22 & 255.255.252.0 = 132.19.236.0/22,计算出来的 132.19.236.0/22 和目的网络 132.19.232.0/22 不匹配

综上,下一跳地址为 R2

8、ARP协议

8.1、局域网内的ARP协议

为什么需要 ARP 协议,先看个例子

假设在同一局域网内,主机 1 要向主机 3 发送消息

image-20201223170854320


下图为主机 1 向主机 3 发送 PDF 的数据封装过程(只列出了与ARP协议相关的重要字段,并且假设网络层的数据报没有被分片)

由图可知:数据报在网络层被加上源 IP 地址和目的 IP 地址,在链路层被添加上源 MAC 地址和目的 MAC 地址

image-20201223171019126


那么目的 MAC 地址怎么得到的呢?

在局域网内部的主机通过ARP高速缓存(存储IP地址与MAC地址的映射)或者 ARP 协议获取目标主机的 MAC 地址

1、ARP高速缓存有映射关系

根据目标主机的 IP 地址查询 ARP高速缓存就能得到目标主机的 MAC 地址

2、ARP高速缓存无映射关系

ARP 协议通信过程

  1. 主机 1 通过广播发送一个 ARP 请求分组:报文中中包含主机 1 的源 IP 地址、源 MAC 地址以及主机 3 的 IP 地址。对于目标主机 MAC 地址字段全部填充 1,表示这是一个 ARP 请求分组
  2. 当交换机发现目标 MAC 地址为 0xFF-FF-FF-FF-FF-FF,意识到局域网中的某个主机在搜寻目标主机的 MAC 地址,就会将该报文从所有的端口转发出去
  3. 当主机 3 接收到 ARP 请求分组后,就会向主机 1 单播ARP响应分组,告诉主机 1 自己的 MAC 地址
  4. 主机 1 拿到主机 3 的 MAC 地址之后,就可以填充数据帧部分的目标 MAC 地址字段啦~~~并将主机 3 的 IP 地址与 MAC 地址的映射关系存入 ARP 高速缓存中

image-20201223182905233

轻松理解 ARP 协议

  1. 主机 1 向全村的主机吆喝:我是主机 1,我的 IP 地址是 xxx,我的 MAC 地址是 xxx,我想要找一个人,但我只知道它的 IP 地址是 xxx,我不知道它的 MAC 地址,收到请回复~~~Over!
  2. 主机 3 听到吆喝,回复主机 1:我是主机 3,我听到你的请求了,我的 IP 地址是 xxx,我的 MAC 地址是 xxx,回复完毕~~~Over!

那么目的 IP 地址怎么得到的呢?别猴急,传输层的 DNS 协议就是用于寻找目标主机的 IP 地址,后面会讲到

8.2、广域网内的ARP协议

广域网内的ARP协议的通信过程

假设在广域网内,主机 1 要向主机 5 发送消息(交换机无 MAC 地址,路由器可以拥有多个 MAC 地址和 IP 地址)

image-20201223184503762

源 IP 地址和源 MAC 地址都是主机 1 的地址,目标 IP 地址为主机 5 的 IP 地址。由于主机 5 与主机 1 属于不同网段(子网掩码 & IP 地址),因此主机 1 会将该数据报转发至其所在网段的默认网关,因此目标 MAC地址为路由器的 MAC 地址(MAC6)

image-20201223184609407

如果主机 1 没有路由器的 MAC 地址,则会通过 ARP 协议获取路由器的 MAC 地址

image-20201223185104538

报文在相邻的路由器之间转发(路由器解封装到网络层,然后更改 MAC 地址,继续进行转发),源 MAC 地址为 MAC7,目标 MAC 地址为 MAC8

image-20201223185141104

报文通过路由器转发到主机 5,源 MAC 地址为 MAC9,目标 MAC 地址为 MAC5

image-20201223185257538

8.3、ARP协议的特点

为什么需要 ARP 协议?

由于在实际网络的链路上传送数据帧时,最终必须使用MAC地址

ARP协议的功能

完成主机或路由器IP地址到MAC地址的映射(解决下一跳走哪儿的问题)

ARP协议使用过程

检查ARP高速缓存,有对应表项则写入MAC帧,没有则用目的MAC地址为FF-FF-FF-FF-FF-FF的帧封装并广播ARP请求分组,同一局域网中所有主机都能收到该请求。目的主机收到请求后就会向源主机单播一个ARP响应分组,源主机收到后将此映射写入ARP缓存(10-20min更新一次)。

ARP协议4种典型情况

  1. 主机A发给本网络上的主机B:用ARP找到主机B的硬件地址;
  2. 主机A发给另一网络上的主机B:用ARP找到本网络上一个路由器(网关)的硬件地址;
  3. 路由器发给本网络的主机A:用ARP找到主机A的硬件地址;
  4. 路由器发给另一网络的主机B:用ARP找到本网络上的一个路由器的硬件地址。

ARP 协议自动进行,为 IP 协议提供服务,再来看一下分层结构

image-20201222194037017

ARP协议习题

主机发送IP数据报给主机B,经过了5个路由器,请问此过程总共使用了几次ARP协议?

答:6 次

💻 → ⭕ → ⭕ → ⭕ → ⭕ → ⭕ → 💻

9、DHCP协议

9.1、为什么需要 DHCP协议?

IP 地址的获取方式

  1. 静态配置,比如机房一般采用静态配置,你同桌的主机号一般和你相差 1

    image-20201223190349200

  2. 动态分配,比如在教室上课,同学们的手机和电脑都属于移动设备,一般就需要动态分配 IP 地址

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oZmpUbiV-1612578055560)(https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/e900356d22dc4bb6b31945cea149b126~tplv-k3u1fbpfcp-zoom-1.image)]

DHCP 协议配置哪些内容?

  1. IP 地址

  2. 子网掩码

  3. 默认网关

网关

可以将网关认为时局域网内的主机与外界交流的接口,默认网关通常指的是路由器一个端口的 IP 地址

9.2、DHCP协议

DHCP协议的概念

动态主机配置协议DHCP是应用层协议,使用客户/服务器方式,客户端和服务端通过广播方式进行交互,基于UDP。DHCP提供即插即用联网的机制,主机可以从服务器动态获取IP地址、子网掩码、默认网关、DNS服务器名称与IP地址,允许地址重用,支持移动用户加入网络,支持在用地址续租。

DHCP 协议的流程

  1. 主机广播DHCP发现报文:“有没有DHCP服务器呀?”。其含义为试图找到网络中的 DHCP 服务器,并从 DHCP 服务器分配得到一个IP地址。
  2. DHCP服务器广播DHCP提供报文:“有!”“有!”“有!”。DHCP 服务器拟分配给主机一个IP地址及相关配置,先到先得哟。
  3. 主机广播DHCP请求报文:“我用你给我的IP地址啦?”。主机向 DHCP 服务器请求提供IP地址。
  4. DHCP服务器广播DHCP确认报文:“用吧!”。正式将IP地址分配给主机。

image-20201223191651142

DHCP协议的注意事项

为什么上述第 3 步中,主机已经知道 DHCP 服务器的地址,还要以广播的形式发送请求报文呢?其目的在意告知其他 DHCP 服务器,你们不用等我了,我已经有心仪的 IP 地址了,你们把自己的 IP 地址分配给其他主机吧

有了 DHCP 协议,主机就能动态分配 IP 地址啦~~~

10、ICMP协议

10.1、ICMP 协议的目的

ICMP 协议的目的

为了更有效地转发IP数据报和提高交付成功的机会……

ICMP协议可以帮助主机或路由器实现差错(或异常)报告以及网络探询

10.2、网际控制报文协议ICMP

ICMP 协议的报文格式

  1. ICPM
  2. 类型:指明 ICMP 报文的类型
    1. ICMP 差错报文
    2. ICMP 询问报文
  3. 代码:区分同一种类型中的细分情况
  4. 检验和:检验整个 ICMP 报文的正确性
  5. 整个 ICMP 报文装在 IP 数据报的数据部分,加上 IP 首部后,就可以发送了哦

image-20201223191718735

10.3、ICMP差错报告报文

10.3.1、10.3.1、5种ICMP差错报告报文

5种ICMP差错报告报文

  1. 终点不可达(无法交付):当路由器或主机不能交付数据报时就向源点发送终点不可达报文。
  2. 源点抑制(拥塞丢失数据):当路由器或主机由于拥塞而丢弃数据报时,就向源点发送源点抑制报文,使源点知道应当把数据报的发送速率放慢。现已取消,基本不用。
  3. 时间超过(TTL=0):当路由器收到生存时间TTL=0的数据报时,除丢弃该数据报外,还要向源点发送时间超过报文。当终点在预先规定的时间内不能收到一个数据报的全部数据报片时,就把已收到的数据报片都丢弃(一家人就该整整齐齐),并向源点发送时间超过报文。
  4. 参数问题(首部字段有问题):当路由器或目的主机收到的数据报的首部中有的字段的值不正确时,就丢弃该数据报,并向源点发送参数问题报文。
  5. 改变路由(重定向,值得更高的路由):路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器(可通过更好的路由)。
10.3.2、10.3.2、ICMP差错报告报文数据字段

ICMP 差错报告报文

将接收到的 IP 数据报首部和其前面的 8 字节取出来,再加上 ICMP 的首部的 8 字节,构成 ICMP 差错报告报文。将 ICMP 差错报告报文装入 IP 数据报中,再加上 IP 首部,就能发送出去啦~~~

image-20201223192602742

10.3.3、10.3.3、不发送ICMP差错报文的情况

不应发送ICMP差错报文的四种情况

  1. 对ICMP差错报告报文不再发送ICMP差错报告报文。
  2. 对第一个分片的数据报片的所有后续数据报片都不发送ICMP差错报告报文,只对第一篇分片发送 ICMP 报文
  3. 对具有组播地址(一对多的通信,并不是所有节点,区别于广播通信)的数据报都不发送ICMP差错报告报文。
  4. 对具有特殊地址(如127.0.0.0或0.0.0.0)的数据报不发送ICMP差错报告报文

10.4、ICMP询问报文

四种ICMP询问报文

  1. 回送请求和回答报文:主机或路由器向特定目的主机发出的询问,收到此报文的主机必须给源主机或路由器发送ICMP回送回答报文(ping)。测试目的站是否可达以及了解其相关状态。
  2. 时间戳请求和回答报文:请某个主机或路由器回答当前的日期和时间。用来进行时钟同步和测量时间。
  3. 掩码地址请求和回答报文(不再使用)
  4. 路由器询问和通告报文(不再使用)

10.5、ICMP的应用

ICMP的应用:PING & Traceroute

  1. PING:测试两个主机之间的连通性,使用了ICMP回送请求和回答报文
  2. Traceroute:跟踪一个分组从源点到终点的路径,使用了ICMP时间超过差错报告报文(先构造很多个短报文,TTL 依次从 1 递增,报文每经过一个路由器便会减 1,如果 TTL 变为零,则或丢弃此报文,并向发送主机返回一个ICMP时间超过差错报告报文。TTL 依次递增就能测算出从源点到终点的路径 )。

11、IPV6

11.1、为什么有IPv6?

IPv4 的弊端

虽然使用通过 CIDR 和 NAT 技术可以减缓 IPv4 地址的消耗,但是毕竟治标不治本,32位IPv4地址空间已分配殆尽…

IPv6 的出现从根本上解决地址耗尽问题

除此之外,IPv6 还能解决如下两个问题:

  1. IPv4 的首部格式字段较多,并且还有可变部分,导致路由器解析首部信息时速度较慢。因此IPv6 改进了首部格式,使得路由器能够快速处理头部信息,并且快速转发数据报
  2. 支持QoS:QoS(Quality of Service,服务质量)指一个网络能够利用各种基础技术,为指
    定的网络通信提供更好的服务能力, 是网络的一种安全机制, 是用来解决网络延迟和阻塞等问题的一种技术。

11.2、IPv6数据报格式

IPv6数据报格式

  1. 固定40B基本首部
  2. 路由器处不能分片
  3. 将 IPv4 中不必要的字段放在了扩展首部

image-20201223221849916

字段说明

  1. 版本:指明了协议版本,总是6,表示使用 IPv6 协议
  2. 优先级:区分数据报的类别和优先级
  3. 流标签:“流”是互联网络上从特定源点到特定终点的一系列数据报。所有属于同一个流的数据报都具有同样的流标签
  4. 有效载荷长度:表示有效载荷的长度(包含扩展首部 + 数据)
  5. 下一个首部:指向下一个首部或上层协议首部,将各个首部像链表那样串起来。
  6. 跳数限制:相当于IPv4的TTL

image-20201223221953287

11.3、IPv6 & IPv4

IPv6 和 IPv4的对比

  1. IPv6将地址从32位(4B)扩大到128位(16B),更大的地址空间。
  2. IPv6将IPv4的校验和字段彻底移除,以减少每跳的处理时间。
  3. IPv6将IPv4的可选字段移出首部,变成了扩展首部,成为灵活的首部格式,路由器通常不对扩展首部进行检查,大大提高了路由器的处理效率。
  4. IPv6支持即插即用(即自动配置),不需要DHCP协议。
  5. IPv6首部长度必须是8B的整数倍,IPv4首部是4B的整数倍。
  6. IPv6只能在主机处分片,IPv4可以在路由器和主机处分片。
  7. ICMPv6:附加报文类型“分组过大”(因为分组过大被路由器丢弃,会返回ICMPv6分组过大报告)。
  8. IPv6支持资源的预分配, 支持实时视像等要求,保证一定的带宽和时延的应用。
  9. IPv6取消了协议字段,改成下一个首部字段。
  10. IPv6取消了总长度字段,改用有效载荷长度字段。
  11. IPv6取消了服务类型字段。

11.4、IPv6地址表示形式

一般形式

以 4 个 16 进制位为一组,采用冒号十六进制记法:4BF5:AA12:0216:FEBC:BA5F:039A:BE9A:2170

压缩形式

有这样一个 IPv6 地址:4BF5:0000:0000:0000:BA5F:039A:000A:2176

去除每一组的前导零:4BF5:0:0:0:BA5F:39A:A:2176

零压缩

零压缩(一连串连续的0可以被一对冒号取代,但双冒号表示法在一个地址中仅可出现一次):FF05:0:0:0:0:0:0:B3FF05::B3

11.5、IPv6基本地址类型

单播地址 & 多播地址 & 任播地址

单播:一对一通信,可做源地址+目的地址

多播:一对多通信,只能做目的地址。在 IPv6 中没有广播,可以用多播局域网内所有主机代替 IPv4 中的广播

任播:一对多中的一个通信,只能做目的地址。任播一般找的是离发送方最近的一台主机

11.6、IPv6向IPv4过渡的策略

IPv6向IPv4过渡的策略:双栈协议 & 隧道技术

双栈协议:双协议栈技术就是指在一台设备上同时启用IPv4协议栈和IPv6协议栈。这样的话,这台设备既能和IPv4网络通信,又能和IPv6网络通信。如果这台设备是一个路由器,那么这台路由器的不同接口上,分别配置了IPv4地址和IPv6地址,并很可能分别连接了IPv4网络和IPv6网络。如果这台设备是一个计算机,那么它将同时拥有IPv4地址和IPv6地址,并具备同时处理这两个协议地址的功能。


隧道技术:通过使用互联网络的基础设施在网络之间传递数据的方式。使用隧道传递的数据(或负载)可以是不同协议的数据帧或包。隧道协议将其它协议的数据帧或包重新封装然后通过隧道发送。

当 IPv6 协议需要使用 IPv4 协议中传输时,可以将 IPv6 数据报作为 IPv4 数据报的数据部分,并加上 IPv4 的首部,在 IPv4 隧道中进行传输,到了 IPv6 隧道,再将其拆解回来即可

image-20201223223103610

11.7、本节课总结

image-20201223223258172

12、路由算法及路由协议

12.1、路由 & 路由表

最佳路由的概念

最佳路由:“最佳”只能是相对于某一种特定要求下得出的较为合理的路由选择而已。

最佳路由一般选择:路径最短或者经过的路由(跳数)最少或者链路费用(代价)最小

image-20201224103230959

12.2、路由算法的分类

路由算法

1、静态路由算法(非自适应路由算法)

由管理员手工配置路由信息。


优缺点

优点:简便、可靠,在负荷稳定、拓扑变化不大的网络中运行效果很好,广泛用于高度安全性的军事网络和较小的商业网络。

缺点:路由更新慢(人工更新当然慢咯~),不适用大型网络。

2、动态路由算法(自适应路由算法)

路由器间彼此交换信息,按照路由算法优化出路由表项。


优缺点

  1. 优点:路由更新快,适用大型网络,及时响应链路费用(路径代价或路由跳数)或网络拓扑变化。
  2. 缺点:算法复杂,增加网络负担。

动态路由算法的分类

  1. 全局性:所有路由器都能掌握完整的网络拓扑情况和链路费用信息,比如 OSPF 链路状态路由算法
  2. 分散性:路由器只掌握物理相连的邻居及链路费用,比如 RIP 链路状态路由算法

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

为什么选择分层次的路由选择协议?

  1. 因特网规模很大,如果让所有的路由器都知道整个网络的拓扑情况和链路费用信息,那么路由表会异常庞大,一是无法存储这么大的路由表,二是路由器处理如此庞大的路由表会很耗时
  2. 许多单位不想让外界知道自己的路由选择协议,但还想连入因特网,使用分层次的路由选择协议就可以向外界屏蔽内部系统使用的路由选择协议

自治系统 AS

将一个庞大的网络划分成一个个较小的单位,这个单位就叫做自治系统 AS

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

一个AS内的所有网络都属于一个行政单位来管辖,一个自治系统的所有路由器在本自治系统内都必须连通。

路由选择协议

路由选择协议可以分为

  1. 内部网关协议 IGP:在一个 AS 内使用的协议,比如 RIP 协议和 OSPF 协议
  2. 外部网关协议 EGP:在 AS 之间使用的协议,比如 BGP 协议

image-20201224104645532


关于网关:就把它当做是路由器吧~~~

13、RIP协议及距离向量算法

13.1、路由选择协议

image-20201224105145033

13.2、RIP协议

RIP 协议介绍

RIP是一种分布式的基于距离向量的路由选择协议,是因特网的协议标准,最大优点是简单。

RIP协议要求网络中每一个路由器都维护从它自己到其他每一个目的网络的唯一最佳距离记录(最短路径),即每个路由器都维护了一组它到其他网络的最短距离。

距离:通常为“跳数”,即从源端口到目的端口所经过的路由器个数,经过一个路由器跳数+1。特别的,从一路由器到直接连接的网络距离为1。RIP允许一条路由最多只能包含15个路由器,因此距离为16表示网络不可达。因此RIP协议只适用于小互联网。

举个栗子

Net1、Net2、Net3、Net4 为子网,R1、R2、R3 为路由器

image-20201224105433577

R2 的路由表

直接交付:路由器和目的网络直接相连,将数据报交付到局域网内即可

间接交付:交付给下一个路由器

image-20201224105407484


路由表是如何得来的呢?

路由器之间相互交换信息,来填充路由表,于是就有了如下几个问题:RIP协议和谁交换?多久交换一次?交换什么?

RIP协议和谁交换?交换什么? 多久交换一次?

1、和谁交换?

仅和相邻路由器交换信息(邻座说悄悄话)

image-20201224110150286

2、交换什么?

路由器交换的信息是自己的路由表

3、多久交换一次?

每30秒交换一次路由信息,然后路由器根据新信息更新路由表。若超过180s没收到邻居路由器的通告,则判定邻居没了,并更新自己路由表。


整体工作流程

路由器刚开始工作时,只知道直接连接的网络的距离(距离为1),接着每一个路由器也只和数目非常有限的相邻路由器交换并更新路由信息。

经过若干次更新后,所有路由器最终都会知道到达本自治系统任何一个网络的最短距离和下一跳路由器的地址,即“收敛”。

13.3、距离向量算法

RIP 协议使用距离向量算法来更新路由表信息

1、修改相邻路由器发来的RIP报文中所有表项

对地址为X的相邻路由器发来的RIP报文,修改此报文中的所有项目:把“下一跳”字段中的地址改为X,并把所有的“距离”字段+1

image-20201224110424871

2、对修改后的RIP报文中的每一个项目,进行以下步骤:

  1. R1路由表中若没有Net3,则把该项目填入R1路由表
  2. R1路由表中若有Net3,则查看下一跳路由器地址:
    1. 若下一跳是X,则用收到的项目替换源路由表中的项目(以最新的路由表最为标准);
    2. 若下一跳不是X, 原来距离比从X走的距离远则更新,否则不作处理。

3、超时处理

若180s还没收到相邻路由器X的更新路由表(应对拓扑变化、路由器故障等问题),则把X记为不可达的路由器,即把距离设置为16。

13.4、距离向量算法练习

1、距离向量算法练习1

已知路由器R6的路由表,现收到相邻路由器R4发来的路由更新信息,试更新路由器R1的路由表:

已知:

  1. R6 的路由表

    image-20201224120508893

  2. R4 发来的路由更新信息

    image-20201224120527217

答:

  1. R6 路由器修改 R4 路由器发过来的路由表信息

    1. 将距离字段的值统统加 1
    2. 将下一条路由器字段修改为 R4

    image-20201224120559119

  2. R6 更新路由表信息

    1. 由于 Net1 目的网络不存在于 R6 的路由表中,因此直接将 Net1 网络的路由信息填入 R6 的路由表中
    2. 之前 Net2 目的网络的距离为 4,下一跳路由器为 R4,现在 Net2 目的网络的距离为 5,下一跳路由器为 R4,这说明网络可能出现了拓扑结构变换或者路由器故障等,更新 Net2 网络的距离为 5
    3. 之前 Net3 目的网络的距离为 4,下一跳路由器为 R5,现在 Net3 目的网络的距离为 2,下一跳路由器为 R4,很明显,走 R4 距离会更短,更新 Net3 网络的距离为 2,下一跳地址为 R4

    image-20201224120827946

2、距离向量算法练习2

考虑如图所示的子网,该子网使用了距离-向量算法,下面的向量刚刚到达路由器C:来自B的向量为(5,0,8,12,6,2);来自D的向量为(16,12,6,0,9,10);来自E的向量为(7,6,3,9,0,4)。经过测量,C到B、D和E的延迟分别为6,3和5,那么C到达所有结点的最短路径是( )。

A.(5,6,0,9,6,2) B.(11,6,0,3,5,8)
C.(5,11,0,12,8,9)D.(11,8,0,7,4,9)

image-20201224121410582

答:

由题目已知条件可得出:

  1. B 到各路由器之间的距离为:(5, 0, 8,12,6,2)
  2. D 到各路由器之间的距离为:(16,12,6,0, 9,10)
  3. E 到各路由器之间的距离为:(7, 6, 3,9, 0,4)

C到B、D和E的延迟(距离)分别为6,3和5,可推出

  1. C 通过 B 到各路由器的距离为:(11,6, 14,18,12,8)
  2. C 通过 D 到各路由器的距离为:(19,15,9, 3, 12,13)
  3. C 通过 E 到各路由器的距离为:(12,11,8, 14, 5,9)

可推出 C 到各路由器之间的最短距离为(取同一列中的最小值):(11,6,0,3,5,8)

13.5、RIP协议的报文格式

RIP协议的报文格式

RIP是应用层协议,使用UDP传送数据。其具体做法为将 RIP 报文塞到 UDP 数据报的数据部分,再加上 UDP 首部和 IP 首部,构成 IP 数据报发送出去

一个RIP报文最多可包括25 个路由信息,如超过,必须再用一个RIP报文传送

image-20201224122230867

13.6、RIP协议的特点

RIP的特点:当网络出现故障时,要经过比较长的时间 (例如数分钟) 才能将此信息传送到所有的路由器,“慢收敛”。 即RIP协议好消息传得快,坏消息传得慢

1、正常情况

R1 说:我到网 1 的距离是 1,是直接交付

image-20201224122626611

R2 说:我到网 1 的距离是 2,下一跳为 R1

image-20201224122851081

2、故障情况

R1 说:我到网 1 的距离是 16 (表示无法到达),是直接交付

但 R2 在收到 R1 的更新报文之前,还发送原来的报文,因为这时 R2 并不知道 R1 出了故障。

image-20201224123001016

R1 收到 R2 的更新报文后,误认为可经过 R2 到达网 1,于是更新自己的路由表,说:“我到
网 1 的距离是 3,下一跳经过 R2”。然后将此更新信息发送给 R2。

image-20201224123035034

R2 以后又更新自己的路由表为“1, 4, R1”,表明 “我到网 1 距离是 4,下一跳经过 R1”。

image-20201224123114663

这样不断更新下去,直到 R1和 R2到网 1 的距离都增大到 16 时,R1和 R2才知道网 1 是不可达的。

image-20201224123138673

综上,当某个网络出现故障时,坏消息要经过很长时间才能到达相邻以及其他路由器,这就是所谓的慢收敛

13.7、本节课总结

image-20201224123444455

14、OSPF协议及链路状态算法

14.1、OSPF协议

OSPF协议的概念

开放最短路径优先OSPF协议:“开放”标明OSPF协议不是受某一家厂商控制,而是公开发表的;“最短路径优先”是因为使用了Dijkstra提出的最短路径算法SPF。

OSPF最主要的特征就是使用分布式的链路状态协议。

OSPF协议和谁交换?交换什么? 多久交换一次?

1、和谁交换?

使用洪泛法向自治系统内所有路由器发送信息,即路由器通过输出端口向所有相邻的路由器发送信息,而每一个相邻路由器又再次将此信息发往其所有的相邻路由器

一传十,十传百,达到类似光广播的效果,最终整个区域内所有路由器都得到了这个信息的一个副本

2、交换什么?

发送的信息就是与本路由器相邻的所有路由器的链路状态(本路由器和哪些路由器相邻,以及该链路的度量/代价——费用、距离、时延、带宽等)

和 RIP 协议不同,RIP 协议追求路由跳数最少,OSPF 协议追求链路代价最小,链路代价可以是费用、巨鹿,也可以是时延、带宽

3、多久交换一次?

只有当链路状态发生变化时,路由器才向所有路由器洪泛发送此信息


最后,所有路由器都能建立一个链路状态数据库,即全网拓扑图

14.2、链路状态路由算法

链路状态路由算法的流程

  1. 每个路由器发现它的邻居结点【通过发送HELLO问候分组】,并了解邻居节点的网络地址。
  2. 设置该路由器到每个邻居的成本度量metric。
  3. 构造【DD数据库描述分组】,向邻站给出自己的链路状态数据库中的所有链路状态项目的摘要信息。
  4. 如果DD分组中的摘要自己都有,则邻站不做处理;如果有没有的或者是更新的,则发送【LSR链路状态请求分组】请求自己没有的和更新的信息。
  5. 收到邻站的LSR分组后,发送【LSU链路状态更新分组】进行更新。
  6. 更新完毕后,邻站返回一个【LSAck链路状态确认分组】进行确认。

只要一个路由器的链路状态发生变化

  1. 泛洪发送【LSU链路状态更新分组】进行更新。
  2. 更新完毕后,其他站返回一个【LSAck链路状态确认分组】进行确认。
  3. 使用Dijkstra算法根据自己的链路状态数据库构造到其他节点间的最短路径。

14.3、OSPF的区域

OSPF的区域的概念

为了使 OSPF 能够用于规模很大的网络,OSPF 将一个自治系统再划分为若干个更小的范围,叫做区域。每一个区域都有一个 32 位的区域标识符(用点分十进制表示)。

区域也不能太大,在一个区域内的路由器最好不超过 200 个

image-20201224124232095

四类路由器

  1. 内部路由器(Internal Router)——指所有接口属于同一区域的路由器
  2. 区域边界路由器(Area Border Routers,ABR)——指连接一个或多个区域到骨干区域的路由器,并且这些路由器会作为域间通信的网关。因为ABR是位于多个区域的,所以他需要维护的数据库就要比其他内部路由器要大,所以ABR的性能也需要比内部路由器要高,ABR同时也负责汇总与之相连的区域拓扑到骨干区域,再由骨干区域传送给其他区域
  3. 骨干路由器(Backbone Router,BR)——至少一个或多个接口位于骨干区域的路由器,这也一位这ABR可以成为骨干路由器,但是需要注意的是,并非所有ABR都是骨干路由器,如果一台路由器的所有接口都位于骨干区域内,那么这也是一台骨干路由器
  4. 自治系统边界路由器(Autonomous System Boundary Router)——可以将他看作外部路由进入内部的网管路由器,该路由器会将学习到的外部路由条目(RIP,EIGRP,BGP),通过重分发的方式注入OSPF,这台路由器可以是位于OSPF路由域内的任何一台路由器,他可以是一台ABR,也可以是一台骨干路由器,内部路由器

14.4、OSPF分组

OSPF直接用IP数据报传送(可以认为是网络层协议)

image-20201224124632594

14.5、OSPF其他特点

OSPF 和 RIP 协议的对比

每隔30min,要刷新一次数据库中的链路状态,保证链路状态数据库与全网络链路状态保持一致

由于一个路由器的链路状态只涉及到与相邻路由器的连通状态,因而与整个互联网的规模并无直接关系。因此当互联网规模很大时,OSPF 协议要比距离向量协议 RIP 好得多。

OSPF不存在坏消息传的慢的问题,它的收敛速度很快。 因为 OSPF 将接收到的链路状态统一存放在链路状态数据库中,然后根据 Dijkstra 算法计算代价最小的路径。RIP 由于存在你来我往的情况,所以坏消息才传得慢

15、BGP协议

15.1、BGP协议

BGP协议概念

边界网关协议(BGP)是运行于 TCP 上的一种自治系统的路由协议。 BGP 是唯一一个用来处理像因特网大小的网络的协议,也是唯一能够妥善处理好不相关路由域间的多路连接的协议。 BGP 构建在 EGP 的经验之上。 BGP 系统的主要功能是和其他的 BGP 系统交换网络可达信息。网络可达信息包括列出的自治系统(AS)的信息。这些信息有效地构造了 AS 互联的拓扑图并由此清除了路由环路,同时在 AS 级别上可实施策略决策。

image-20201224125213237


BGP 发言人:在配置BGP时,每一个自治系统的管理员要选择至少一个路由器作为该自治系统的“BGP发言人”,这里所谓的发言人就是该路由器可以代表整个自治系统与其他自治系统交互路由信息。BGP发言人往往就是BGP边界路由器。

边界路由器:网络边界的边缘或末点的路由器,提供了对外界网络的基本的安全保护,或者从缺乏网络控制的区域进入到专用网络区域。

BGP协议和谁交换?交换什么? 多久交换一次?

1、和谁交换?

与其他AS的邻站BGP发言人交换信息。

2、交换什么?

交换的网络可达性的信息,即要到达某个网络所要经过的一系列AS

3、多久交换一次?

发生变化时更新有变化的部分

15.2、BGP协议交换信息的过程

BGP 协议的工作原理

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

因为因特网规模较大,自治系统之间的路由选择较为困难,因此一般只能找到较好的路由,而不是最佳的路由

image-20201224125821587

15.3、BGP协议交换信息的过程

通过BGP发言人交换路径向量

  1. 自治系统 AS2 的 BGP 发言人通知主干网 AS1的 BGP 发言人:“要到达网络 N1、 N2、N3 和 N4 可经过 AS2。”

    image-20201224125930710

  2. 主干网还可发出通知:“要到达网络 N5、N6 和 N7 可沿路径(AS1, AS3)。”

    image-20201224125944637

15.4、BGP协议报文格式

BGP协议报文格式

一个 BGP 发言人与其他自治系统中的 BGP 发言人要交换路由信息,就要先建立 TCP 连接,即通过TCP传送,然后在此连接上交换 BGP 报文以建立 BGP 会话(session),利用 BGP 会话交换路由信息。

BGP是应用层协议,借助TCP传送(可靠传输)。

image-20201224130037921

15.5、BGP协议特点

BGP协议特点

BGP 支持 CIDR,因此 BGP 的路由表也就应当包括目的网络前缀、下一跳路由器,以及到达该目的网络所要经过的各个自治系统序列。

在 BGP 刚刚运行时,BGP 的邻站是交换整个的 BGP 路由表。但以后只需要在发生变化时更新有变化的部分。这样做对节省网络带宽和减少路由器的处理开销都有好处。

15.6、BGP-4的四种报文

四种报文

  1. OPEN(打开)报文:用来与相邻的另一个BGP发言人建立关系(建立连接),并认证发送方(证实发送方身份,进行身份认证)。
  2. UPDATE(更新)报文:通告新路径或撤销原路径。
  3. KEEPALIVE(保活)报文:在无UPDATE时,周期性证实邻站的连通性(发送确认存活报文);也作为OPEN的确认。
  4. NOTIFICATION(通知)报文:报告先前报文的差错;也被用于关闭连接(关闭 TCP 的连接)。

16、三种路由协议比较

RIP & OSPF & BGP 的对比

RIP是一种分布式的基于距离向量的内部网关路由选择协议,通过广播UDP报文来交换路由信息。
OSPF是一个内部网关协议,要交换的信息量较大,应使报文的长度尽量短,所以不使用传输层协议(如UDP或TCP),而是直接采用IP。

BGP是一个外部网关协议,在不同的自治系统之间交换路由信息,由于网络环境复杂,需要保证可靠传输,所以采用TCP。

image-20201224130302844

17、IP 组播

17.1、IP数据报的三种传输方式

1、单播

单播用于发送数据包到单个目的地,且每发送一份单播报文都使用一个单播IP地址作为目的地址,是一种点对点传输方式。

2、广播

广播是指发送数据包到同一广播域或子网内的所有设备的一种数据传输方式,是一种点对多点传输方式。

广播分组中,目的 IP 地址的主机号全为 1,目的 MAC 地址全为 1,这就表示该分组为一个广播分组,需要将其发送给局域网内所有主机

交换机一般只将消息从指定端口转发出去,但是当遇到广播分组,就会从所有端口转发出去

3、组播(多播)

当网络中的某些用户需要特定数据时,组播数据发送者仅发送一次数据,借助组播路由协议为组播数据包建立组播分发树,被传递的数据到达距离用户端尽可能近的节点后才开始复制和分发,是一种点对多点传输方式。

区别于广播,广播会给局域网内的所有主机发送数据报,组播只给一个组播组内的主机发送数据报,并且组播组内的主机有可能并不属于同一局域网

使用组播方式发送数据报时,发送方只会发送一个数据报,仅在路径需要分叉的时候才会复制并分发数据报

17.2、单播与组播的比较

1、单播方式向 90 个主机传输视频

每个待接收的主机和发送主机需要建立一个单播连接,即有多少个接收主机就需要建立多少个单播连接,发送方就需要复制多少分数据包,并分发和这些接收主机

缺点:占用的带宽和资源较多

image-20201225182542357

2、多播方式向 90 个主机传输视频

发送方无需事先复制多分数据包,只需要向链路中传输一份数据报即可,如果达到一个路由器,需要分叉或者到达了组播组,那么就复制多份并分发即可

组播提高了数据传送效率。减少了主干网出现拥塞的可能性。组播组中的主机可以是在同一
个物理网络,也可以来自不同的物理网络

如果路由器支持运行组播协议,那么该路由器就被称为组播路由器,组播路由器可实现不同物理网络之间的组播

image-20201225182736619

17.3、IP组播地址

IP组播地址

IP组播地址让源设备能够将分组发送给一组设备。属于多播组的设备将被分配一个组播组IP地址(一群共同需求主机的相同标识)。

组播地址范围为224.0.0.0~239.255.255.255(D类地址),一个D类地址表示一个组播组。只能用作分组的目标地址。源地址总是为单播地址。

IP 组播的注意事项

  1. 组播数据报也是“尽最大努力交付”,不提供可靠交付,应用于UDP(速度快,实时性高)。
  2. 对组播数据报不产生ICMP差错报文。
  3. 并非所有D类地址都可以作为组播地址,一些地址为永久组地址。

IP 组播的分类

因特网范围内组播:在因特网范围内的组播,数据报复制后分发给其他路由器

硬件组播:在本地局域网内的组播,数据报复制后分发给局域网组播组内的主机

17.4、硬件组播

硬件组播的 MAC 地址和 IP 地址

同单播地址一样,组播IP地址也需要相应的组播MAC地址在本地网络中实际传送帧(进入局域网后,通过目的主机的 MAC 地址将数据报交付给目标主机)。

组播MAC地址以十六进制值01-00-5E打头(组播 MAC 地址),余下的6个十六进制位是根据IP组播组地址的最后23位转换得到的。

TCP/IP 协议使用的以太网多播地址的范围是:从01-00-5E-00-00-00到01-00-5E-7F-FF-FF

image-20201225184133395

注意事项

有 5 位不使用,会造成后 23 位相同的 D 类 IP 地址,其组播 MAC 地址相同,那么如何解决这个问题呢?

答:收到多播数据报的主机,还要在 IP 层利用软件进行过滤,把不是本主机要接收的数据报丢弃

17.5、组播协议

组播协议的分类

  1. IGMP 协议:路由器内部使用的协议,路由器通过 IGMP 协议可以知道它所连接的局域网是否还有可以接受组播数据的主机
  2. 组播路由选择协议:路由器之间的路径选择
17.5.1、17.5.1、网际组管理协议IGMP

IGMP 协议的作用

IGMP协议让路由器知道本局域网上是否有主机(本质上式主机的进程)时参加或退出了某个组播组。

image-20201225184753397

IGMP 协议的所处层次

ICMP和IGMP都使用IP数据报传递报文。

image-20201225184809664

IGMP 协议工作的两个阶段

ROUND 1

某主机要加入组播组时,该主机向组播组的组播地址发送一个IGMP报文,声明自己要称为该组的成员。

本地组播路由器收到IGMP报文后,要利用组播路由选择协议把这组成员关系发给因特网上的其他组播路由器。

ROUND 2

本地组播路由器周期性探询本地局域网上的主机,以便知道这些主机是否还是组播组的成员。

只要有一个主机对某个组响应,那么组播路由器就认为这个组是活跃的;如果经过几次探询后没有一个主机响应,组播路由器就认为本网络上的没有此组播组的主机,因此就不再把这组的成员关系发给其他的组播路由器。

注意事项

注意:组播路由器知道的成员关系只是所连接的局域网中有无组播组的成员,并不会去反映组播组内成员的个数,因为组播路由器它自己也不知道组播组成员到底有多少个

原因解释:组播路由器向局域网组播组内的所有主机发送探寻消息,只要有一个主机响应组播路由器即可,其他主机通过监听得知有一个代表已经去告诉组播路由器:“我们还活着!”这样其他主机无需响应探寻消息,可以减少一些不必要的通信量。因此组播路由器也不知道组播组成员到底有多少个

17.5.2、17.5.2、组播路由选择协议

组播路由选择协议

组播路由选择协议目的是找出以源主机为根节点的组播转发树。

  1. 组播路由协议目的是找出以源主机为根节点的组播转发树。
  2. 构造树可以避免在路由器之间兜圈子。
  3. 对不同的多播组对应于不同的多播转发树;同一个多播组,对不同的源点也会有不同的多播转发树。

image-20201225185346137

组播路由选择协议的分类

  1. 基于链路状态的路由选择
  2. 基于距离-向量的路由选择
  3. 协议无关的组播(稀疏/密集)

17.6、本节课总结

image-20201225185513806

18、移动IP

18.1、移动 IP 举例

1、QQ 异地登录提醒

QQ 依据 IP 实现异地登录提醒:在不是手机号所属地区登录 QQ 会出现异地登录提醒

image-20201225193900860

2、漫游费

手机通话的漫游费:如果不在开通手机号的地方(永久地址)打电话,会有一个叫漫游费的额外费用,这是因为厂商还需要对转交地址进行维护

image-20201225193955433

18.2、移动IP相关概念

相关术语解释

移动IP技术是移动结点(计算机/服务器等)以固定的网络IP地址,实现跨越不同网段的漫游功能,并保证了基于网络IP的网络权限在漫游过程中不发生任何改变。一句话:设备移动,IP 不动

  1. 移动结点:具有永久IP地址的移动设备。
  2. 归属代理(本地代理):一个移动结点的永久“居所”称为归属网络,在归属网络中代表移动节点执行移动管理功能的实体叫做归属代理。
  3. 永久地址(归属地址/主地址):移动站点在归属网络中的原始地址。
  4. 外部代理(外地代理):在外部网络中帮助移动节点完成移动管理功能的实体称为外部代理。
  5. 转交地址(辅地址):可以是外部代理的地址或动态配置的一个地址。

通过葫芦娃理解相关术语

这张图绝了。。。

image-20201225194522620

归属代理:村子

image-20201225194530083

外部代理:盘丝洞

转交地址:盘丝洞id

外部代理:盘丝洞

转交地址:盘丝洞id

image-20201225194555142

18.3、移动IP通信过程

举个栗子

移动IP通信过程示意图

image-20201225194706939

1、A刚进入外部网络

  1. 获得外部代理的转交地址(外部代理广播报文)。
  2. 移动节点通过外部代理发送注册报文给归属代理(包含永久地址&转交地址)。
  3. 归属代理接收请求,并将移动节点的永久地址和转交地址绑定(以后到达该归属代理的数据报且要发往移动节点的数据报将被封装并以隧道方式发给转交地址),并返回一注册响应报文。
  4. 外部代理接收注册响应,并转发给移动节点。

2、A移动到了下一个网络

在新外部代理登记注册一个转交地址。

新外部代理给本地代理发送新的转交地址(覆盖旧的)。

通信

3、A回到了归属网络

  1. A向本地代理注销转交地址。
  2. 按原始方式通信。

19、网络层设备

19.1、路由器

路由器是一种具有多个输入端口和多个输出端口的专用计算机,其任务是转发分组。

image-20201225195116564

路由选择

根据所选定的路由选择协议构造出路由表,同时经常或定期地和相邻路由器交换路由信息而不断地更新和维护路由表。

交换结构 & 分组转发

交换结构:根据转发表(转发表根据路由表得来)对分组进行转发。

若收到RIP/OSPF分组等,则把分组送往路由选择处理机。用于构建路由表;若收到数据分组,则查找转发表并输出。

转发 vs 路由选择

转发:将一个分组从一个输入端口转发到另一个输出端口,属于路由器内部的动作

路由选择:在路由器之间选择一条最合适的路径,将一个分组从源主机发送到目的主机,属于路由器之间的动作(宏观)

19.2、输入端口的处理

输入端口中的查找和转发功能在路由器的交换功能中是最重要的。在网络层会将分组暂存入缓冲队列中,并查路由表进行转发,在排队的过程中会导致数据处理的延时

image-20201225195735606

19.3、输出端口的处理

若路由器处理分组的速率赶不上分组进入队列的速率,则队列的存储空间最终必定减少到零,这就使后面再进入队列的分组由于没有存储空间而只能被丢弃。

路由器中的输入或输出队列产生溢出是造成分组丢失的重要原因。

image-20201225200031944

19.4、三层设备的区别

路由器 & 网桥 & 集线器的比较

  1. 路由器:可以互联两个不同网络层协议的网段。
  2. 网桥:可以互联两个物理层和链路层不同的网段。
  3. 集线器:不能互联两个物理层不同的网段。
能否隔离冲突域能否隔离广播域
物理层设备【傻瓜】 (中继器、集线器)××
链路层设备【路人】 (网桥、交换机)×
网络层设备【大佬】 (路由器)

19.5、路由表与路由转发

路由表

路由表根据路由选择算法得出的,主要用途是路由选择,总用软件来实现。

默认路由(无奈之举)的目的网络IP地址和子网掩码均为 0.0.0.0

image-20201225200217945

转发表

转发表由路由表得来,可以用软件实现,也可以用特殊的硬件来实现。转发表必须包含完成转发功能所必需的信息,在转发表的每一行必须包含从要到达的目的网络到输出端口和某些MAC地址信息的映射。

20、本章小结

image-20201225200537451

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值