计网体系结构分层的必要性

分层是计算机网路体系结构最重要的思想,计算机网路是一个非常复杂的系统,早在 ARPANET 的设计初期就提出了分层的设计理念。

“分层”可将庞大而复杂的问题转化为若干较小的局部问题,而这些较小的局部问题就比较容易研究和处理。

如果互联网只由一个协议统筹,某个地方需要改变设计时,就必须把所有部分整体替换掉,而分层之后只需要把变动的层替换掉即可。

把各层之间的接口部分规划好之后,每个层次内部的设计就可以自由改动了。

另外,层次化后设计也变得相对简单了,处于应用层上的应用可以只考虑分派给自己的任务,而不需要弄清对放在地球上的那个地方、对方的传输线路是怎样的、是否能够确保传输送到等问题。

一. 物理层(physical layer)

两台计算机通过一条链路连接起来,对于这种最简单的情况需要考虑那些问题?

计网体系结构分层的必要性

1. 采用什么传输媒体(介质)

可以采用多种传输媒体作为传输链路,例如:同轴电缆、双绞线电缆、光纤和光缆、自由空间等。

2. 采用什么物理接口

用户主机、交换机以及路由器灯网络设备需要采用恰当的物理接口来连接传输媒体。

3. 采用什么信号表示 0 和 1

在确定了传输媒体和物理接口后,还需要考虑过使用怎样的信号来表示比特 0 和 1,进而在传输媒体上进行传送。

下图所示的数字基带信号,低电平表示比特0 ,高电平表示比特1

计网体系结构分层的必要性

解决了上述问题,两台计算机之间就可以通过信号来传输比特0和1了。

计网体系结构分层的必要性

我们可以将以上问题划归到物理层。

注意: 严格来讲传输媒体并不属于物理层范畴,它并不包含在计算机网络体系结构之中。

另外,计算机网络中传输的信号,并不是上例中简单的数字基带信号,之所以这么做,是为了方便理解。

实用的计算机网络往往有多台计算机互联而成,而不是上面的两台计算机互联。

下图中,主机A、B、C 通过总线互联成了一个总线型网络。

计网体系结构分层的必要性

此时不考虑物理层问题,上图所示的总线型网络中,数据链路层需要考虑问题的主要有那些?

1. 如何标识网络中的各主机

假设主机 A 要给主机 B发送数据,表示数据的信号会通过总线传播到总线上每一个主机。

那么主机B 如何主导该数据是 主机A 发送给自己的,进而接收该数据,而主机C又如何知道该数据不是发送给自己的,应该丢弃该数据呢?

这就需要解决如何标识网络中各主机的问题,即主机编址问题,网卡上固化的 MAC 地址就是主机在网络中的地址。

2. 如何区分地址和数据

主机在发送数据时,应该给数据附上源地址和目的地址。

当其他主机收到后,根据目的地址和自身地址是否匹配,来决定是否接受该数据,还可以通过源地址知道那个主机发来的数据。

计网体系结构分层的必要性

要将源地址和目的地址附加到数据上,这就需要收发双方约定好数据的封装格式。

发送方将带发送到数据按照事先约定好的格式进行封装(即在数据前面添加包含源地址、目的地址、和其他一些控制信息的首部),然后将封装好的数据包发送出去,接收方收到数据包后,按照事先约定好的格式对其进行解封。

为了简单起见,上图中的数据包首部仅包含了源地址和目的地址,并且仅用一个字母表示。

3. 如何协调各主机争用总线

对于总线型网络,还会出现多个主机争用总线时产生碰撞的问题。

例如,某个时刻总线总是空闲的,也就是没有主机使用总线来发送数据,片刻之后,主机A 与 主机C 同时使用总线来发送数据,这必然会造成信号碰撞,因此,如何协调各主机争用总线,也是必须要解决的问题。

计网体系结构分层的必要性

注意: 上述中的总线型网络早已淘汰,现在常用的是使用以太网交换机将多台主机互联成交换式以太网,在交换式以太网中,多对主机之间可以同时进行通信,不会出现主机争用总线而产生碰撞问题。

以太网交换机的实现是根据 以太网交换机的自学习和转发帧原理实现的

4. 检测数据有误码

对于交换式以太网这种有线网络很少出现数据误码的情况,而对于无线网络,比较容易出现误码,这就引出了如何检测数据在传输过程中是否出现了误码的问题也就是差错检测,当数据包检测到有误码时,是直接丢弃然后什么也不做,又或是想办法让发送方重新发送有误码的数据包,这就引出了出现传输差错如何处理的问题

5. 出现传输差错如何处理

根据应用需求,可分为可靠传输服务和不可靠传输服务,如下图,主机A 给 主机B 连续发送数据,然而主机B 正在处理很多其他任务,来不及取走输入缓存中的数据,于是主机B 给主机A 发送通知,通知主机A 停止发送,这就引出了 接收方控制发送方注入网络的数据量问题,即流量控制。

计网体系结构分层的必要性

网络层(network layer)

解决了物理层和数据链路层隔着所面临的问题后,就可以实现数据包在一个网络上传输了。然而,我们的网络应用往往不仅限于在一个单独的网络上,例如,我么几乎每天都会使用的因特网,是由非常多的网络和路由器互联起来的,仅解决了物理层和数据链路层的问题,还是不能正常工作。

我们可以把下图所示的小型互联网看作因特网中很小的一部分,在该小型互联网中,需要考虑那些问题?

计网体系结构分层的必要性

1. 如何标识互联网中的个网络以及网络中的各主机

由于互联网那个是由多个网路通过多个路由器互联起来的,因此我们还需要对互联网中的各网络进行标识,这就引出了网络和主机共同编址的问题,也就是 IP 地址。

我们给上图中的各主机和部分路由器接口分配如下图所示的IP 地址

计网体系结构分层的必要性

网络N1 中的主机 H1、主机H2 以及路由器 R1 连接网络 N1 的接口,它们都处于同一个网络,因此他们的 IP 地址和网络号相同,而他们的主机号分别为 1、2 以及 254,各不相同,用于在网络 N1 中标识他们自己。

注意: 给网络N1 分配的网络号为 192.168.0 ,而给N2 分配的网络号为 192.168.1,它们是不同的网络。

2. 路由器如何转发分组和进行路由选择

在互联网中,源主机和目的主机之间的传输路径往往不至一条。分组从源主机到目的主机可走不同路径,这就引出了路由器如何转发分组以及进行路由器选择的问题。

计网体系结构分层的必要性

运输层(tranport layer)

解决了物理层、数据链路层以及网络层各自的问题后,就可以实现分组在多个网络之间的传送了,然而,对于计算机网络应用而言,仍有一些重要的问题需要考虑。

1. 如何标识主机中与网络通信相关的应用进程

在用户主机中同时运行着的与网络通信相关的应用进程往往不至一个。当主机通过网络接收到数据包后,应将数据包交付给哪一个应用进程就成为了一个问题。

主机H3 中运行着与网络通信相关的 Web服务器进程 Nginx, 主机H1 中运行着与网路通信相关的浏览器进程和 QQ进程。当主机H1 收到主机 H3 中 Nginx 进程发来的数据包时,应将数据包交付给浏览器进程还是 QQ 进程呢?很显然,如果数据包中含有与进程相关的标志信息,主机 H1就可以根据标志信息将数据包交付给相关的应用进程。

这就引出了如何标识语网络通信相关的应用进程、进而解决进程之间基于网络通信的问题。

计网体系结构分层的必要性

2. 如何处理传输差错

利用率和丢包率 介绍过,分组由于误码被路由器或用户主机丢弃,又或是由于路由器繁忙而主动丢弃正常分组,这些都属于传输差错。

应用层(application layer)

解决了上面四层各自的问题后,就可以实现进程之间基于网络的通信了。

在进程之间基于网络通信的基础上,可以制定各种应用协议,并按照协议标准编写相应的应用程序,通过应用进程之间的交互来实现特定的网络应用。

例如支持万维网的 HTTP 协议、支持电子邮件的 SMTP 协议以及支持文件传送的 FTP 协议等。

另外,在制定应用协议时,还需要考虑应用进程基于网络通信时的会话管理问题和数据表示问题(采用那种编码,是否加密和压缩数据)

总结

至此,我们将实现计算机网络所需解决的各种主要问题,分别划归到了物理层、网络链路层、网络层、运输层以及应用层,这就构成了五层原理体系结构。

五层原理体系结构的主要功能分别是:

  • 物理层解决使用何种信号来表示比特 0 和 1 的问题
  • 数据链路层解决数据包在一个网络或一段链路上传输的问题
  • 网络层解决数据包在多个网络之前传输和路由的问题
  • 运输层解决进程之间基于网络通信的问题
  • 应用层解决通过应用进程来交互实现特定网络应用的问题

计网体系结构分层的必要性


计网体系结构分层的必要性
https://blog.pangcy.cn/2022/11/11/编程素养相关/计算机网络/计网体系结构分层的必要性/
作者
ziYang | 子洋
发布于
2022年11月11日
许可协议