网络层提供的服务是,主机与主机的数据传输。发送主机向接收主机发送数据段( segment)。首先,发送主机将来自传输层的数据段封装到数据报中,然后传输给接收主机,途中可能会经过路由器,路由器和主机一样,都运行网络层的协议,路由器会根据ip数据报的头部信息选择转发路径。接收主机接收到数据报之后,再向上交付,交给传输层。
网络层核心功能-转发与路由
转发(forwarding):将分组从路由器的输入端口转移到合适的输出端口 路由(routing): 确定分组从源到目的经过的路径。
数据分组传输之前两端主机需要首先建立虚拟/逻辑连接。网络设备(如路由器)参与连接的建立。 网络层连接与传输层连接的对比:
网路层服务类型主要有两种,分别是无连接服务(connection-less service)和连接服务(connection service)
数据报(datagram)网络与虚电路(virtual-circuit)网络是典型两类分组交换网络
下面我们分别详细介绍这两种重要的服务,数据报网络和虚电路网络
虚电路:一条从源主机到目的主机, 类似于电路的路径(逻辑连接)
简单的说,就是先逻辑上建立一条连接,确定一条传输的路径,然后所有分组的传输都是走这同一条路径,而且每个分组独占这条链路的全部带宽。
image.png
虚电路的通信过程分为三步:呼叫建立(call setup)→数据传输→拆除呼叫
呼叫建立后,会唯一确定一条传输的链路,这条链路会有一个标识,随后每个分组携带的不是目的地址,而是这条链路的标识。每个分组携带虚电路标识(VCID),而不是目的主机地址,虚电路经过的每个网络设备( 如路由器) , 维护每条经过它的虚电路连接状态。
也就是说,路由器是根据虚电路号来进行转发的,所以分组携带的不是目的地址而是虚电路号。 沿某条虚电路传输的分组,携带对应虚电路的VCID,而不是目的地址 同一条VC ,在每段链路上的VCID通常不同 路由器转发分组时依据转发表改写/替换虚电路号
image.png
image.png
我们家庭用的固定电话机通常就是用的虚电路。
网络层无连接 每个分组携带目的地址
路由器根据分组的目的地址转发分组
image.png
数据报的转发表,我们最直观的想法当然是根据不同的目的地址确定转发出口,如图
image.png
但这样会造成一个问题,我们有四十多亿个ip地址,如果每个ip都这样配置一个输出链路,显然转发表会变的巨大无比,转发效率也会降低,所以我们采用的解决方法是通过ip地址范围进行转发
image.png
如下图的数据转发表
image.png
在匹配的时候,我们采用最长前缀匹配策略,也就是尽可能选择细的地址范围。
最长前缀匹配优先:在检索转发表时,优先选择与分组目的地址匹配前缀最 长的入口( entry)。
image.png
Internet (数据报网络)
ATM (VC网络)