我们在上一章节讨论了计算机网络的发展史,从进程发展的趋势来说,可以理解为无到有,从混乱到趋向稳定。为什么说是从混乱到趋向稳定呢,实际上是因为,我们仍在这个过程中不断得探索着如何去建立一个稳定的网络环境,而非已经到了真正意义上的稳定时代。因此,同志们呐,革命尚未成功,同志们仍需努力啊!
emm,既然说到了从混乱到趋向稳定的过程,那我们今天要唠嗑的OSI七层模型的一个典型——一个从混乱的通信协议中逐步建立起通用的网络模型。同时,它也是一个相对理想的网络模型,可以说是一代信息互联网人汇集起来的智慧结晶了。因此,这也是我们为什么要讨论这个模型的原因——从历史代价中发掘趋势,厘清未来的发展方向。哇,多么崇高的屁话,就不再多说了,下面让我们一起进入历史吧!
在上一章节里,我们阐述了从20世纪70年代起,开始有了计算机通信的尝试。而这个尝试实际上并不是一个人或一个团队来完成的,它的跨度之大,可以理解为所有有识之士的一次共同尝试。在那个群星荟萃的时代里,既有IBM的SNA协议,也有digital的DNA协议,更有诞生于美国国防部的TCP/IP协议可供计算机间的通信。这一切看起来似乎很不错,我们有多个选择。但实际上,群雄割据的结果往往是以一方的胜利为代价。为什么这么说呢?这是因为,给予各协议间的实现不一致,两台不同协议的主机之间往往是不能够进行通信的,就好比打电话,一端是英语,一端是普通话,如果双方都不能正确识别对方的语言,那无疑是对牛弹琴。因此,在那个时间段里,各厂商之间的矛盾在于市场之间的争夺。而谁的协议使用最广泛,则无疑会导致用户群体增加,从而增加市场的份额,因此,各厂商间的消耗战如火如荼(ps:此处无实例,仅做铺垫描述,不敢代表历史啊哈哈哈~),后来,不管是出于用户希望能和其他所有人进行交互的立场也好,还是出于消耗战下带来的高额代价的思考也罢。国际标准化组织ISO在1997年成立了一个委员会,推出了定义网络协议的一个标准化模型-OSI,该模型层共分七层,比较详细地定义了从顶层应用到底层链路的各个协议,换句话说,只要各厂商能依据该模型建立对应的协议,则该协议可适用于所有基于该模型的电脑,而不仅局限于自家产品本身。这看来似乎对当时最大的厂商不利,市场份额被瓜分是个痛点。但如果不做这个改变,那么被中小型厂商联合孤立的代价或许会更惨。而从整个计算机发展历史来看,没有跟随历史潮流作出改变的公司,往往会被历史潮流推倒,这是后话,暂且不提。当我们能肯定的是,时至今日,尽管OSI七层模型仅是个理想模型,并没有谁能真正定义这个模型的实际内容。但却早就了依据该模型而逐步被广泛接受的TCP/IP协议族成了最大赢家,成为了现时的普遍意义上的通用网络协议。那么,这个模型到底包含了什么内容呢?我们来看一下:
说起OSI的结构,毫无疑问,从题目就可以看出,它共分为7层,从下往上分别为:
- 1.物理层:该层的核心是定义了网络传输的机械规范和电气规范,保证了将模拟信号转化为数字信号并且对外传输,核心实际为我们常说的网线,重点在于它是如何保证上述功能得以实现。其中,涉及到两点:第一:数模转换,第二:数据收发。其中,关于第一点,实际上是通过电子信号的高低位来实现的,即我们常说的门的机制。这部分实际上需要和数据链路层发生一定的交互。第二,关于数据收发,则基于通信双方共同遵守的一些在硬件配备上的协议,比如:我们常见的水晶头,实际就基于该层的一个物理协议进行生产的。
- 2.数据链路层:该层的核心实际是数据在传输前的最后一个核心步骤,主要包括数据拆解,包装,纠错等。这里的功能其实围绕一个关键词进行,那就是数据帧。如果有细心的朋友,细心留意下家里电脑的水晶头,其实你会发现,在联网的情况下,我们的水晶头是会有一定的闪烁过程的。这里的闪烁过程,实际上就是物理层在对外收发数据信息。但对数据的发送和解析部分,实际上传输的就是经过解析之后的数据帧。或者你可以这样简单理解,一个闪烁过程,实际上包含了进行的是两次转换,即高门和低门的转换,那这里的高门和地门是谁控制的呢,实际是由底层驱动依据数据帧的比特位进行对换的,因此,物理层的传输数据,我们也称之为比特流。实际上就是基于数据帧而进行的收发规则转换。
- 3.网络层:网络层的概念,实际上是基于多人通信的前提,如果说我们只有两台电脑之间的数据传输,那不用说都知道,数据都是双方之间在传递。但现在变成了三台电脑之间的相互通信呢?我们就要考虑这段信息的目的地是谁的问题了,因此,网络层的核心就是控制数据传输,通过路由寻址的方式,保证数据间的正确传输
- 4.传输层:顾名思义,该层的核心在于数据传输。什么意思呢,举个例子:加入现在A要向B发送一个约10G的数据,在这个过程中,C又想向A发送100m的数据。按道理来说,我才100m的东西,你A收起来很快的,是不是应该先把我的事情处理好了,再去弄其他的事情呢?可是A说不行,我现在发着东西给B,不能停下来接收你的东西!不然我又要重新和B建立联系,再来发送了。所以C只好一直等啊等啊,直到3天3夜之后,A才接收到他的这个请求。可能这样说还觉得问题不是很大,那现在重新比喻一下,A现在和朋友打着游戏,女朋友C打电话过来了,A说,游戏要紧,继续撸。让C在那里等着,直到游戏打完,这时候再去找C,可能A会发现C已经和D在一起了。。。这么说,知道问题的严重性了吧?为了避免这种情况的发生呢?我们可以参考分时策略,把所有的数据分成n个小包,我们在一定的事件内只处理部分的数据信息,比如这一帧,我们对外发送信息,下一帧,我们接收并处理来自外部的数据,这样通过分包的机制,避免了数据传输造成的阻塞,或者因为链接中断导致数据缺失的情况了。而这个,则是传输层的一个核心思想
- 5.会话层:该层的核心是拉起和撤销会话。什么意思呢?比如当A要向B发送一个HeloWorld,那它首先就要先把这个字段划分为数据包,然后去查找路由表,通过路由表获得B的地址,然后呢,再把数据转化成数据帧,最后让网线按照高低门对外发送出去。这么一个过程是不是显得优先繁琐了,既然说每一次的数据交互都是这样的套路,那为什么我不能请个人回来,让他专门负责这件事呢?以后的我只需要和他说,给谁发送什么什么信息就好了,其他的流程他会主动帮我们完成。那这个人,实际就是会话层,它负责维护我们和目标主机的请求和响应。
- 6.表示层:这一层的核心功能是管理不同平台的数据显示。实际上,我们用手机QQ和电脑QQ聊天的时候,虽然明面上我们看到的信息都是一样的,都是一样的表情包一样的语音一样的文字。但实际上,平台间对于数据处理的方式存在很大的差异,为了保证数据间的统一。需要一个层级来针对不同的平台进行对应的数据处理,以保证最后我们所看到的数据是统一的,而避免出现A向B发送了一个“我爱你”,而B确收到了A说的“滚犊子”这样的悲剧发生。
- 7.应用层:最后一个,实际就是前面几个流程的外显,比如QQ,比如邮箱等。实际上我们说的QQ,邮箱,可能是包括了多个应用层。所谓的应用层,是指一整套符合流程规范的协议族。比如FTP,Telnet,DNS,SMTP等,我们基于这些完善的协议族,开发出符合人们使用习惯的各种应用。因此才叫应用层。
好了,以上就是OSI的层级关系以及功能的大概描述。细心观察可以发现,它实际上是基于一个个的功能需求而逐步完善的,并且在这个过程中,每一个层级之间的分工是相对比较明确的,每一层都有对应的拆箱和装箱的协议对应。保证了对同一条数据,能够做到装箱传输,也能通过拆箱重组。保证了一条信息的正确传递过程。而实际上,网络协议出现的初衷,正式基于让所有人间都能正确传递信息这样的一种愿想。因此,如果需要记忆上面七层的内容,不防把它带入到信息传递这一需求中,去分析每一层在这个过程担当了什么角色,自然而然的就会对它们有所了解了。
当然,我们说了,这是个理想模型,之所以是理想模型,是因为它把一些层次之间的功能界限分开了,而实际上,有些地方的功能是可以视作一体的,所以,对于我们常用的TCP/IP,一般依据功能,会划分成4层或5层,这个没有具体的禅定到底是4层还是5层,就好比糖粽子和咸粽子的争论一样,意义不大。因为实际的功能协议都是基于OSI七层模型来确定的。因此也不做过多的描述。
ok,以上就是OSI七层模型的一些讲解。文中为了便于理解,可能会用到一些不是十分专业的的词汇,在表达上可能会有些误解。如果有发现这些错误的地方,烦请斧正,不胜感激~
最好:来一波章节预告:下一章:也说TCP/IP之Socket通信模型,阐述基于OSI思想的一个应用模型,欢迎下次赏脸,日期,emmm,不定~
转载:https://blog.csdn.net/dengminghli/article/details/100915087