目录
一、前言
二、计算机网络分层的原因
三、网络的体系结构
四、分层的基本目标
五、分层后的好处
六、分层多少
七、每一层需要完成的功能
八、相关术语
一、前言
在这里,我们由航空公司分层结构的例子来帮助我们更好地理解计算机网络的分层结构。我们知道,航空公司的布局是一个很大的工程,同理计算机网络也是一个非常庞大的工程,所以在分层方面,二者之间有很多异曲同工之处。
这张图就是我们购买飞机票的大致层次
对于乘客来说,我们只需要了解购票、托运以及登机的问题,对于飞机如何起飞怎么飞我们并不需要知道。对于机长来说,只需要关注在哪个航道上起飞以及怎么开飞机就可以了,别的事情并不care。对于售票员来说,只管如何售票,其他的事并不干预。试想一下,如果这么庞大的工程都有一个人来做,是不是有些不太现实。计算机网络也是一样,我们也需要对它进行分层,让庞大的工程模块化,每个领域的专家做好自己领域的事。
通过航天公司的例子,我们可以有如下感想,并可将之用于计算机网络中去:
1.每个具有具体目的的人,他只想关注他想知道的信息,其他东西并不想知道
2.如果每个人都需要知道这么多的知识,那么这个时间、金钱开销会特别大,几十年不出结果
3.专门的人干专门的事,在有限的生命中去专注具体的领域,成为领域专家
4.作为我来说,我只有四件事:①做好我领域的研究②需要某些基础服务的时候,我直接向下层索要③上层需要我服务的时候,我提供接口让他使用④与和我同领域的人做好交流
5.这种模块化的思想,让领域专家可以专注于自己想做的事,对完成整个系统也更加有利
关于计算机网络模块化的思想,在ARPA网设计时就已经提出了
二、计算机网络分层的原因
1、降低协议设计和调试过程的复杂性
2、为了便于对网络的研究、实现和维护,促进标准化工作
3、通常对计算机网络的体系结构以分层的方式进行建模
三、网络的体系结构
定义:把计算机网络的各层及其协议的集合成为网络的体系结构(Architecture),这是这个计算机网络及其所应完成的功能的精确定义,它是计算机网络中的层次、各层的协议及层间接口的集合
注:体系结构是抽象的,而实现是具体的是真正在运行的计算机硬件和软件(由厂商实现);比如说JDBC与MySQL的JDBC,还有设计图纸与建筑物
四、分层的基本目标
1.每层都实现一种相对独立的功能,降低大系统的复杂度(独立:不要东拉西扯,要解耦合)
2.各层之间界面自然清晰,易于理解,相互交流尽可能少(界面自然清晰:事情来了,明确知道在哪一层,不要有三不管事情)
3.各层功能的精确定义独立于具体的实现方法,可以采用最合适的技术来实现(我只说我想要什么,具体怎么做,各大厂商可以一起搞)
4.保持下层对上层的独立性,上层单向使用下层提供的服务(也是为了代码好维护,单向依赖就行,不然交错起来,牵一发而动全身)
5.整个分层结构能促进标准化工作
五、分层后的好处
1.层之间相对独立,灵活性好
2.分层的体系结构易于更新(替换单个模块)【单向依赖的原因】
3.易于调试,易于交流,易于抽象,易于标准化
六、分层多少
层次越多,有些功能在不同层中难免重复出现
层次越少,就会使每层的协议太复杂
应考虑层次的清晰层度与运行效率间的折中、层次数量的折中
七、每一层需要完成的功能
在这里,我介绍以下功能(以快递为例子便于理解,层次一:买家和卖家,层次二:快递站点),每层需要完成其中一种或多种功能
全部功能:
1.差错控制
任务:层次对等方通信更可靠
例子:快递站点之间可以检测寄送地址;买家和卖家之间可以检测货物
2.流量控制
任务:发送端发送的速率必须使接收端来得及接收
例子:快递站点容量有限,可以让上游站点延缓发送;买家货物还没有处理完,可以让买家晚点再寄出
3.分段与重装
任务:发送端将要发送的数据块划分成更小的单位,在接收端还原
例子:购买电脑,拆成几个部分,到货之后,再组装起来
4.复用和分用
任务:发送端几个高层会话复用一条底层的连接,在接收端再进行分用
例子:复用—所有卖家与买家之间都可以使用顺丰快递,他们在复用顺丰快递
分用—顺丰快递送货员把名字交给买家与卖家,顺丰快递在分用货物
5.连接的建立与释放
任务:交换数据前先建立一条逻辑连接,数据传送结束后释放连接
例子:快递单号建立连接
八、相关术语
在这里,相关术语我依然用快递的例子便于理解
1.实体
定义:任何可发送或接收信息的硬件或软件进程,通常是一个特定的软件模块
例子:任何一个快递公司、任何一个买家、任何一个卖家;工作在计算机网络分层模型中的任意一个层的可发送或接收信息的硬件或软件进程
2.对等层
定义:不同机器上的同一层
例子:快递站点之间是对等层;买家、卖家是对等层;电脑A的传输层与电脑B的传输层
3.对等实体
定义:同一层的实体
例子:顺丰快递的站点之间;买家与卖家之间;电脑A中应用层的QQ与电脑B中应用层的QQ