网络层

网络层提供的两种服务

网络层向运输层提供的了两种服务:面向连接、无连接。

面向连接的虚电路

面向连接的思想是基于:可靠交付应由网络来完成

当两台计算机进行通信的时候,应该当先建立连接,也就是在分组交换中建立一条虚电路。以预留双方通信所需的一切网络资源然后双方就沿着已建立的虚电路发送分组。这样的分组的首部不需要填写完整的目的主机地址,而只需要填写这条虚电路的编号,从而减少分组的开销。

无连接的数据报

与面向连接不同,无连接基于思想:计算机拥有差错处理的能力,网络层只向上提供简单灵活的、无连接的、尽最大努力交付的数据报服务

网络在发送分组时不需要先建立连接。每个分组独立发送,与其前后的分组无关。网络层不提供服务质量的承诺。

两种服务的对比

网际协议IP

IP协议是TCP/IP体系中两个最主要的协议之一,也是最重要的互联网标准协议之一。与IP协议配套使用的还有三个协议:

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

虚拟互连网络

一般的概念来讲,将网络互相连接起来要使用一些中间设备。根据中间设备所在的层次,可以有以下四种不同的中间设备:

  • 物理层使用的中间设备叫转发器
  • 数据链路层使用的中间设备叫网桥桥接器
  • 网络层使用的中间设备叫做路由器
  • 在网络层以上使用的中间设备叫网关

当中间设备是转发器或网桥时,仅仅是把一个网络扩大了。从网络的角度来看,这仍然是一个网络,一般并不称之为网络互连。
路由器其实就是一台专用计算机,用来在互联网中进行路由选择


因为没有一种单一的网络能够适应所有用户的需求,所以就有了虚拟互连网络

由于参加互连的计算机网络都使用相同的网际协议IP,因此可以把互连以后的计算机网络看成一个虚拟互连网络。所谓虚拟互连网络也就是逻辑互连网络,它的意思就是互连起来的各种物理网络的异构性本来是客观存在的,但是我们利用IP协议就可以使这些性能各异的网络在网络层看起来好像是一个统一的网络

分类的IP地址

IP地址及其表示方法

整个互联网就是一个单一的、抽象的网络。IP地址是给互联网上的每一台主机的每一个接口分配一个在全世界范围内是唯一的32位标识符。

IP地址的编址方法共经历了三个历史阶段:

  1. 分类的IP地址
  2. 子网划分
  3. 构成超网
分类IP

分类IP就是将IP地址划分成若干个固定类,每一类地址都由两个固定长度的字段组成,其中第一个字段是网络号,第二个字段是主机号。这两个组成的IP地址在整个互联网范围内是唯一的

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

常用的三类IP地址

A类地址的网络号字段占1字节,只有七位可以使用,但可指派的网络号是27-1 = 126个。之所以减2的原因:

  1. IP地址中全0表示“这个”。网络号字段全为0的IP地址是个保留地址,意思是“本网络”,也可以理解为广播地址
  2. 网络号全为1,也就是127保留作为本地软件环回测试本主机进程间通信之用。

A类地址的主机占三个字节,因此每个A类网络中最大主机数是224-2,即16777214个。

IP地址空间共有232,即4294967296个地址。A类地址占整个空间的50%。

B类地址空间网络号字段有两个字节,但前面两位已经固定,只剩下14位可以进行分配。因此B类总是为214-1个,即46383。B类地址的每一个网络上最大主机数是216-1,即65534.

整个B类地址大约有230个,占整个IP地址空间的25%。

C类地址有三个字节的网络号字段,因此此类地址可指派的网络总数是221-1个,主机号28-1个。


IP地址和硬件地址

IP地址和物理地址是两个不同的概念,从层次的角度看,物理地址是数据链路层和物理层使用的地址,而ip地址是网络层及以上各层使用的地址,是一种逻辑地址。


发送数据的时候,使用ip地址的数据报被交付到数据链路层就会被封装成MAC帧,MAC帧在被传送的时候使用的源地址和目标地址都是硬件地址,这两个硬件地址都写在MAC的首部。

连接在通信链路的设备收到MAC帧的时候,根据首部的地址决定是留下还是丢弃。

总之,ip地址在IP数据报的首部,硬件地址在MAC帧的首部!


注意以下几点:

  1. 在IP3层抽象的互联网上只能看到IP数据报
  2. 路由器只根据目的站的IP地址的网络号进行路由选择
  3. 在局域网的链路层,只能看见MAC帧

地址解析协议ARP

刚刚我们知道了IP地址和物理地址的区,那么怎么根据IP地址找到计算机的实际地址呢?

ARP地址解析协议!


因为IP协议使用了ARP协议,所以通常也把ARP协议划入网络层。

IP地址和下面的网络的硬件地址之间由于格式不同而不存在简单的映射关系。此外,在一个网络上可能经常会有新的主机加入进来或删除一些主机。为了解决这个问题,ARP在主机ARP高速缓存中存放了一个IP地址到硬件地址的映射表

每一台主机都有一个ARP高速缓存,里面有本局域网上的各主机和路由器的IP地址到硬件地址的映射表,那么主机是怎样知道这些地址的呢:
当主机A要向本局域网上的某台主机B发送IP数据报时,就在ARP中查找是否有他的硬件地址,如果有就直接发送。
如果查不到,主机就运行ARP,然后按以下步骤找到B的硬件地址。

  1. ARP进程在本地局域网广播一个ARP请求分组
  2. 所有本地局域网的地址运行的ARP进程收到此请求分组
  3. 若有主机和请求的地址一致,就告诉A,我就是你要找的计算机,这是我的地址。
  4. 主机A就在其ARP高速缓存中写入主机B的IP地址到硬件地址的映射

IP数据报的格式

划分子网和构成超网

1985年在原有的网络号+主机号两级IP地址的基础上又加了子网号字段构成了三级IP地址。这种做法就叫划分子网

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


子网掩码

为了解决IP数据报的首部无法看出源主机或目的主机是否进行了子网划分,而引入了子网掩码


从图中可以看到,子网掩码中使用连续的1。

构成超网

网络前缀

子网划分一定程度的解决了互联网中的困难,但是有一个问题变得很严峻:IP地址不够用!因此,就提出了无分类域间路由选择CIDR

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

当然,CIDR还使用斜线记法,即在IP地址后面加上斜线/,然后写上网络前缀所占的位数:128.14.35.7/20。其子网掩码也就是连续的20个1。

最长前缀匹配

使用CIDR带来的一个困扰就是在查找路由表是可能会得到不止一个匹配结果

为了解决这个问题,我们使用匹配结果中具有最长网络前缀的路由,这叫做最长前缀匹配。这样做的原因是网络前缀越长,其地址块就越小,而路由就越具体。

假设有一个地址D = 206.0.71.130

网际控制报文协议ICMP

为了更有效地转发ip数据报和提高交付成功的机会,在网际层使用了网际控制报文协议ICMP。ICMP允许主机或路由器报告差错情况和提高有关异常情况的报告。格式如下:

ICMP报文的种类

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

ICMP报文的前四字节是统一的格式,一共有三个字段:类型、代码和检验和。接着的四个字节的内容和ICMP的类型有关。最后面是数据字段,其长度取决于ICMP的类型。

  1. 终点不可达 当路由器或主机不能交付数据报时就向源点发送终点不可达报文
  2. 时间超过 当路由器收到生存时间为零的数据报时,除丢弃该数据报外,还要向源点发送时间超过报文
  3. 参数问题 当路由器或目的主机收到的数据报的首部中有的字段的值不正确时,就丢弃该数据报,并向源点发送参数问题报文。
  4. 改变路由 路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器。

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

虚拟专用网VPN

为了针对IP地址紧缺且现在机构内部计算机大多都是内部通信的问题,推出了专用地址的概念。

RFC 1918指明了一些专用地址,这些地址只能用于机构内部通信,而不能用于和互联网上的主机通信。在互联网中的所有路由器,对目的地址是专用地址的数据报一律不进行转发

专用地址:
10.0.0.0到10.255.255.255
172.16.0.0到172.31.255.255
192.168.0.0到192.168.255.255

采用这样的专用IP地址的互联网络称为专用互联网或本地互联网。而专用IP地址也叫做可重用地址。

但是,随着全球化的发展。很多打的机构有很多部分分布在全球各地。为了解决这样内部通信专用地址问题,又推出了虚拟专用网VPN

以下是书上举得一个例子:

网络地址转换NAT

当专用网内部的一些主机想和互联网上的主机通信就要用到网络地址转换NAT协议了

此协议就是把一个专用网内部向外访问都使用一个全球IP地址。然后外部返回的数据再经过内部网的一个NAT转换表到达内部的专用网主机上。

参考文献

[1] 谢希仁.计算机网络(第七版).电子工业出版社,2017.1.
[2] 严峻.计算机与网络基础课件.西安理工大学,2020.7.