计算机网络的体系结构
计算机网络的体系结构
计算机网络的体系结构
主要介绍 计算机网络分层思想、协议及其要素、计算机网络的多种体系结构及其相互之间的关系。
重点:分层思想、网络协议
计算机网络的分层思想
研究人员在设计计算机网络时发现,要使得远程的两台计算机相互通信是一件非常复杂的事情,需要考虑的细节很多。
例如两台计算机的操作系统不一样,可能其存储文件的方式不同,我们传数据时需要考虑格式的兼容问题;如果我们想给对方传送文件,但是对方的主机并不在线或者是不具备足够的存储空间,
“分而治之”,就是将一个复杂的问题分成若干个小的问题,然后将这些小的问题解决了,这个复杂的大问题就得到了解决。
这若干小问题之间应该不是彼此孤立存在的,应该有着某种联系,协同工作才将一个大的事情完成。
例如:
要组织好本班学生的运动会工作,这个工作涉及到赛事、后勤、宣传等各个方面,是一个复杂的问题,班长将运动会的工作分成了几个部分,一个部分是赛事组织,交给体育委员负责;一个是后勤工作,交给生活委员负责;另外一个是宣传工作,交给宣传委员负责。
为了更好地完成工作,体育委员需要与生活委员和沟通,告诉那些运动员什么时候有比赛,也会与宣传委员沟通,及时通报运动员的成绩。
这个例子中,有几点我们可以意识到:首先,每个部分做一件相对独立的事情,并且与其他部分存在着联系;其次,每个部分具体怎么实现其他部分是不需要知道细节的,如宣传委员是组织人手写稿件、还是微信、QQ在线编辑,这些是宣传委员自己的事情。
相互通信的两个计算机系统必须高度协调工作才行,而这种“协调”是相当复杂的。
“分层” 可将庞大而复杂的问题,转化为若干较小的局部问题,而这些较小的局部问题就比较易于研究和处理。
基本思想
- 一堆相互叠加的层共同实现
- 每一层都建立在其下一层的基础之上,其目的是为上层提供特定的服务
- 各层如何实现这些服务的细节对上一层屏蔽。
划分层次
举例:哲学家实例
两位哲学家,他们一个会讲阿拉伯语和英语,一个会讲汉语和法语,哲学家1希望把“I like rabbits”感情传递给哲学家2,哲学家最为第一层
由于没有共同语言,他们都雇佣了一个翻译,放在第二层
哲学家1通过1/2层间的接口将“I like rabbits”传递给翻译
两位翻译都至少有一种双方都能理解的语言:如荷兰语,消息被翻译成荷兰语,选择语言是第二层协议的事情,也就是说翻译们的事情
然后翻译将消息交给秘书第三层,让她送出去,至于怎么送只有秘书知道,传真或者电话
当消息到达的时候,翻译成汉语传递给哲学家2
分析可得
- 一个复杂的问题一堆相互叠加的层共同实现;
- 每一层都建立在其下一层的基础之上,其目的是为上层提供特定的服务;
- 各层如何实现这些服务的细节对上一层屏蔽。
或许存在疑问,翻译1不能直接将“I like rabbits”翻译成汉语,然后直接表达给哲学家2吗?
事实上,这是不符合常理的,因为翻译1和哲学家2不具有对等的地位,无法直接通信,正如两国的国家*谈话,后面各有一个翻译一样。
主机 1 向主机 2 通过网络发送文件,如果我们要用两台计算机完成这个任务我们怎么做?
- 可以将要做的工作进行如下的划分。
- 第一类工作与传送文件直接有关。
- 确信对方已做好接收和存储文件的准备。
- 双方协调好一致的文件格式。
- 两个主机将文件传送模块作为最高的一层 。剩下的工作由下面的模块负责。
分层的好处
- 各层之间是独立的。
- 灵活性好。
- 结构上可分割开。
- 易于实现和维护。
- 能促进标准化工作。
网络协议及其组成要素
什么是协议?现实生活中我们见过不少的协议,如我们购房,购房者和卖房者之间签订购房协议,协议中规定了如交款、交房时间、交歀方式等,还会规定一方违约了怎么处理。
协议就是两者之间为了完成一件事情达到共同的利益而进行的一些约定。
- 计算机网络中的数据交换必须遵守事先约定好的规则。
- 这些规则明确规定了所交换的数据的格式以及有关的同步问题(同步含有时序的意思)。
- 网络协议(network protocol),简称为协议,是为进行网络中的数据交换而建立的规则、标准或约定。
- 简单一点讲,通信双方关于如何进行通信的一种约定。
网络协议的组成要素
语法 : 数据与控制信息的结构或格式 。比如C语言中规定可整型数据用int表示,for表示循环关键字等
语义 : 需要发出何种控制信息,完成何种动作以及做出何种响应。
同步 : 事件实现顺序的详细说明。
举例说明:
当一位女士被介绍给一位男士的时候,她可能会选择伸出她的手,然后,这位男士可以根据特定的场合决定握手还是亲吻她的手。比如是在一次商务会议中,她是一位美国律师,他怎么做?如果是在一个正式的舞会上,她是一个欧洲公主,他怎么做?
那么这个场景中,语法、语义和时序是如何体现的?首先“语法”规定了和对方打招呼需要伸手,不能伸脚,这个规定就是语法;其次“语义”规定了当对方伸手后我们应该如何处理,是握手还是亲吻;最后“同步”规定了对方伸手后,我们应该及时响应,不能过半小时之后再去握手或者亲吻手。
如果违反了“协议”,即使通信还有可能继续,但会变得非常困难
在计算机网络的通信模型中,只有对等层之间才存在着协议
如我们讲过的哲学家的例子,翻译和翻译之间协商中间语言—荷兰语这就是协议,而翻译和哲学家之间是没有协议的。
计算机网络的体系结构
- 计算机网络的体系结构 (architecture)是计算机网络的各层及其协议的集合。
- 体系结构就是这个计算机网络及其部件所应完成的功能的精确定义。
- 实现(implementation)是遵循这种体系结构的前提下用何种硬件或软件完成这些功能的问题。
- 体系结构是抽象的,而实现则是具体的,是真正在运行的计算机硬件和软件。
层数要适当
若层数太少,就会使每一层的协议太复杂。
层数太多又会在描述和综合各层功能的系统工程任务时遇到较多的困难。
两种体系结构
- OSI open system interconnect 开放式系统互联
- TCP/IP
两种国际标准
法律上的(de jure)国际标准 OSI 并没有得到市场的认可。
非国际标准 TCP/IP 现在获得了最广泛的应用。
TCP/IP 常被称为事实上的(de facto) 国际标准。无冕之王
7层体系结构
四层的体系结构
TCP/IP 是四层的体系结构:应用层、运输层、网际层和网络接口层
TCP/IP是由一伙具有强烈创业意识的技术人员创造的一种计算机网络体系结构,他们有着非常强的商业驱动力,并且TCP/IP一经推出,受到了市场上的广泛欢迎,取得了巨大成功。
具有五层协议的体系结构
俗语说“一山不能容二虎”,OSI模型是ISO提出的具有国际法律效力的,但事实上TCP/IP却占用了市场,这种现象使得OSI的专家们非常尴尬,同时TCP/IP也处于一个非常危险的处境,得不到国际标准的认可,意味着你永远是山寨的,不能大面积推广。
为了缓解这种尴尬的局面,TCP/IP的拥有者们作出了一个决定,对四层体系结构进行了折中,将OSI中的数据链路层加入到了四层体系结构中,变成了五层体系结构
五层协议的体系结构
数据在两台计算机之间的流动
明确了计算机网络的五层体系结构后,数据在两台计算机之间的流动到底是怎样的呢?
以主机1向主机2发送数据为例
如果把每一层的数据分为两个部分:首部和数据部分,那么上一层的数据成为了下一层数据的数据部分。
数据链路层的主要功能就是在有差错的物理链路上建立数据链路,保证数据无差错的传输。
对数据帧添加帧尾就是可靠性的一种保障。当数据发送前将帧尾前是内容加以校验,将校验放置到帧尾,接收方收到后会进行同样的校验,将得到的校验和与帧尾中携带的校验和比较,如相同则说明帧在传输过程中没有出现差错。
实体、协议、服务和服务访问点
实体
实体 (entity) 表示任何可发送或接收信息的硬件或软件进程。
协议
协议是控制两个对等实体进行通信的规则的集合。
在协议的控制下,两个对等实体间的通信使得本层能够向上一层提供服务。
要实现本层协议,还需要使用下层所提供的服务。
服务和服务访问点
本层的服务用户只能看见服务而无法看见下面的协议。
下面的协议对上面的服务用户是透明的。
协议是==“水平的”,即协议是控制对等实体之间通信的规则。
服务是“垂直的”,即服务是由下层向上层通过层间接口提供的。
同一系统相邻两层的实体进行交互的地方,称为服务访问点 SAP== (Service Access Point)。
协议很复杂
协议必须把所有不利的条件事先都估计到,而不能假定一切都是正常的和非常理想的。
看一个计算机网络协议是否正确,不能光看在正常情况下是否正确,而且还必须非常仔细地检查这个协议能否应付各种异常情况。
协议举例:
占据东、西两个山顶的蓝军1和蓝军2与驻扎在山谷的白军作战。
其力量对比是:单独的蓝军1或蓝军2打不过白军,但蓝军1和蓝军2协同作战则可战胜白军。现蓝军1拟于次日正午向白军发起攻击。于是用计算机发送电文给蓝军2。但通信线路很不好,电文出错或丢失的可能性较大(没有电话可使用)。因此要求收到电文的友军必须送回一个确认电文。但此确认电文也可能出错或丢失。试问能否设计出一种协议使得蓝军1和蓝军2能够实现协同作战因而一定(即100 %而不是99.999…%)取得胜利?
这样无限循环下去,两边的蓝军都始终无法确定自己最后发出的电文对方是否已经收到。
没有一种协议能够蓝军能 100% 获胜。
看似非常简单的协议,设计起来要考虑的问题还是比较复杂的。