我们在上一章中了解到,传输层依靠网络层的主机到主机通信服务提供各种形式的进程到进程通信。我们还了解到,传输层在不了解网络层实际如何实施此服务的情况下执行此操作。因此,您现在可能想知道,主机到主机通信服务的背后隐藏着什么,是什么让它运转起来的?<br />在本章和下一章中,我们将确切了解网络层如何提供主机到主机的通信服务。我们将看到,与传输层和应用层不同,网络中的每台主机和路由器都有一块网络层。正因为如此,网络层协议是协议栈中最具挑战性的协议之一(因此也是最有趣的协议之一!)。<br />由于网络层可以说是协议栈中最复杂的一层,因此我们在这里有很多要介绍的内容。事实上,要涵盖的内容太多了,我们用两章来介绍网络层。我们将看到,网络层可以分解为两个交互部分,即**数据平面和控制平面(the data plane and the control plane)**。在第4章中,我们将首先介绍网络层的数据平面功能——网络层中的每个路由器的功能,它们确定到达路由器的一条输入链路的数据报(datagram)(即,网络层数据包(network-layer packet))如何转发到该路由器的一条输出链路。我们将介绍传统IP转发(forwarding)(其中转发是基于数据报的目的地址)和通用转发(generalized forwarding,其中转发和其他功能可以使用数据报首部(header)中几个不同字段中的值来执行)。我们将详细研究IPv4和IPv6协议和寻址(addressing)。在第5章中,我们将介绍网络层的控制平面功能——网络范围的逻辑,它控制数据报如何沿着从源主机到目的主机的端到端路径在路由器之间路由。我们将介绍路由算法(routing algorithms),以及当今Internet中广泛使用的路由协议,如OSPF和BGP。传统上,这些控制平面路由协议和数据平面转发功能在一台路由器内一起整体实施。软件定义网络(Software-defined networking,SDN)通过将这些控制平面功能作为单独的服务(通常在远程“控制器(controller)”中)来实现,从而明确地将数据平面和控制平面分开。我们还将在第5章介绍SDN控制器。<br />网络层中数据平面和控制平面功能之间的这种区别是您在学习网络层时要牢记的一个重要概念——它将帮助您构建对网络层的思考,并反映出对网络层在计算机网络中作用的现代观点。