网络层

🗨️字数统计=5.3k字 ⏳阅读时长≈18分钟

一、思维导图

⛔ 图中有错:DHCP协议是应用层协议

img


二、网络层功能

在 计算机网络中进行通信的两个计算机之间可能会经过很多个数据链路,也可能还要经过很多通信子网。

网络层的任务就是选择合适的网间路由和交换结点, 确保数据及时传送。 在发送数据时,网络层把运输层产生的报文段或用户数据报封装成分组和包进行传送。

在 TCP/IP 体系结构中,由于网络层使用 IP 协议,因此分组也叫 IP 数据报 ,简称 数据报。

网络层功能概述:

  • 路由选择与分组转发
  • 异构网络互联
  • 拥塞控制

三、数据交换方式

为什么要数据交换:交换是通过某些交换中心将数据进行集中和传送,传输线路为各个用户共用,从而大大节省通信线路,降低系统费用。如果网络规模较大,则把交换设备连接在一起形成交换网络。

img

1. 电路交换

最典型的电路交换网络:电话网络

特点:独占连接

电路交换的三个阶段:

  • 建立连接
  • 通信
  • 释放连接

img

2. 报文交换

无需建立连接,一次性发送,存储转发

img

3. 分组交换

相当于把报文分割成一个一个的小组,在每个分组的首部写入发送端和接收端的地址,同样是存储转发不同站点的数据分组可以交织在同一线路上传输,提高了线路的利用率

什么时候使用分组交换:

当一个IP数据报从一个主机传输到另一个主机时,它可能通过不同的物理网络。每个物理网络上都有各自的最大帧的大小,即最大传输单元MTU,若传输的IP数据报超过MTU,此时就会对整个IP数据包进行分组


分组交换又区分为数据报方式和虚电路方式

① 数据报

特点:不同分组(传输的分组称为数据报)的下一跳结点可能不同。随时发送,随时接收,无连接服务。同一报文的不同分组到达目的结点时可能发生乱序、重复或丢失

img

② 虚电路

将数据报方式和虚电路方式结合,以发挥两者的优点。

维持一条虚电路的建立,非实际物理连接。一次通信的所有分组都通过虚电路顺序传送,同一报文的不同分组到达目的结点时不会发生乱序、丢失和重复。

img

③ 数据报和虚电路比较

数据报

  • 无需建立连接;
  • 每个数据报中需带地址信息(冗余信息),占用信道资源;
  • 用户的连续数据块会无序地到达目的地,接收站点予以排序。
  • 当使用网状拓扑组建网络时,任一中间结点或者线路的故障 不会影响数据报的传输(可以选择不同的路径),可靠性较高。
  • 数据报较适合站点之间小批量数据的传输(存储排序占用资 源)。

虚电路

  • 需建立连接和释放虚电路;
  • 数据分组中仅含少量的地址信息(LC号),用户的连续数据 块沿着相同的路径,按序到达目的地;接收站点处理方便。
  • 如果虚电路中的某个结点或者线路出现故障,将导致虚电路中断,传输失效。
  • 虚电路方式较适合站点之间大块数据的传输(地址冗余量小)

4. 三种交换方式比较

img

电路交换:类似打电话,独占这条线路,其他人无法参加,需要建立连接,比特流直达,速度快(电路交换传bit流,发生在物理层)

报文交换:报文是应用层传输单位,即站点一次性要发送的数据块,无须建立连接,采用存储转发的方式,速度较慢(报文交换传报文,发生在应用层)

分组交换:是将较大的数据分割成小块,无须建立连接,采取存储转发的方式,速度比报文交换快,比电路交换慢,可能产生分组丢失,乱序的情况(分组交换传分组/IP数据报,发生在网络层)

5. 数据交换方式的选择

img


四、IP 协议

1. 概述

  • IP协议:因特网中的基础协议; IP协议屏蔽下层各种物理网络的差异, 向上层(主要是TCP层或UDP层)提供统一的IP数据报。

  • IP数据报:由IP协议控制传输的协议单元。 IP数据报中含有发/收方的IP地址。

2. IP 协议提供的功能

IP提供无连接的、不可靠的、尽力的数据报投递服务

  • 无连接的投递服务

    发送端可于任何时候自由发送数据,而接收端永远不知道自己会在何时从哪里接收到数据。每个数据报独立处理和传输, 一台主机发出的数据报序列,可能取不同的路径, 甚至其中的一部分数据报会在传输过程中丢失;

  • 不可靠的投递服务

    IP协议本身不保证数据报投递的结果。 在传输的过程中,数据报可能会丢失、重复、延迟和乱序等, IP协议不对内容作任何检测,也不将这些结果通知收发双方; IP数据报的丢失,通过路由器发 ICMP报文 告知; 必要时,由高层实体(如TCP)负责差错恢复动作。

  • 尽力投递服务

    执行数据报的分段和封装,以适应具体的传输网络, 由最终结点的IP模块进行合段处理

    不同物理网络对传输的帧 /分组的体积有不同的规定; 当数据报长度 > MTU(最大传输单元 MTU—Maximun Transfer Unit )时,需对数据报分段 。

3. IP 数据报格式

img

  • 版本 : 有 4(IPv4)和 6(IPv6)两个值;
  • 首部长度 : 占 4 位,因此最大值为 15。值为 1 表示的是 1 个 32 位字的长度,也就是 4 字节。因为固定部分长度为 20 字节,因此该值最小为 5。如果可选字段的长度不是 4 字节的整数倍,就用尾部的填充部分来填充。
  • 区分服务 : 用来获得更好的服务,一般情况下不使用。
  • 总长度 : 包括首部长度和数据部分长度。
  • 生存时间 :TTL,它的存在是为了防止无法交付的数据报在互联网中不断兜圈子。以路由器跳数为单位,当 TTL 为 0 时就丢弃数据报。
  • 协议 :指出携带的数据应该上交给哪个协议进行处理,例如 ICMP、TCP、UDP 等。
  • 首部检验和 :因为数据报每经过一个路由器,都要重新计算检验和,因此检验和不包含数据部分可以减少计算的工作量。
  • 标识 : 在数据报长度过长从而发生分片的情况下,相同数据报的不同分片具有相同的标识符。
  • 片偏移 : 和标识符一起,用于发生分片的情况。片偏移的单位为 8 字节。
    数据报分片举例:
    img

五、IPV4地址

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

1
IP 地址 ::= {< 网络号 >, < 主机号 >}

img

  • 网络号全0代表本机

  • 主机号全1代表广播地址

img

为解决IPV4地址不足的问题,现有的如下3种方案

  • NAT 地址转换
  • 子网划分
  • CIDR 无分类编址

当然,这些方案治标不治本,IPV6才是最终归宿

1. 网络地址转换 NAT

专用网内部的主机使用本地 IP 地址又想和互联网上的主机通信时,可以使用 NAT路由器 来将本地 IP 转换为全球 IP。

img

2. 子网划分

两级IP地址 (网络号+主机号) ——> 三级IP地址 (网络号+子网号+主机号)

1
IP 地址 ::= {< 网络号 >, < 子网号 >, < 主机号 >}

img

子网掩码:网络号全1,主机号全0

img

img

注意,外部网络看不到子网的存在。


子网划分相关习题:

有关子网划分的习题可参见这篇文章 👉 计算机网络——子网划分(内含习题讲解)

常见进制转换:👇

十进制 二进制
255 1111 1111
192 1100 0000
128 1000 0000
127 0111 1111

3. 无分类编址 CIDR 构成超网

无分类编址 CIDR 消除了传统 A 类、B 类和 C 类地址以及划分子网的概念,使用网络前缀和主机号来对 IP 地址进行编码,网络前缀的长度可以根据需要变化。

CIDR 把网络前缀都相同的连续 IP 地址组成一个 CIDR 地址块

1
IP 地址 ::= {< 网络前缀号 >, < 主机号 >}

CIDR 的记法上采用在 IP 地址后面加上网络前缀长度的方法,例如 128.14.35.7/20 表示前 20 位为网络前缀

img

一个 CIDR 地址块中有很多地址,一个 CIDR 表示的网络就可以表示原来的很多个网络,并且在路由表中只需要一个路由就可以代替原来的多个路由,减少了路由表项的数量。把这种通过使用网络前缀来减少路由表项的方式称为路由聚合,也称为 构成超网

在路由表中的项目由“网络前缀”和“下一跳地址”组成,在查找时可能会得到不止一个匹配结果,应当采用最长前缀匹配来确定应该匹配哪一个。


六、ARP 地址解析协议

网络层实现主机之间的通信,而链路层实现具体每段链路之间的通信。因此在通信过程中,IP 数据报的源地址和目的地址始终不变,而 MAC 地址随着链路的改变而改变。

ARP(Address Resolution Protocol )实现由 IP 地址得到 MAC 地址。

img

每个主机都有一个 ARP 高速缓存,里面有本局域网上的各主机和路由器的 IP 地址到 MAC 地址的映射表

如果主机 A 知道主机 B 的 IP 地址,但是 ARP 高速缓存中没有该 IP 地址到 MAC 地址的映射,此时主机 A 通过广播的方式发送 ARP 请求分组(该分组携带自己的 IP 地址 和 MAC 地址 以及 目标主机的 IP 地址),主机 B 收到该请求后会发送 ARP 响应分组 给主机 A 告知其 MAC 地址,随后主机 A 向其高速缓存中写入主机 B 的 IP 地址到 MAC 地址的映射。

RARP 协议 实现 MAC地址 ——> IP 地址


七、ICMP 网际控制报文协议

ICMP 是为了更有效地转发 IP 数据报和提高交付成功的机会。IP 数据报传输失败时,ICMP报文由路由器产生, 被封装在IP数据报的数据区中进行传输,进行差错报告。

功能:ICMP 协议负责网络设备和结点之间的控制和差错报告报文的传输

img

ICMP 报文分为差错报告报文和询问报文,详细类型分类如下:

img

ICMP 可视为对 IP 协议的补充:弥补部分差错报告的功能

当中间路由器发现传输错误(借助报头校验和) 时,IP 模块丢弃该 IP 数据报,ICMP 实体向信源主机返回ICMP 报文,报告出错情况,以便信源主机采取相应的措施。

ICMP的应用:

  • Ping
    Ping 是 ICMP 的一个重要应用,主要用来测试两台主机之间的连通性。

    Ping 的原理是通过向目的主机发送 ICMP Echo 请求报文,目的主机收到之后会发送 Echo 回答报文。Ping 会根据时间和成功响应的次数估算出数据包往返时间以及丢包率。

  • Traceroute
    Traceroute 是 ICMP 的另一个应用,用来跟踪一个分组从源点到终点的路径。使用了ICMP时间超过差错报告报文


八、IPV6

32位 IPV4地址空间已分配殆尽,CIDR,NAT治标不治本,IPV6 从根本上解决地址耗尽问题。

1. IPV6 和 IPV4 区别

img

2. IPV6基本地址类型

  • 单播
  • 多播
  • 任播
img

3. IPv6向IPv4过渡的策略

  • 双栈协议

    双栈协议就是在一台设备上同时启用 IPV4 协议栈和 IPV6 协议栈

  • 隧道协议

    将IPV6协议通过隧道包装成IPV4协议再进行发送

    img


九、路由器分组转发流程

  • 从数据报的首部提取目的主机的 IP 地址 D,得到目的网络地址 N。
  • 若 N 就是与此路由器直接相连的某个网络地址,则进行直接交付;
  • 若路由表中有目的地址为 D 的特定主机路由,则把数据报传送给表中所指明的下一跳路由器;
  • 若路由表中有到达网络 N 的路由,则把数据报传送给路由表中所指明的下一跳路由器;
  • 若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器;
  • 报告转发分组出错。

img


十、动态路由选择协议 / 路由算法

路由选择协议都是自适应的,能随着网络通信量和拓扑结构的变化而自适应地进行调整。

互联网可以划分为许多较小的 自治系统 AS,一个 AS 可以使用一种和别的 AS 不同的路由选择协议。

可以把动态路由选择协议划分为两大类:

  • 自治系统内部的路由选择:RIP 和 OSPF
  • 自治系统间的路由选择:BGP

img

1. 内部网关协议 RIP 距离向量算法

RIP 是一种基于距离向量的路由选择协议。距离是指跳数,直接相连的路由器跳数为 1。跳数最多为 15,超过 15 表示不可达。

RIP 按固定的时间间隔仅和相邻路由器交换自己的路由表,经过若干次交换之后,所有路由器最终会知道到达本自治系统中任何一个网络的最短距离和下一跳路由器地址。

距离向量算法:

img

RIP 协议实现简单,开销小。但是 RIP 能使用的最大距离为 15,限制了网络的规模。并且当网络出现故障时,要经过比较长的时间才能将此消息传送到所有路由器(若网络1出现故障,则路由表到网1的距离增大到16的时候才知道网1是不可达的)。好消息传得快,坏消息传得慢

RIP 习题举例:

假设网络中路由器B的路由表如下

目的网络 距离 下一跳路由
N1 7 A
N2 2 C
N6 8 F
N8 4 E
N9 4 F

现在B收到C发过来的路由信息

目的网络 距离
N2 4
N3 8
N6 4
N8 3
N9 5

首先,我们修改一下C发过来的路由表,将所有距离 +1,并修改下一跳为 C

目的网络 距离 下一跳
N2 5 C
N3 9 C
N6 5 C
N8 4 C
N9 6 C

则路由器B更新后的路由表为:

算法原则:

  • 下一跳相同,替换原路由表信息
  • 下一跳不同,若传过来的项目距离比原路由距离小,则更新,否则不更新
  • 若原路由表中没有传过来的路由信息,则进行添加
目的网络 距离 下一跳路由 解释
N1 7 A C中没有N1的信息,不需要更新
N2 5 C 下一跳相同,直接更新
N3 9 C B中没有N3的信息,添加
N6 5 C 下一跳不同,且C中到N6的距离为4,小于B到N6的距离8,需更新
N8 4 E 下一跳不同, B、C到N8的距离相同,不更新
N9 4 F 下一跳不同,B到N9的距离为4,小于C到N9的距离5,不更新

2. 内部网关协议 OSPF 链路状态路由算法

开放最短路径优先 OSPF,是为了克服 RIP 的缺点而开发出来的。

开放表示 OSPF 不受某一家厂商控制,而是公开发表的;最短路径优先表示使用了 Dijkstra提出的最短路径算法 SPF。

OSPF 算法选择路由的标准是带宽(或者说代价)

OSPF 具有以下特点:

  • 向本自治系统中的所有路由器发送信息,这种方法是洪泛法。

  • 发送的信息就是与相邻路由器的链路状态,链路状态包括与哪些路由器相连以及链路的度量,度量用费用、距离、时延、带宽等来表示。

  • 只有当链路状态发生变化时,路由器才会发送信息。

  • 所有路由器都具有全网的拓扑结构图,并且是一致的。相比于 RIP,OSPF 的更新过程收敛的很快。

3. 外部网关协议 BGP

BGP(Border Gateway Protocol,边界网关协议),基于 TCP 协议

AS 之间的路由选择很困难,主要是由于:

  • 互联网规模很大;
  • 各个 AS 内部使用不同的路由选择协议,无法准确定义路径的度量;
  • AS 之间的路由选择必须考虑有关的策略,比如有些 AS 不愿意让其它 AS 经过。

BGP 只能寻找一条比较好的路由,而不是最佳路由。

每个 AS 都必须配置 BGP 发言人通过在两个相邻 BGP 发言人之间建立 TCP 连接来交换路由信息。


十一、虚拟专用网 VPN

由于 IP 地址的紧缺,一个机构能申请到的 IP 地址数往往远小于本机构所拥有的主机数。并且一个机构并不需要把所有的主机接入到外部的互联网中,机构内的计算机可以使用仅在本机构有效的 IP 地址(专用地址)。

有三个专用地址块:

  • 10.0.0.0 ~ 10.255.255.255
  • 172.16.0.0 ~ 172.31.255.255
  • 192.168.0.0 ~ 192.168.255.255

VPN 使用公用的互联网作为本机构各专用网之间的通信载体。专用指机构内的主机只与本机构内的其它主机通信;虚拟指好像是,而实际上并不是,它有经过公用的互联网。

下图中,场所 A 和 B 的通信经过互联网,如果场所 A 的主机 X 要和另一个场所 B 的主机 Y 通信,IP 数据报的源地址是 10.1.0.1,目的地址是 10.2.0.3。数据报先发送到与互联网相连的路由器 R1,R1 对内部数据进行加密,然后重新加上数据报的首部,源地址是路由器 R1 的全球地址 125.1.2.3,目的地址是路由器 R2 的全球地址 194.4.5.6。路由器 R2 收到数据报后将数据部分进行解密,恢复原来的数据报,此时目的地址为 10.2.0.3,就交付给 Y。

img


十二、IP 多播 + IGMP 网际组管理协议

1. IP 多播

对于广播方式,将数据发送给所有终端主机,再由这些主机 IP 之上的一层去判断是否有必要接收数据,这种方式会给哪些毫无关系的网络或者主机带来影响,造成网络上产生很多不必要的流量。

而且广播无法穿透路由,若想给其他网段发送同样的包,就不得不采取另一种机制。因此,多播这种既可以穿透路由器,又可以实现只给那些必要的组发送的数据包的技术就成为必选之路的。

多播使用 D 类地址,即 1110 开头的 IP 地址就可以认为是多播地址。而剩下的 28 位可以成为多播的组编号。

利用 IP 多播实现通信,除了地址外还需要 IGMP 等协议的支持。

2. IGMP 网际组管理协议

IGMP 协议让路由器知道本局域网上是否有主机参加或退出了某个组播组

img

img


十三、网络层设备 — 路由器 / 三层交换机

工作在 OSI 第三层,因此路由器也称为三层交换机。

路由器从功能上可以划分为:路由选择分组转发

路由器主要用来连接两个不同类型的网络。

分组转发结构由三个部分组成:交换结构、一组输入端口和一组输出端口。

img

img

分享到