计算机网络 网络层

本文将介绍计算机网络中的网络层。

一、网络层的作用

  • 提供主机之间的通信服务

    点到点通信

  • 通过分组交换的方式,由路由器 “接力” 传递数据

  • 具体任务有两个:

    • 通过一定的算法,在互联网中的每一个路由器上生成一个用于转发分组的路由表
    • 在每一个路由器接受到分组时,依据转发表将分组转发,直至传送到目标主机

二、虚电路服务与数据报服务

网络层应该提供怎样的服务曾引起了长期的争议,争论双方所持有的观点分别如下:

  • 虚电路服务

    • 面向连接
    • 保证可靠
    • 通信时,首先建立连接、分配资源,然后使用已建立的 “虚电路” 发送数据
  • 数据报服务

    • 不保证可靠

    • 网络层尽可能地简单,向其上层只提供简单灵活的、无连接的、尽最大努力交付的数据报服务

      具体请看:

      计算机网络 概述 - 分组交换

互联网采用的设计思路是:数据报服务。

三、路由器间传送的信息

路由器间传送的信息可以被分为两个部分:

  • 分组数据:源主机要发送至目的主机的数据会被路由器接力发送
  • 路由信息:路由器之间会彼此不断地交换路由信息,以便形成用于转发分组的路由表

四、IP 协议

1. 说明

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

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

  • 地址解析协议 ARP
  • 网际控制报文协议 ICMP
  • 网际组管理协议 IGMP

2. 虚拟互联网络

多个计算机网络相连,使用相同的 IP 协议,可以互联形成一个虚拟互联网络。

3. IP 地址

(1) 什么是 IP 地址?

IP 地址是给互联网上的每一台主机(或路由器)的每一个接口分配一个在全世界范围内唯一的 32 位标识符。

下面将 “主机(或路由器)” 简写为 “主机”

(2) 二进制代码

IP 地址是 32 位的二进制代码,一般采用 “点分十进制记法”,方便书写与记忆。

(3) 网络号和主机号

IP 地址由两部分组成,分别为:

  • 网络号:标志着连接的网络;网络号在整个互联网中应该是唯一的
  • 主机号:标志着主机;主机号在所连接的网络中应该是唯一的

因此,IP 地址标识了 连接到某个网络的某台主机

(4) 网络号与主机号的划分

已知 IP 地址的实质是二进制代码,又已知 IP 地址由网络号和主机号两部分组成,那么网络号和主机号这两部分应该如何划分呢?

互联网早期使用 “分类的 IP 地址” 这一划分方式;近年来,采用无分类编址 CIDR。

(5) 分类的 IP 地址

将 IP 地址分为 A、B、C、D、E 类,每一类通过前缀区分,网络号和主机号分别占据不同的长度,可以容纳不同数量的网络和主机。

因此,可以根据各个单位的数量及单位内主机数量,为它们分配不同类型的网络。

这种划分方式存在着一些问题:

  • A 类地址主机数过多,一般的网络根本无法用完
  • C 类地址主机数过少,往往难以满足基本需求
  • 一般来说,单位为了避免主机数不够用,往往会申请 “更高” 的类别,因此会造成主机数的浪费

(6) 无分类编址 CIDR

无分类编址 CIDR 依然由网络号和主机号两部分组成,只不过网络号不再占据固定的长度,而是可以在 0 ~ 32 之间选取任意的值。

为了区分网络号和主机号,CIDR 分别使用了 “斜线记法” 和 “地址掩码”,具体如下:

  • 斜线记法:方便人查看;在 IP 地址后面加上 /数字,用于表示网络号占据的位数
  • 地址掩码:方便机器查看;增加一个 32 位的地址掩码,用 1 的个数表示网络号占据的位数

五、转发分组的过程

分组在互联网上将基于终点进行传送与转发。

  • 分组到达一个路由器

  • 路由器根据分组的目的地址查找转发表,获取转发地址

    在查找下一跳的 IP 地址时,并不直接根据目的地址查找,而是根据 “目标地址中的网络号” 查找。先以目的主机的所在网络为目标,因为互联网上的网络数远小于主机数,通过这种方式可以显著加快转发地址的查找。

  • 计算出转发地址后,转发

六、网际控制报文协议 ICMP

1. 什么是 ICMP ?

为了更有效地转发 IP 数据报和提高交付成功的机会,在网络层使用了网际控制报文协议 ICMP,ICMP 报文会被作为数据放置于 IP 数据报中,用于报告差错情况。

2. ICMP 报文的种类

  • 差错报告报文

    • 终点不可达:用于向源点说明数据无法被送达到终点

    • 时间超过:当路由器接受到生存时间为零的数据报时,应该丢弃数据报,并向源点发送该报文;当终点在预先规定的时间内不能收到一个数据报的全部分片时,应该将已收到的分片丢弃,并向源点发送该报文

    • 参数问题:如果数据报的首部中有些字段的值错误,则丢弃该数据报,向源点发送该报文

    • 改变路由:当路由器认为有比自身更好的路由时,会发送该报文,让主机知道下次应该发送给其它路由器

      在互联网中,主机也应该维护一个转发表,但处于效率考虑,主机并不会像路由器一样定期交换路由信息。一般情况下,主机只会使用默认的路由器

  • 询问报文

    • 回送请求 / 回送回答:主机可以向目的主机发送 “回送请求”,接收的主机必须返回 “回送回答”;用于检测目的地址是否可以到达,并且了解其状态
    • 时间戳请求 / 时间戳回答:主机可以向目的主机发送 “时间戳请求”,接收的主机应该返回 “时间戳回答”;用于计算往返时延

七、IPv6

IPv4 是 20 世纪 70 年代末期设计的,经过数十年的发展,IPv4 地址已经全部耗尽。

解决 IP 地址耗尽的根本措施是采用具有更大地址空间的新版本 IP,即 IPv6,它将地址由 IPv4 的 32 位扩大到 128 位。

参考

  • 《计算机网络》