引言
??本篇文章的思路是假设我们还没有计算机网络,要着手去设计计算机网络,我们从设计者的思路去发现问题并提出问题。本篇文章针对许多问题并不提供答案,问题只是对读者有一个启发,具体的答案会在之后的文章专栏中给予解决。
计算机间互联互通的基本问题
??计算机网络要解决的就是如何将计算机连接起来使其能够进行通信,基于此我们有如下问题。
传输介质问题
- 信息的传输是需要载体的,而材料又要考虑功耗、成本、效率等问题,我们用什么材料传输好呢?铜线?光纤?空气?还是什么都不用?
- 我们用数字信号(也就是0和1)来表示信息,也就是说信息就是一串比特流,我们要怎么表示数字信号呢?
- 在传输过程中,我们要考虑传输速度、传输距离、传输的方向性,再深一步,还要考虑传输过程中是直线传输还是有拐弯的地方,甚至还要考虑穿透性。
相邻计算机间如何传输数据
- 我们是直接将两台计算机连接起来进行专线传输还是将其接入一个网络通过共享信道进行数据传输?我们是面向连接还是非连接?
- 数据要如何封装?
- 我们要考虑到最坏的情况,传输过程中出了错怎么办?纠错?查错?还是不管了?
- 传输双方传输的信息大小不一定是相同的,如何协调传输双方间的一些问题?这又涉及到了流量匹配问题。
远距离计算机间(非相邻)如何传输数据?
- 是使用专用线路还是存储转发、分组交换?
- 我们要找到传输的路劲并对路劲进行优化与调整,因此如何选择路劲?
- 不同的网络的结构可能是不同的,那么如何将异构网络互相连接?
- 网络的服务质量怎么保证?如何进行拥塞控制?如何进行出错控制?
- 我们如何进行远距离多计算机间的通信?这又涉及到了多播问题。
- 现在的计算机早就不是固定在某一具体位置了,比如笔记本,甚至手机也可以看做一台计算机,那么如何解决计算机的移动问题?
端到端数据可靠性保障
- 什么是可靠性?
- 如何得到可靠性?有多可靠?
- 安全性问题。
应用计算机网络的基本问题
- 如何进行网络编程?
- 如何提供资源共享服务?
- 如何实现信息交互(即时通信、邮件发送等)
- 如何更好的互操作(云计算、网格计算、服务计算)
- 如何实现万物互联(物联网)
问题解决思路
??我们有如此多的问题需要去解决,我们的思路是分而治之,由易到难。这不仅是计算机网络的设计思想,也是其它很多工程的设计思想。
??相互同心的两个计算机系统必须高度协调工作才行,而这种协调是非常复杂的。因此我的基于分而治之的思路,将庞大而复杂的问题,转化为若干个小的局部问题,这些局部问题比较容易解决。将局部问题解决完后只需要将这些层次协调起来即可。我们还是以一个生活中的例子来说明问题。
??这里下层向上层提供服务,上层并不需要下层内的具体工作细节。这就类似我们的模块化编程,只需要知道一些API即可,具体的实现细节不需要去考虑。
四个重要的概念
- 层次(layer)
- 协议(protocol)
- 接口(interface)
- 体系结构(architecture)
层次
??层次是我们对复杂问题的一种处理办法,基于分而治之的思想,将总体要实现的很多功能分配在不同的层次中,不同的系统分成相同的层次,不同系统的最底层之间存在着“物理”通信,不同系统的对等层次之间存在着“虚拟”通信,对不同系统的对等层次之间的通信有明确的通信规定,即协议,对每个层次要完成的服务及服务要求都有明确的规定,高层使用低层提供的服务时,并不需要知道低层服务的具体实现方法。
??这里的“物理”通信是什么意思呢?也就是说最底层之间是通过实物来进行连接传递信息的;“虚拟”通信的意思是该层次将信息传递给最低层次后,另一方的最低层次又将信息传递给对等层次,这一过程我们将其抽象为这两个层次直接相连进行通信了,这一抽象的依据是高层使用低层提供的服务时,并不需要知道低层服务的具体实现方法。
层次划分的原则
- 根号有不同层次的抽象来进行分层
- 每个层次应当实现一个定义明确的功能,不同层次的功能不同,即要做到分工明确,职务不冗余。
- 每个层次的功能的选择听该有助于指定网络协议的国际标准
- 各层边界的选择应尽量减少跨过接口的通信量
- 层次应该足够多,以避免不同的功能混杂在同一个层次中,但是也不能太少,否则体系结构会过于庞大。
总结一下,层次的划分满足一下几点:
- 各层之间相互独立
- 灵活性好
- 结构上可区分
- 易于实现和维护
- 能够促进标准化工作
协议
在计算机网络中要做到有条不紊的交换数据,就必须遵守一些实现约定的规则。这些规则明确规定所交换的数据的格式及有关的同步问题。 举例:两个计算机传送文件,除了两台计算机之间必须有一条传送数据的通路之外。还有许多事情需要处理问题: 1)发送方主动发出信令告诉对方:我有数据要发送,请你做好接收准备。 2)告诉所经过网络的中间结点如何识别目的计算机。 3)弄清对方是否做好接收准备。 4)双方所使用的文件格式是否一致,若不一致该如何转换,由谁负责完成格式的转换。 5)通信过程中,出现差错该如何处理。 6)如果接收方的处理速度慢,来不及处理发送方传来的数据,如何告诉发送方。 等等。 由此可见,相互通信的双方必须高度协调,这种“协调”相当复杂。 为此,通信双方必须遵守一定的通信规则。这个通信规则称为网络协议。
网络协议三要素
- 语法:结构或者格式
- 语义:具体的含义
- 时序:实现的顺序
接口
- 接口是同一结点内相邻层次之间交换信息的连接点。
- 同一个结点的相邻层之间存在着明确规定的接口,底层向高层通过接口提供服务。
- 只要接口条件不变、底层功能不变,底层功能的具体实现方法与技术的变化不会影响整个系统的工作。
流程图
这里用一系列的图片来演示两台计算机之间的通信。
|