0%

网原 5.1 通信子网的操作方式和网络层提供的服务

网络层是OSI参考模型的第3层,高于数据链路层,低于传输层。

数据链路层提供了相邻节点间利用帧传输数据的能力。
网络层在此基础上,进一步管理网络通信,将数据从信源经过若干个节点传输到信宿,向传输层提供了最基本的点到点 端到端 的数据传输服务。

端到端,有2种理解:

  1. 源端-目的端:比如上文中“网络层提供了端到端的数据传输服务”。
  2. 源主机的某端口-目的主机的某端口:专用于传输层。

网络层还控制了通信子网的运行,影响了资源子网访问通信子网的方式。

网络层是通信子网(物理层、数据链路层、网络层)中最复杂最关键的一层。

网络层的目的:
实现信源和信宿之间,数据的透明传输。
(换句话说,有了网络层,信源和信宿就不需要关心数据是如何传输的)。

网络层的具体功能包括:

  • 路由选择
  • 拥塞控制
  • 网际互连

5.1 通信子网的操作方式和网络层提供的服务

通信子网的职责:向资源子网(端系统,即信源/信宿)提供网络服务。

在OSI参考模型中,网络层是网络节点(通信子网)的最高层,“提供网络服务”的职责必然就落在在网络层(根据“低层向高层提供服务”的原则)。

如果通信子网采用分组交换方式,网络节点可以向端系统提供 2 种网络服务:

  1. 面向连接的服务(虚电路)
  2. 无连接服务(数据报)

通信子网内部有虚电路和数据报两种操作方式(运行方式)。

服务和操作方式没有联系,任何一种操作方式都可以实现面向连接服务和无连接服务。

5.1.1 虚电路操作方式

虚电路

数据传输前,在源节点和目的节点(包括端系统)间的物理信道中,先建立一条用于传输分组的逻辑通路,这条逻辑通路称为“虚电路”。

物理信道复用:
一条物理信道中可能存在多条虚电路,这些虚电路可能属于同一对信源信宿(不同的进程建立了不同的虚电路),也可能属于不同的信源信宿(不同的端系统的进程,建立的不同的虚电路)。

注意:
虚电路并非是信源-信宿的逻辑通路,而是信源和信宿间进程级的逻辑通路。

两个端系统之间,可以有多条虚电路为不同的进程服务。
这些虚电路的实际物理路径可能相同,也可能不同,我认为这取决于物理信道能够划分出多少个虚电路吧。

物理信道复用

频分多路复用 FDM 适用于模拟信号。
时分多路复用 TDM,既适合模拟信号,也适用于数字信号。

对于分组交换方式,显然应采用时分多路复用 TDM。

物理信道是如何划分为多条逻辑信道的?
每一段物理信道的起始网络节点内部,都有一组“分组缓冲器”(packet buffer),每个缓冲器的编号称为“逻辑信道号”(也称为虚电路号,VC号)。
在该段物理信道上建立虚电路时,网络节点会为虚电路分配某个缓冲器以转发分组,这个过程也称为“虚电路获取逻辑信道号”。
最终通过异步时分复用(动态划分时间片),实现物理信道复用。

虚电路表

虚电路可能会经过多个网络节点,在每段物理信道上都可能获取到不同的逻辑信道号。

分组到达某个网络节点时,携带了虚电路号(VC号),节点必须根据虚电路号,从某种表格中查出下一节点的名称和下一节点为虚电路分配的逻辑信道号,才能完成转发工作(虚电路的工作原理后文讲述)。
这个表格就是“虚电路表”。

虚电路表记录了:

  • 每条虚电路的“来路”:前节点名称、前节点为虚电路分配的逻辑信道号
  • 每条虚电路的“出路”:后节点名称、后节点为虚电路分配的逻辑信道号
虚电路分组交换如何工作

分组携带“出路”信息到达下一节点,节点将其作为“来路”查询虚电路表,从而确定:

  • 后节点名称
  • 后节点为其分配的逻辑信道号。

然后用“后节点逻辑信道号”,替换掉“前节点逻辑信道号”,再发给后节点。

后续节点重复上述操作。

虚电路表的建立
  1. 自考教材上的虚电路节点名称有错误。②1-ABC应该是“②1-ACD”。
  2. 下图中的 H 指 HOST(端系统,信源/信宿)
  3. HOST同样需要给分组分配逻辑信道号,H 0 表示端系统为虚电路分配了逻辑信道号 0。
  4. 建立虚电路时,节点采用和数据报传输一样的方式,通过各节点的路由能力,为呼叫请求分组寻找虚电路路径。

虚电路表是在建立虚电路时构建起来的。

假设有一条虚电路:信源H--A--B--C--D--信宿 H

建立虚电路时,信源发出一个“呼叫请求分组”,其中包含了:

  • 信宿的地址
  • 信源为其分配的逻辑信道号\(N_{src}\)

节点收到呼叫请求分组后,会在“和后节点之间的物理信道的”分组缓冲器中,分配一个未使用的、最小的 逻辑信道号 \(N_A\)
然后将呼叫请求分组中“信宿分配的逻辑信道号 \(N_{src}\)” ,替换成 \(N_A\),发给后节点。

此时,节点A中就生成了有关来路、出路信息的虚电路表。

需要注意的是:

  1. 分组缓冲器与物理信道有关。

比如:
A-B 和 A-C 是两段物理信道,在A节点内部就有 A-B的分组缓冲器 和 A-C的分组缓冲器。
如果在A-B上要建立两条虚电路,那么就会有 A0-B(x), A1-B(x)。
A-C只建立一条虚电路,就有 A0-C(x)。

  1. 虚电路上分组可以双向传输,由此引出一个问题:
    节点为新的虚电路分配逻辑信道号时,还需要考虑:不要与“该段物理信道正反两个方向已分配的逻辑信道号”相重复。

记住一个原则:虚电路只能是进程对独占的,无法共享。

比如:
存在虚电路 ABCD,虚电路A-B占用A0,B0,此时有两个方向都可以传输分组:A0-B0, B0-A0。
如果再建立新的虚电路 BAC,B-A必然复用 A-B的物理信道,此时如果还为其分配 B0-A0就会和虚电路ABCD混淆(虚电路是进程独占的),因此,应该使用逻辑信道号B1- A1。

说明:逻辑信道号与虚电路建立的先后顺序有关。

教材解析:
>这里假设建立了6条虚电路。由于虚电路上的数据是双向传输的,为保证两节点之间正、反两个方向的虚电路不相混淆,在一个节点选取虚电路号来替换其前一节点使用的虚电路号时,不仅要考虑与下一节点之间的虚电路号不相同,还要考虑与下一节点作为另一条反向虚电路的上一节点时所选取的虚电路号相区别。

”不仅要考虑与下一节点之间的虚电路号不相同“,意思是说:该物理信道上已经存在虚电路,所以不能重复。

拆除虚电路

虚电路表、逻辑信道号都是网络资源,当虚电路拆除时必须释放。
信源或信宿都可以发出一个拆除请求分组,各节点收到后就删除虚电路表中的对应项。

5.1.2 数据报操作方式

数据报:就是分组,在数据报操作方式中分组被称为“数据报”。

信源把报文分割成多个数据报,依次发送给与信源相连的网络节点。

每个数据报携带了:

  • 分组序号
  • 信宿的地址

通信子网中的网络节点收到分组后,根据分组中的地址信息、自身保存的路由信息、网络的实时流量、故障信息,独立决策,寻找下一个节点,并将分组发送出去。

同一报文的不同数据报,在网络中的路径可能不同。各数据报到达信宿的先后顺序也不同,还可能在中途丢失。

5.1.3 虚电路服务

虚电路服务:网络层向传输层提供的一种数据传送方式。
一种使分组“顺序到达”目的端系统的、可靠的(面向连接的)数据传送方式。

虚电路服务,也是通信子网向端系统提供的服务。

建立虚电路的步骤
  • 在源端:

    1. 信源的传输层,向网络层发出“连接请求”
    2. 网络层,向与“端系统相连的网络节点”发出“呼叫分组”
  • 在通信子网中

    1. 节点之间传送“呼叫分组”,建立虚电路表
  • 在目的端

    1. 网络节点,向网络层传送“呼叫分组”
    2. 网络层,向传输层发出“连接指示”
    3. 传输层,向源端返回“连接响应”。

    如果以上步骤都成功,虚电路就建立起来了。

通信子网有2种方式实现虚电路服务

在通信子网内部,有2种方式可以实现虚电路服务:

1.纯虚电路操作方式

虚电路贯穿了:源端系统 -- 通信子网的各网络节点 -- 目的端系统。
两个端系统的网络层,和“通信子网中网络节点的网络层”,具有相同的操作方式。

SNA(IBM System Network Architecture)网络就是这种纯虚电路操作方式。

2.虚电路+数据报混合操作方式

与端系统相连的网络节点:简称为“端邻节点”。
端邻节点包括:源节点、目的节点。

  • 端和“端邻节点”建立虚电路:“端邻节点和端”的网络层,向“端的传输层”提供面向连接的分组传输服务。
  • 通信子网中的网络节点(包括端邻节点):在网络层采用数据报传输方式。

注意:

  1. 在端邻节点,虚电路中传输的分组只有来站信息,没有目的地址等信息,要在通信子网中以数据报的方式传输,就必须在端邻节点转换,附加上目的地址、序号等信息。
  2. 虚电路分组和数据报的长度不同。源端邻节点需要将虚电路分组再切割得到数据报。
    目的端邻节点将数据报排序组装成原来的虚电路分组,再发送给目的端系统的网络层。

在这种混合操作方式中,尽管通信子网的数据传输是不可靠的,但端邻节点做了排序、重发(仅限于端和端邻节点之间)等工作,也算是虚电路服务的一种。

ARPANET 网络能够以混合操作方式提供虚电路服务。

5.1.4 数据报服务

以数据报操作方式,实现数据报服务

数据报服务:通常由通信子网以数据报操作方式来实现。

端系统的网络层,和网络节点的网络层,都以数据报的方式交换分组。目的端系统收到的数据报是乱序的,数据报也会发生丢失。

ARPANET、DNA 网络能够以数据报操作方式,由网路层向传输层提供数据报服务。

以虚电路操作方式,实现数据报服务

一种仅陷于理论的操作形式,既不经济,效率也低。

  • 端系统的网络层发送、接收数据报。
  • 端邻节点将数据报转换为虚电路分组
  • 整个通信子网以虚电路操作方式工作,当端邻节点转换出虚电路分组时,就在源节点和目的节点间建立虚电路,然后完成传输,最后拆除虚电路。

5.1.5 虚电路子网和数据报子网的比较

虚电路和数据报从不同的角度来看,各有优势和劣势。

节点的内存空间,与,信道带宽,之间的平衡

虚电路:

  • 分组只需包含来路信息(前节点名+虚电路号),无需目的地址,不浪费信道带宽。
  • 每个节点都保存虚电路表,一条虚电路对应一条表项。看起来虚电路节点比数据报节点使用的内存空间少,但实际上,虚电路节点仍然需要保存每一个可能的目标地址,因为在虚电路建立阶段,仍然和数据报一样,是通过路由选择来寻找路径的。因此,虚电路节点的内存占用更大。

数据报:

  • 如果每个分组都很短,那么目的地址的比特占比过大,可能比虚电路更浪费带宽。
  • 每个可能的目标地址都对应一个表项,但也比虚电路少。
建立虚电路所耗费的时间,与,节点解析数据报目标地址耗费的时间,之间的平衡

虚电路的建立既花费时间,也消耗资源(逻辑信道号,虚电路表)。但虚电路一旦建立,确定分组的后节点却非常简单。

数据报子网中,节点需要执行一个复杂的查找过程,才能确定数据报的下一个目标,这比较花时间。

服务质量,和,拥塞控制

通信子网发生拥塞,会大大降低服务质量。此时就需要进行拥塞控制。

  • 数据报子网:很难实现拥塞控制
  • 虚电路子网:可以在建立虚电路时,事先预留各种资源(节点CPU周期、线路带宽、节点缓冲区空间等),从而一定程度避免拥塞
节点失效的影响
  • 虚电路子网:所有流经失效路由器的虚电路都会断开。
  • 数据报子网:如果一台路由器失效,则只有还有分组尚留在路由器队列中的用户会受到影响,甚至这些用户也只有一部分受到影响。(不太理解这里的意思,因为数据报子网提供的是无连接服务,应该没有确认这个功能。只有数据链路层提供了对帧的确认,还仅限于BSC和HDLC控制协议,因特网的PPP协议也没有确认功能)
数据报子网还可以提供流量平衡功能

对于较大的分组流量,数据报子网可以把流量分散到多个节点去,而虚电路就无法做到。

-------------本文结束,感谢您的阅读-------------