欢迎来到博主 Apeiron 的博客,祝您旅程愉快 ! 时止则止,时行则行。动静不失其时,其道光明。
目录
1、常见的计算机网络体系结构
为了使不同体系结构的计算机网络都能互连,国际标准化组织于 1977 年成立了专门机构研究该问题。不久,他们就提出了一个试图使各种计算机在世界范围内互连成网的标准框架,也就是著名的 "开放系统互连参考模型",简称为 OSI(Open Systems Interconnection)。
到了 20 世纪 90 年代初期,虽然整套的 OSI 国际标准都已经制订出来了,但这时因特网已抢先在全世界覆盖了相当大的范围。因特网从 1983 年开始使用 TCP/IP 协议族,并逐步演变成 TCP/IP 参考模型。
在过去制订标准的组织中往往以专家、学者为主。但现在,许多公司都纷纷挤进各种各样的标准化组织,使得技术标准有着浓厚的商业气息。一个新标准的出现,有时不一定反映出其技术水平是最先进的,而是往往有着一定的市场背景。从这种意义上说,能够占领市场的就是标准。
OSI 标准失败的原因可归纳为:
① OSI 的专家们缺乏实际经验,它们在完成 OSI 标准时没有商业驱动力
② OSI 的协议实现起来过分复杂,而且运行效率很低
③ OSI 标准的制订周期太长,因而使得按 OSI 标准生产的设备无法及时进入市场
④ OSI 的层次划分也不太合理,有些功能在多个层次中重复出现
TCP/IP 体系结构的网络接口层并没有规定什么具体的内容,这样做的目的是 可以互连全世界各种不同的网络接口,例如有线的以太网接口,无线局域网的 WIFI 接口,而不限定使用一种或几种网络接口。因此,本质上 TCP/IP 体系结构只有上面的三层。
IP 协议是 TCP/IP 体系结构网际层的核心协议。TCP 和 UDP 是 TCP/IP 体系结构运输层的两个重要协议。 TCP/IP 体系结构的应用层包含了大量的应用层协议,例如 HTTP,SMTP,DNS,RTP 等。
IP 协议可以将不同的网络接口进行互连,并向其上的 TCP 协议和 UDP 协议提供网络互连服务。而 TCP 协议在享受 IP 协议提供的网络互连服务的基础上,可向应用层的相应协议提供 可靠传输的服务。UDP 协议在享受 IP 协议提供的网络互连服务的基础上,可向应用层的相应协议提供 不可靠传输的服务。
由于 TCP/IP 体系结构为了将不同的网络接口进行互连,因此它的网络接口层并没有规定什么具体的内容。然而,这对于我们学习计算机网络的完整体系而言,就会缺少一部分内容,即缺少的是物理层内容。因此,在学习计算机网络原理时往往采取折中的办法,也就是综合 OSI 和 TCP/IP 的优点,采用一种 五层协议的原理体系结构。
可以看出,五层协议的原理体系结构,将 TCP/IP 体系结构的网络接口层又重新划分为了物理层和数据链路层。这样,更有利于我们对计算机网络原理的学习。
2、计算机网络体系结构分层的必要性
**"分层"**可将庞大而复杂的问题,转化为若干较小的局部问题,而这些较小的局部问题就比较易于研究和处理。
下面,我们按照由简单到复杂的顺序,来看看实现计算机网络要面临哪些主要的问题,以及如何将这些问题划分到相应的层次,层层处理。
2.1、物理层
物理层(Physical Layer):这是最底层的层次,负责定义传输介质和数据传输的物理规范,例如电缆、光纤、无线信号等。
首先,来看最简单的情况,两台计算机通过一条网线连接起来。
对于这种最简单的情况,我们需要考虑以下问题:
① 采用怎样的传输媒体(介质)
例如,这是我们常见的双绞线网线。
② 采用怎样的物理接口
例如,这是 RJ45 以太网接口。
③ 使用怎样的信号表示比特 0 和 1
例如,使用这样的方波信号,低电平表示 0,高电平表示 1。(这里,我们需要说明两点,① 严格来说,传输媒体并不属于物理层,它并不包含在体系结构之中。② 计算机网络中传输的信号,并不是我们举例的方波信号,我们之所以举例成方波信号,是为了让初学者容易理解。)
解决了这些问题,两台计算机就可以通过信号来传输比特 0 或 1 了。我们可以将这些问题划规到物理层。
2.2、数据链路层
数据链路层(Data Link Layer):在物理层之上,负责数据的分帧、差错检测和纠正,以确保数据在物理层的可靠传输。
实用的计算机网络,一般都由多台主机构成。
假设,我们已经解决了物理层的问题,也就是说,主机间可以发送信号来传输比特 0 或 1 了。我们来看看,在这样一个 总线型的网络 上,还面临什么需要解决的问题呢?
如图所示,主机 A 要给主机 C 发送数据,但是,表示数据的信号会通过总线传播到总线上的每一个主机。那么问题来了,主机 C 如何知道该数据是发送给自己的,自己要接受?而主机 B,D,E 又如何知道该数据并不是发送给自己的,自己应该拒绝呢?这就很自然地引出了如何标识网络中各主机的问题(主机编址问题,例如 MAC 地址)。
主机在发送数据时,应该给数据附加上目的地址,当其他主机收到之后,根据目的地址和自身地址,来决定是否接受数据。这就又引出了一个问题:目的主机从信号所表示的一连串比特流中区分出地址和数据,也就是需要解决分组的封装格式问题。
另外,对于总线型网络,还会出现下面这种典型的问题。例如,在某个时刻总线是空闲的,也就是没有主机使用总线来发送数据。片刻之后,主机 B 和 D 同时向总线发送数据,这必然会造成信号碰撞。因此,如何协调各主机争用总线,也是必须要解决的问题。
需要说明的是,这种总线型的网络早已淘汰,现在常用的是使用 以太网交换机 将多台主机互相形成的 交换式以太网。
那么,以太网交换机是如何实现的呢?我们将这些问题,全部划归到 数据链路层。到这里,大家可能会发现,只要解决了物理层和数据链路层各自所面临的问题,我们就可以实现分组在一个网络上传输了。
2.3、网路层
网络层(Network Layer):这一层负责网络中不同设备之间的寻址和路由,以确定数据在网络中的最佳路径。
我们每天都会使用的因特网,是由非常多的网络和路由器互连起来的,仅解决物理层和数据链路层还是不能正常工作。我们来看下面这个例子,这是由 3 个路由器,4 个网络互连起来的小型互连网,我们可以把它看作是因特网中很小的一部分。
在之前的例子中,只有一个网络,我们不需要对网络进行标识。而在本例中,有多个网络,很显然,我们面临着 如何标识 "各网络" 以及 "网络中各主机" 的问题(网络和主机共同编址问题,例如 IP 地址)。
例如,这是网络 N1 中各设备的 IP 地址。该类 IP 地址的前三个十进制数用来标识网络,第四个十进制数用来标识主机。
我们在来看另外一个问题,源主机与目的主机之间的传输路径往往不止一条,分组从源主机到目的主机可走不同的路径。这样就引出了路由器如何转发分组的问题 ,以及如何进行路由选择的问题。我们将这些问题全部划分到 网络层。
2.4、运输层
传输层(Transport Layer):传输层提供端到端的通信,负责将数据分割为较小的数据段,并提供流量控制和可靠性保证,例如通过TCP(传输控制协议)实现的可靠数据传输。
如果我们解决了物理层、数据链路层以及网络层各自的问题,则可以实现分组在网络间传输的问题。但是,对于计算机网络应用而言,这仍然不够。例如,假设这台主机中运行着两个与网络通信相关的应用进程,一个是浏览器进程,另一个是 QQ 进程。这台服务器中运行着与网络通信相关的服务器进程。
某个时刻,主机收到了来自服务器的分组,那么,这些分组应该交给浏览器进程处理呢,还是应该交给 QQ 进程处理呢?这就引出了我们如何标识与网络通信相关的应用进程,进而解决进程之间基于网络的通信问题。
另外,**如果某个分组在传输过程中出现了误码,或者由于路由器繁忙,导致路由器丢弃分组,这应该如何处理呢?**我们将这些问题都全部划归到 运输层。
2.5、应用层
我们已经解决了物理层,数据链路层,网络层和传输层各自的问题,则可以实现进程之间基于网络的通信。在此基础上,只需制定各种应用层协议,并按协议标准编写相应的应用程序,通过应用进程间的交互来完成特定的网络应用。例如,支持万维网应用的 HTTP 协议,支持电子邮件的 SMTP 协议,支持文件传送的 FTP 协议,我们将这些问题全部划分到应用层。
至此,我们将实现计算机网络所需要解决的各种主要问题,分别划归到了 物理层、数据链路层、网络层、运输层 和 应用层,进而构成了五层协议体系的原理体系结构。
3、计算机网络体系结构中的专业术语
(1)实体:任何可发送或接收信息的硬件或软件进程
(2)对等实体:收发双方相同层次中的实体
(3)协议的三要素
① 语法:定义所交换信息的格式
② 语义:定义收发双方所要完成的操作
例如,主机要访问远程 Web 服务器,他会构建一个 HTTP 的 GET 请求报文,然后将其发送给 Web 服务器。
Web 服务器收到该报文并进行解析,知道这是一个 HTTP 的 GET 请求报文,于是就在自身内部查找所请求的内容,并将所找到的内容封装在一个 HTTP 响应报文中发回给主机。
主机收到 HTTP 响应报文后,对其进行解析,取出所请求的内容,并由浏览器解析显示。这个例子就可以体现出通信双方收到分组后完成怎么样的操作。这是 HTTP 协议的语义所定义的。
③ 同步:定义收发双方的时序关系
请注意,这里的同步并不是指时钟频率同步。例如,这是 TCP 采用**"三报文握手"**建立连接的过程。要想进行运输层 TCP 实体间的逻辑通信,首先,必须建立连接。从连接建立的过程就可以看出 TCP 客户端和 TCP 服务器之间的时序关系,以及各自的状态转换。只有双方建立连接后,才能进行 TCP 数据传输。这个例子可以充分体现计算机网络协议三要素中的同步。
(4)服务
在协议的控制下,两个对等实体间的逻辑通信使得本层能够向上一层提供服务。要实现本层协议,还需要使用下面一层所提供的服务。协议是 "水平的",服务是 "垂直的" 。
实体看得见相邻下层所提供的服务,但并不知道实现该服务的具体协议。也就是说,下面的协议对上面的实体是 "透明" 的。
(5)服务访问点
在同一系统中 相邻两层的实体交换信息的逻辑接口,用于区分不同的服务类型。
① 数据链路层的服务访问点为帧的 "类型" 字段
② 网络层的服务访问点为 IP 数据报首部中的 "协议字段" 。
③ 运输层的服务访问点为 "端口号" 。
(6)服务原语
上层使用下层所提供的服务必须通过与下层 交换一些命令,这些命令称为服务原语。
(7)数据单元
① 协议数据单元 PDU
在计算机网络体系结构中,对通信双方所交互的数据包有专门的术语。我们把 对等层次之间传送的数据包 称为该层的协议数据单元。
② 服务数据单元 SDU
同一系统内,层与层之间交换的数据包 称为服务数据单元。
③ 多个 SDU 可以合成为一个 PDU;一个 SDU 也可划分为几个 PDU
4、总结
本期的分享总结就到这里了,如果有疑问的小伙伴儿,我们在评论区交流嗷~~~,笔者必回,我们下期再见啦 !!!
博客中难免存在疏漏和错误之处,皆归因于作者水平有限,诚请各位读者不吝指正 !
<计算机网络> 专栏系列持续更新,欢迎订阅关注 !