计算机网络总结——网络层

4.1网络层概述

网络层的主要任务是实现网络互连,进而实现数据包在各网络之间的传输。

要实现网络层的任务,需要解决以下问题:

  • 网络层向运输层提供怎样的服务(可靠传输还是不可靠传输)。
  • 网络层寻址问题
  • 路由选择问题

因特网:是目前全世界用户最多的互联网,它使用TCP/IP协议栈。

由于TCP/IP协议栈中的网络层使用网际协议IP,它是整个协议栈的核心协议,因此在TCP/IP协议栈中网络层常称为网际层。

image-20210606111314518

4.2网络层提供的两种服务:

1.面向连接的虚电路服务

核心思想:可靠通信应由网络来保证

当两台计算机进行通信时,必须建立网络层的连接,也就是建立一条虚电路,双方沿着该虚电路进行发送分组。

虚电路表示逻辑上的连接,并不是物理上的连接,这和采用电路交换的通信方式不同。

分组的首部仅在连接建立阶段使用完整的目的主机地址,之后每个分组的首部只需要携带一条虚电路编号即可。

通信结束后,需要释放之间所建立的虚电路。

很多广域分组交换网都使用面向连接的虚电路服务,例如曾经的X.25和逐渐过时的帧中继FR,异步传输模式ATM等。

然而,因特网的先驱者并没有采用这种设计思路,而是采用了无连接的数据报服务。

image-20210606112815263

2.无连接的数据报服务

核心思想:可靠通信应由用户主机来保证。

当两台计算机进行通信时,并不需要建立网络层的连接,每个分组可走不同的路径。

每个分组必须携带目的主机地址。

这种方式所传送的分组可能误码,丢失,重复,失序。

由于网络层本身不提供端到端的可靠传输服务,这就使得路由器可以做的比较简单,而且价格低廉。

因特网采用了这种设计思想,将复杂的网络处理功能置于网络的边缘(用户主机和内部的运输层),而将简单的分组交付功能置于因特网中心,好处:网络造价降低,运行方式灵活。

image-20210606113033992

image-20210606113742224

4.3 IPv4

4.3.1 IPv4地址概述

1.基本介绍

image-20210606120438930

2.表示方法

32比特的IPv4地址不方便阅读,记录等,因此IPv4地址采用点分十进制表示方法以方便用户使用。

举例:

image-20210606120755753

4.3.2编址方法——分类编址的IPv4地址

在分类编址的方式下,IPv4地址分为A类,B类,C类,D类,E类。

image-20210607113254540

A类地址:

  • 网络号为8位,主机号为24位。
  • 网络号最高位固定为0,可指派的网络号是126个(27-2),最小的网络地址为1.0.0.0,最大的网络地址为126.0.0.0
    • 减去全零,网络号为全零的IP地址是保留地址,意思是本网络
    • 减去网络号为127的地址,用于本地软件环回测试,最小的本地软件环回测试地址127.0.0.1,最大为127.255.255.254
  • 每个网络可指派的主机数为224-2
    • 全0的主机号表示本主机所连接的网络地址
    • 全1的主机号表示该网络上的所有主机,即广播地址

B类地址:

  • 网络号为16位,主机号为16位
  • 网络号低两位固定为10,可指派的网络号为214,最小网络地址为128.0.0.0,最大网络地址为191.255.0.0
  • 每个网络可指派的主机数为216-2
  • 全0的主机号表示本主机所连接的网络地址
  • 全1的主机号表示该网络上的所有主机,即广播地址

C类地址:

  • 网络地址为24位,主机号为8位
  • 网络号前3位固定为110,可指派的网络号为221,最小网络地址为192.0.0.0,最大网络地址为223.255.255.0
  • 每个网络可指派的主机数为28-2
    • 全0的主机号表示本主机所连接的网络地址
    • 全1的主机号表示该网络上的所有主机,即广播地址

练习题1:

image-20210607122154535

以下三种情况的地址不能指派给主机或路由器接口:

  • A类网络号为0和127
  • 主机号为全0
  • 主机号为全1

练习题2:

image-20210607145248645

4.3.3编址方法——划分子网的IPv4地址

1.划分子网的原因:

  • IP地址空间的利用率有时很低,容易造成浪费
  • 给每个网络都分配一个网络号会使路由表变得很大
  • 需要新的网络时不能马上获得

2.划分子网的工具——子网掩码

image-20201017160252066

例子一:

image-20201017161651058

例子二:

image-20201017161719339

3.默认子网掩码:

image-20201017162807076

4.3.4编址方法——无分类编址的IPv4地址

  • 划分子网在一定程度上缓解了因特网在发展中的困难,但是数量巨大的C类网因为其地址空间太小,而并没有得到充分利用。因特网的IP地址仍在加速消耗,整个IPv4地址空间面临着耗尽的威胁。

  • IETF提出了采用无分类编址的方法来解决IP地址紧张的问题。

  • 无分类域间路由选择CIDR:

    • 消除了A类,B类和C类地址,以及划分子网的概念。
    • 可以更加有效的分配IPv4地址空间。

1.CIDR地址的记法:

image-20201017165037268

举例:

image-20201017165113442

2.路由聚合:

image-20201017165615915

练习题1:

image-20210608212949700

练习题2:

image-20210608213305030

4.3.5 IPv4地址的应用规划

  • 给定一个IPv4地址快,如何将其划分成几个更小的地址块,并将这些地址块分配给互联网中不同网络,进而可以给各网络中的主机和路由器接口分配IPv4地址。

  • 地址的划分有两种方式:

    • 使用定长的子网掩码
    • 使用变长的子网掩码

1.定长的子网掩码:

image-20201018143550103

之前对IPv4地址划分子网就是通过定长的子网掩码得来的。

举例说明:

image-20210608222008611

图中有5个网络,所以需要218.75.230.0网络第4个字节的前3位作为子网号。

以下是将3位比特位分为8个子网的结果:

image-20210608221937928

这种方式分出的每个子网的主机数都一样,对于不需要那么多主机的子网来说就是一种浪费。

2.变长的子网掩码

image-20210608222701215

无分类的编址方式就是采用变长的子网掩码得出的。

举例:

image-20201018142333145

分配如下:

image-20210608223142707

4.4 IP数据报的发送和转发过程

  • IP数据报的发送和转发过程包含以下两部分:

    • 主机发送IP数据报
    • 路由器转发IP数据报

    image-20201018151314019

image-20201018150151171

那么源主机如何知道目的主机是否与自己同一个网络呢?

image-20201018150223497

主机的IP地址和主机的子网掩码相与后得到主机的网络地址,将目的IP地址主机的子网掩码相与得到目的网络地址,将源主机的网络地址和目的网络地址相比较:

  • 如果相等,则表示在同一网络中,直接交付
  • 如果不相等,则表示不同网络,属于间接交付,将数据报转发给默认网关,由默认网关代替转发。

那么主机C如何知道应该交付给哪个路由器呢?

默认网关:指定给主机的路由器称为默认网关。

image-20210608233106002

当主机要和其他网络的主机通信时,会将IP数据报传输给默认网关,由默认网关转发出去。

当将目的地址与子网掩码相与后判断不是同一网络之后,主机就会将数据报转发给默认网关,默认网关所在的路由器收到数据报后:

  • 首先先检查IP数据报的首部是否出现差错
    • 若出错,则丢弃该数据报,并通知主机
    • 若没有出错,则转发
  • 然后根据IP数据报的目的地址在路由表中查找匹配的条目
    • 如果找到,则转发给条目中指示的下一跳
    • 如果没找到,则丢弃并通告源主机

路由器查找过程如下:

  • 首先从IP数据报中提取出首部的源地址字段和目的地址字段
  • 将目的IP地址与地址掩码相与得到目的网络地址,然后判断是否和路由表中的相对应的目的网络地址字段相同。

以下是举例:

image-20210608234631912

第一条记录:将目的地址192.168.0.129和掩码255.255.255.128相与后得到网络地址192.168.0.129,和路由表中对应的目的网络地址不相同。

第二条记录:将目的地址192.168.0.129和掩码255.255.255.128相与后得到网络地址192.168.0.129,和路由表中对应的目的网络地址相同,故路由器就知道应该从接口1进行转发。

上述的路由表只有直连网络的配置,而路由器动态获取的其他网络记录等,这些需要到后面进行学习。

路由表对于广播的IP数据报不会进行转发。

4.5静态路由配置及其可能产生的路由环路问题

  • 静态路由配置是指用户或网络管理员使用路由器的相关命令给路由器人工配置路由表。
  • 这种人工配置方式方式简单,开销小,但不能及时适应网络状态(流量、拓扑等)的变化,同时一般只在小规模网络中使用。

使用静态路由配置可能会导致产生路由环路的错误:

  • 配置错误
  • 聚合了不存在的网络
  • 网络故障

1.静态路由配置

image-20201018160349375

(1)默认路由

如果路由器想要将数据报转发到因特网的其他网络上,这需要该路由器的路由表有对应网络的条目,如果我们人工添加针对这些网络的条目,需要巨大的工作量,并且使得路由表很大。这时,对于具有相同下一跳的不同目的网络的路由条目,可以使用一条默认路由来替代。

默认路由的目的网络地址为0.0.0.0,其CIDR形式为0.0.0.0/0。

image-20201018160906284

(2)特定主机路由

有时候,我们可以给路由器添加针对某个主机的特定主机路由条目,一般用于网络管理人员对网络的管理和测试。

image-20201018161440257

需要注意的是,特定主机路由的网络号数为32

2.静态路由导致的路由环路问题

情况一:配置错误

image-20210609151818235

当R2收到目的网络为192.168.1.0的数据报后,对照路由表将其转发给了R3的接口0,R3收到数据报后,对照路由表又将数据报转发给了R2的接口1,这样数据报就在R2和R3之间循环转发,也就是产生了路由环路

为了避免IP数据报在路由环路中永久兜圈,在IP数据报的首部设有生存时间TTL字段。IP数据报进入路由器后,TTL值减一,若TTL不等于0,则被路由器转发,否则丢弃。

情况二:聚合了不存在的网络

image-20201018162333671

实际上,192.168.0.0/22这个网络 包含了 四个网络:

  • 192.168.0.0/24
  • 192.168.1.0/24
  • 192.168.2.0/24
  • 192.168.3.0/24

当R2转发的数据报的目的网络是192.168.3.0(并不存在于上面的网络拓扑中)时,R2对照路由表中第三条,将该数据报转发给了R1的接口1,R1收到数据报后,对照路由表后选择默认路由进行转发,将数据报转发给了R2,这样数据报就在R1和R2中循环转发,产生路由环路问题。

解决办法:

在R2的路由表中添加针对所聚合的,不存在的网络的黑洞路由黑洞路由的下一跳为null0,这是路由器内部的虚拟接口,相当于路由器丢弃了该网络地址的IP数据报。

image-20210609154831503

这时如果R2收到目的网络为192.168.3.0的数据报,可以在路由表中匹配到两条记录:第三条和第四条,但是根据最长前缀匹配原则,路由器会选择第四条条目进行转发。

情况三:网络故障

image-20210609155959300

R2要转发目的网络为192.168.1.0/24的数据报,会将数据报转发给R1的接口1,R1收到数据报后,查找路由表,选择走默认路由,将数据报转发给了R2的接口0,这样,数据报在R1和R2之间循环转发,产生了路由环路问题。

解决办法:

在R1的路由表中,添加针对该直连网络的黑洞路由,这样,R1就不会转发目的网络为该网络的数据报了。

如果之前的故障消失了,则R1又自动得出了其接口0的直连网络的路由条目,并将人工培植的黑洞路由条目设置为失效状态。

4.6路由选择协议

4.6.1路由选择协议概述

(1)路由选择可分为 静态路由选择 和 动态路由选择 两类:

  • 静态路由选择:
    • 是指人工配置的特定网络路由,默认路由,特定主机路由,黑洞路由等,具体可浏览上面 第4.5小节
    • 人工配置方式简单,开销小。不能及时适应网络状态的变化
    • 一般只在小规模网络中使用
  • 动态路由选择:
    • 是指通过路由选择协议自动获取路由信息
    • 比较复杂,开销大,能较好地适应网络变化
    • 适用于大规模网络

(2)因特网所采用的路由选择协议有以下三个特点:

  • 自适应:指因特网采用的是动态路由选择,能较好适应网络状态的变化。
  • 分布式:指路由器之间交换路由信息。
  • 分层次:将整个因特网划分为许多较小的自治系统AS(Autonomous System),例如一个较大的因特网服务提供商就可划分为一个自治系统。

(3)因特网采用分层次的路由选择协议:

自治系统之间的路由选择称为域间路由选择,选用 外部网关协议EGP 类别的路由选择协议。

自治系统内部的路由选择称为域内路由选择,选用 内部网关协议IGP 类别的路由选择协议。

现如今,外部网关协议EGP又可称为外部路由选择协议ERP,内部网关协议IGP又可称为内部路由选择协议IRP。

两个自治系统选用的内部网关协议并不需要一致。

image-20210609164525217

(4)常见的路由选择协议:

image-20201019140009740

(5)路由器的基本结构:

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

整个路由器结构可划分为两大部分

  • 路由选择部分:核心部件是路由选择处理机,它的任务是根据所使用的路由选择协议,周期性地和其他路由器进行路由信息的交互 来更新路由表。
  • 分组交换部分:由三部分组成:
    • 交换结构
    • 一组输入端口
    • 一组输出端口

image-20210609170527777

路由器收到的分组有两种情况:

  • 如果是普通分组,则根据分组中的目的地址进行查表转发,找不到则丢弃,否则按所指示的端口进行转发。
  • 如果是路由器之间交换信息的路由报文,则将该分组送至路由选择处理机,路由选择处理机根据分组内容来更新自己的路由表。

路由器的各端口还应具有 输入缓冲区 和 输出缓冲区:

  • 输入缓冲区用来暂存 新进入路由器但还来不及处理 的分组
  • 输出缓冲区用来暂存 已经处理完毕但还来不及发送 的分组

4.6.2路由信息协议RIP的基本工作原理

路由信息协议RIP 是内部网关协议中最先得到广泛使用的协议之一。

RIP要求自治系统中AS的每个路由器都要维护从它自己到AS内其他每一个网络的距离记录。

RIP使用 跳数 作为度量来衡量到达目的网络的距离。

  • 路由器到直连网络的距离为 1
  • 路由器到非直连网络的距离为 所经过的路由器数量+1
  • 一条路径最多只能包含15个路由器距离为16相当于不可达,因此RIP只适用于小型互联网。

注意:有些厂商的路由器并没有严格按照规定来实现RIP,如思科路由器的RIP将到直连网络的距离定义为0。

RIP认为 距离短的路由就是好的路由,也就是所通过路由器数量最少。

当到达同一目的网络有多条距离相等的路由时,可以进行等价负载均衡,也就是将通信量均衡地分布到多条等价的路由上。

相邻路由器之间周期性地交换自己的路由表,例如每30秒发送一次RIP更新报文。

1.RIP的基本工作过程:

image-20201019145510947

2.RIP的路由条目的更新规则

image-20201019145627339

路由器C的表到达各目的网络的下一条都记为问号,可以理解为路由器D并不需要关心路由器C的这些内容。

假设路由器C的RIP更新报文发送周期到了,则路由器C将自己路由表中的相关路由信息封装到RIP更新报文中发送给路由器D。

image-20201019150120900

路由器D收到路由器C的RIP更新报文后,依照规则更新自己的路由表。

image-20201019150412666

3.RIP协议存在“坏消息传得慢”的问题

image-20201019151041492 image-20201019151135255 image-20201019151332767

解决方法:

image-20201019151639181

但是,这些方法也不能完全解决“坏消息传播得慢”的问题,这是距离向量的本质决定。

4.6.3开放最短路径优先OSPF的基本工作原理

1.基本概念

开放最短路径优先OSPF(Open Shortes Path First),是为克服RIP的缺点在1989年开发出来的。

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

OSPF是基于链路状态的,而不是像RIP那样是基于距离向量的。

OSPF采用最短路径算法计算路由,从算法上保证不会产生路由环路。

OSPF不限制网络规模,更新效率高,收敛速度快。

image-20210611105703863

2.问候分组

OSPF相邻路由器之间通过交互问候(Hello)分组,来建立和维护邻居关系

image-20210612213820786

问候分组需要封装在IP数据报中使用,发往组播地址224.0.0.5。IP数据报首部协议号字段的取值应为89,来表明IP数据报的数据载荷是OSPF分组。

image-20210612213916570

问候分组的发送周期为10秒,若40秒还未收到邻居路由器的问候分组,则认为该邻居路由器不可达。

每个路由器都会建立一张邻居表,记录相邻路由器的相关信息,如邻居ID,接口,死亡倒计时。

在死亡倒计时为0时还没收到问候分组,则认定该邻居路由器不可达。

image-20210612214258879

3.链路状态更新分组

使用OSPF的每个路由器都会产生链路状态通告LSA(Link State Advertisement),LSA包含以下两个内容:

  • 直连网络的链路状态信息
  • 邻居路由器的链路状态信息

LSA被封装在链路状态更新分组LSU中,采用洪泛法发送

收到链路状态更新分组的路由器将从自己其他所有接口转发该分组,也就是进行洪泛转发

这样,自治系统中每个路由器发送封装有链路状态通告的链路状态更新分组,会传递给系统中其他所有路由器。

使用OSPF的每个路由器都有一个链路状态数据库LSDB,用于存储链路状态通告。

通过各路由器发送封装有自己的LSA的LSU,各路由器的LSDB最终将达到一致。

使用OSPF的各路由器基于LSDB进行最短路径计算,构建各自到其他路由器的最短路径,即构建各自的路由表。

image-20210612220053251

OSPF的五种分组类型:

image-20210612220523264

4.OSPF的基本工作过程

image-20210612221241450
  1. 相邻路由器之间周期性发送问候分组,以便建立和维护邻居关系。
  2. 建立关系后,给邻居路由器发送数据库描述分组(注意这里只是 链路状态的摘要信息)。
  3. R1收到数据库描述分组后,发现自己缺少其中的某些链路状态信息,于是就给R2发送链路状态请求分组
  4. R2收到后,将R1所缺少的链路状态项目的详细信息封装在链路状态更新分组中发送给R1。
  5. R1收到后,将这些链路状态项目的详细信息添加到自己的链路状态数据库中,并给R2发送链路状态确认分组

同样R2也可以向R1请求自己所缺少的链路状态信息,这样,R1和R2就可以达到 链路状态数据库 同步

image-20210612221830204

每30分钟或者链路状态发生变化时,路由器会发送链路状态更新分组,收到该分组的其他路由器会进行洪泛转发,并给该路由器发送链路状态确认分组。

5.多点接入网络中的OSPF

当OSPF路由器在多点接入网络中建立邻居关系时,如果不采用其他机制,将会产生大量的多播分组。

例如:下图中各路由器互为邻居关系,每个路由器要向其他 n-1 个路由器发送 问候分组 和 链路状态更新分组。

image-20210612222705445

为了减少所发送分组的数量,OSPF采用选举 指定路由器DR备用的指定路由器BDR 的方法。

所有 非DR和非BDR的路由器 只与 DR和BDR 建立邻居关系,非DR/BDR 只能通过 DR/BDR 进行交换信息。

若DR出现问题,则由BDR顶替DR。

image-20210612223118662

实现DR和BDR并不复杂,只是进行各路由器之间交换一些选举参数,例如路由器优先级,路由器ID,接口IP地址等,然后根据选举规则选出DR和BDR。

6.区域

在规模很大的网络中,每个路由器发送的分组都会被系统中所有路由器进行转发, 这会使得整个网络中通信量太大。

于是,OSPF把一个自治系统再划分为若干个更小的范围,称为区域

每个区域都有一个32比特的区域标志符,可以用点分十进制表示,主干区域的标识符必须为0,其他区域的标志符各不相同。

每个区域的规模不应太大,一般所包含的路由器不应超过200个

image-20210612225324188

区域内路由器:路由器的所有接口都在同一个区域内。

边界区域路由器:连接不同区域,一个接口用于连接自身区域,另一个接口用于连接主干区域。

主干路由器:主干区域内的路由器,区域边界路由器也可看作主干路由器。

自治系统边界路由器:主干路由器中的其中一个路由器,用于和其他自治系统交换路由信息。

4.6.4边界网关协议BGP的基本工作原理:

上面的 RIP协议和OSPF协议都属于内部网关协议,而本小结介绍的 边界网关协议属于外部网关协议。

不同自治系统中,度量路由的代价(距离,带宽,费用等)可能不同,所以,对于不同自治系统之间的路由选择,使用代价来度量最佳路由是不可行的。

自治系统之间的路由选择还需要考虑相关策略(政治,经济,安全等),例如不要经过某些有安全威胁的国家,某些自治系统需要收费等。

BGP只能力求一条能够到达目的网络且比较好的路由,而非寻找一条最佳路由。

image-20210612232632543

在配置BGP时,每个自治系统的管理员要选择至少一个路由器作为该自治系统的 ”BGP发言人“

不同自治系统的BGP发言人要交换路由信息,首先要建立TCP连接,端口号为179

  • 在此TCP连接上交换BGP报文,以建立BGP会话

  • 利用BGP会话交换路由信息(例如,增加新的路由,撤销过时的路由,以及报告出错的情况等)

  • 使用TCP连接交换路由信息的两个BGP发言人,彼此称为对方的邻站对等站

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

image-20201019192031087

image-20210612233541646

练习题:

image-20210612233810910

4.7 IPv4数据报的首部格式

固定部分:占20个字节,是每个IP数据报都必须包含的部分。

可变部分:占 0到40个字节 。

IP数据报的首部常以 32个比特为单位 进行描述,图中每一行都有32个比特(4个字节)构成,每个小格子称为字段或者

image-20210612235317986

版本:占4个比特,表示IP协议的版本。通信双方使用的IP协议版本必须一致,目前广泛使用的IP协议版本号为4(即IPv4)。

首部长度:占4个比特,表示IP数据报首部的长度,该字段的取值以4个字节为单位

  • 最小十进制取值为5,表示IP数据报的首部只有20字节固定部分。
  • 最大十进制取值为15,表示IP数据报首部包含 20字节固定部分 和 最大40字节可变部分 。

区分服务:占8个比特,用来获得更好的服务。一般不使用该字段。

总长度:占16比特,表示IP数据报的总长度(首部+数据载荷),最大取值为十进制的65535,以字节为单位,实际中很少传输这么长的IP数据报。

生存时间:占8比特

  • 最初是以秒为单位,最大生存周期为255秒,路由器转发IP数据报时,将IP数据报首部的该字段的值减去IP数据报在本路由器耗费的时间,若不为0则转发,否则就丢弃。
  • 现在以跳数为单位,路由器转发IP数据报时,将IP数据报首部的该字段的值减1,若不为0则转发,否则就丢弃。
  • 作用:防止IP数据报在网络中兜圈(请参考 4.5.2 路由环路问题)

协议:占8比特,用来指明IPv4数据报的数据部分是何种协议数据单元。

image-20210613003405880

首部检验和:占16比特,用来检测首部在传输过程中是否出现差错。比CRC编码简单,称为因特网检验和。

  • IP数据报每经过一个路由器,路由器都要重新计算首部检验和,因为某些字段(生存时间,标志,片偏移等)可能发生变化。
  • 由于IP层本身不提供可靠传输服务,并且计算首部检验和是一项耗时的操作,因此在IPv6中路由器不再计算首部检验和,从而更快转发IP数据报。

源IP地址和目的IP地址:各占32比特,用来填写发送IP数据报的源主机的IP地址和接受该IP数据报的目的主机的IP地址。

可选字段:长度从1个字节到40个字节不等。用来支持排错,测量及安全等措施。可选字段增加了IP数据报的功能,但是也增加了开销。实际上可选字段很少使用。

填充字段:确保首部长度为4个字节的整数倍。使用全0进行填充。

标识字段,标志字段,片偏移字段 这三个字段共同用于IP数据报的分片。

数据链路层协议规定了帧的数据载荷的最大长度,称为最大传输单元MTU。如果某个IP数据报的长度超过MTU,将无法封装成帧,需要将原IP数据报分片为更小的IP数据报。

image-20210613001907462

标识:占16比特,属于同一数据报的各分片具有相同的标识。IP软件维持一个计数器,每产生一个数据报,计数器值就加一,并将该值赋给标识字段。

标志:占3比特,各比特含义如下:

  • DF位:表示是否允许分片,1表示不允许分片,0表示允许分片。
  • MF位:表示本分片后面是否还有分片。1表示还有分片,0表示这是最后一个分片。
  • 保留位:必须设置为0。

片偏移:占13比特,指出 各分片数据报 在 原数据报 的位置。以8个字节为单位。

分片举例:

image-20201019221021157

4.8网际控制报文协议ICMP

为了更有效地转发IP数据报和提高交付成功的机会,在网际层使用网际控制报文协议ICMP。

主机或路由器使用ICMP来发送 差错报告报文询问报文

ICMP报文被封装在IP数据报中发送。

1. ICMP差错报告报文

ICMP差错报文共有五种:

  • 终点不可达
  • 源点抑制
  • 时间超过
  • 参数问题
  • 改变路由(重定向)

(1)终点不可达

当路由器或者主机不能交付数据报时,就向源点发送终点不可达报文。

具体还可根据ICMP的代码字段细分为目的网络不可达,目的主机不可达,目的协议不可达,目的端口不可达,目的网络未知等13种错误。

举例:H1想要发送IP数据报给H2,需要经过R1进行转发,但是R1路由表中没有关于H2的相关条目,会将该数据报丢弃,并向H1发送终点不可达报文。

image-20210613105424133

(2)源点抑制

当路由器或主机由于拥塞而丢弃数据报时,就给源点发送源点抑制报文,使源点知道应该将发送速率放慢。

举例:

image-20210613105740516

(3)时间超过

当路由器收到一个目的地址不是自己的IP数据报时,会将其生存时间TTL减1,若结果不为0,则将该数据报转发出去,若结果为0,则丢弃该数据报,并向源点发送时间超过报文。

另外,当终点在预先规定时间内不能收到一个数据报的全部数据报片时,就把已收到的数据包片都丢弃,并向源点发送时间超过报文。

例如:

image-20210613110034058

(4)参数问题

当路由器或主机收到IP数据报后,根据其首部检验和字段发现首部在传输过程中出现了误码,就丢弃该数据报,并向源点发送参数问题报文。

举例:

image-20210613110442803

(5)改变路由

路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器(更好的路由)。

举例:

image-20210613110736009

以下情况不应发送ICMP差错报告报文:

image-20210613110912711

2. ICMP询问报文

(1)回送请求和回答

ICMP回送请求报文 是 由主机或路由器向一个特定目的主机发送的询问

收到该报文的主机必须给源主机或路由器发送一个 ICMP回送回答报文

这种询问报文用来测试目的站是否可达及了解其有关状态

(2)时间戳请求和回答

ICMP时间戳请求报文 是请求某个主机或路由器回答当前的日期和时间

ICMP时间戳回答报文 中有一个32位的字段,其中写入的整数表示从1900年1月1日到当前时刻一共有多少秒。

这种询问报文用来进行 时钟同步和测量时间。

3. ICMP应用举例

(1)分组网间探测 PING

  • 用来测试主机或路由器之间的连通性,window中为ping命令。
  • 应用层直接使用网际层的ICMP,没有通过运输层的TCP或UDP。
  • 使用ICMP回送请求和回答报文。
image-20210613112626568

(2)跟踪路由 traceroute

image-20210613112858417

traceroute的实现原理:

image-20201019234718107 image-20201019234741268 image-20201019234758693

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

猜你喜欢

转载自blog.csdn.net/OYMNCHR/article/details/119114361