OSI模型

您所在的位置:网站首页 ret2xx OSI模型

OSI模型

2023-01-27 07:05| 来源: 网络整理| 查看: 265

OSI七层模型的设计灵感来自哪里?

当年制定OSI模型的研究人员,在酒吧喝酒的时候,聊起了白雪公主这部电影,有人就提问了:“要是知道七个小矮人的名字?老子就给谁续杯!“还真有人把七个名字写在了餐巾上,这个时候有位兄弟酒精上头,说这七个小矮人不正好可以拿来作为网络模型吗?于是餐巾都不舍得扔掉。第二天研究人员就闻着这还带有酒味的餐巾开会,一致同意把网络模型划分为7层,这就是折磨人多年的OSI网络参考模型,注意我这里说的是参考,也就是说OSI网络实际中并不使用,我们只是把OSI网络模型作为参考。

在网络出现问题的时候,可以从一个宏观的整体去分析和解决问题,而且搭建网络的时候也并不一定需要划分为7层,但是当今互联网广泛使用的是TCP/IP网络模型,原本只有4层,随着人们的不断实践后发现,其实划分为5层会更加符合实际.

但为什么还老面试官喜欢问OSI模型呢?

其实OSI七层的名字并不难记,七层里的知识才是最复杂的,谁能把这里头的知识都关联起来,遇到问题的时候就能快速处理和解决问题。OSI模型的目的其实很简单,就是为了解决主机之间的网络通讯。比方说华为电脑要和苹果电脑互联,但他们是不同的公司,就有点像普通话和英语进行沟通一样,但是如果大家都统一用OSI网络模型来沟通,情况就不一样了。假设现在苹果电脑自己用应用软件搭建了个网站,华为电脑想要访问这个网站就需要通过软件应用了,比方说用浏览器访问网站,两个应用具体需要如何进行交互就是应用层的事情了,应用层并不是说你需要使用什么应用程序,而是应用如何沟通。

常见的应用层协议就是HTTP了,开发者就可以根据HTTP协议编写应用程序,使得应用之间可以实现沟通,应用层就是最接近用户的那一层,但是应用层只不过是逻辑上把两个应用连通,实际物理上的连通是需要物理层的。我们要发送出去的数据在计算机里只不过是无数的0和1(0或者1就叫做比特)物理层就要把这些比特用不同的媒介传输出去,可以用电,用光或者其它形式的电磁波来表示和传输信号,数据从网络接口出去以后会经过不同的网络拓扑,并不是一条线走到底,因此需要中继器和集线器这样的设备。但还是不够,物理层信号要去到哪台设备是需要定向的,因此需要高级一点的网络模型,在数据链路层这里,比特会被封装成帧,帧就是这一层表示数据的特殊名字而已,在封装的时候会加上MAC地址(物理地址)网卡出厂的时候就有着全球唯一的MAC地址,为了可以通过MAC地址对不同设备进行数据的传输,就出现了交换机,这里说的是二层交换机,比方说这里有一台交换机,连接多台主机,发送端发送数据的时候,交换机就知道了发送端的MAC地址,如果此时交换机也知道接收端的MAC地址,就可以把数据直接发送过去了,物理地址就是这样一跳一跳地进行传递,另外因为物理层在传输0和1的时候,可能会0变成1,以及一定的差错纠正,另外设备之间的传输能力以及接收能力也是个问题,“喷水”式传输很可能这边“夹缝”式接受另一边,因此需要流控制来避免这种不对称。我们知道互联网是一张大网,物理层如果用MAC物理地址来作为唯一的寻址方法是不科学的,比如我和你买了同一个厂出的网卡,我和你的网卡如果差别就只有一个字母,但是我和你距离十万八千里,物理地址此时就很难做出快速定位,相当于我有你的名字,但不知道你住哪里,找不到你。因此需要IP地址来进行寻址和路由选择,IP这样的逻辑地址就是实现端到端的基础了,而不是物理地址那样的跳到跳传输。说到路由选择,也就是说路由器也是网络层的核心,包就是网络层里数据的名字,在封装为二层的帧之前就是包,路由器根据包里的IP地址进行路由转发地址管理和路由选择就是这一层的核心,物理层虽然有MAC和IP地址可以抵达对方主机,但是对方主机可能运行着无数多个软件进程,假设我用谷歌和火狐浏览器同时登录网站,如何让数据去到指定的软件服务上,就需要用到端口号作为地址来定位了,比如客户端这里生成不同的端口号,即时同时访问HTTP端口80也是没问题的,根据不同的源端口号来作出响应就可以了,所以传输层在网络层的端到端基础上,实现了服务进程到服务进程的传输,段就是传输层里数据的名字,在封装为三层包之前就是段。传输层管理两个节点之间数据的传输,负责可靠传输和不可靠传输,也就是大家熟知的协议TCP和UTP,另外还有一个新的叫QUIC,其中TCP允许应用把字节流变成多份段,而不是整个字节数据完整地发送出去,传输层还有流量控制来确保传输速度,再加上错误控制来进行数据完整的接收,接下来会话层也比较好理解,比方说你现在登录了某个网站,网站服务可以保持你的登录状态,不用每次都输入账号和密码,当然网站服务会管理和控制登录状态。另外会话层还负责同步服务,比方说你上次看到电影高潮的时刻突然停电了,再次登录账号的时候,就可以自动同步到上次看到的时间段,不同计算机内部的各自表达方式可能不太相同,表示层就来负责这样的转换,也就是编码和解码。数据往往还需要进行加密,比方说HTTPS(SSL/TLS)就会对我们的数据进行加密和解密,另外我们可能还需要给文件瘦身,压缩也是这一层负责的,物理层,应用层,表示层和会话层的数据统称为应用数据,或者应用负载,也可以叫上层数据,同时也是教科书上说的报文。数据在各层的名字分别是:报文,段,包,顿和比特。比特就地址来说,比特有端口号,IP逻辑地址和MAC物理地址;比特就传输功能来讲,比特有服务进程到服务进程,比特端到端,还有跳到跳。

了解了各层的作用,现在就可以把全部关联起来,客户端要发送数据,也就是报文。报文来到了传输层,加上端口号,封装成段;加上IP地址,封装成包,注意这里的包是含有目标IP地址的,毕竟你要知道数据要发送到什么地方,但因为目标IP地址不是同一个网络下的,要发送到其它的网络,就需要经过默认网关。现在就出现了个问题,客户端主机最初并不知道默认网关的MAC地址,没有办法封装成帧,这个时候就可以用ARP协议进行广播找到网关IP对应的MAC地址,把包封装成顿,源MAC地址填自己的。假设当前网络有个二层交换机,这个交换机只需要记录下不同的接口对应的MAC地址就好了,交换机收到广播后就帮忙发送出去,人手一份,所以默认网关收到消息后,查看了顿,发现了发送端的MAC地址,再解封发现包里面的IP地址,就会把客户端MAC地址和IP地址关联为一台主机,同时默认网关会把自己的IP地址放入包里,再结合自己的MAC地址封装成顿,默认网关就这样作出响应,发送端就知道默认网关的MAC地址了现在就可以封装成顿,并且发送数据,比特流到了默认网关的时候解封为顿发现是发送给自己的,再解封为包查看到目标IP地址是在另一网络中的,服务器就会进行路由转发服务器最终到达了目的网络,服务器如果目标的网关知道目标IP地址和MAC地址是哪台主机,服务器封装成为帧就可以直接发送过去了,如果不知道也还是可以用ARP喊下街就好,主机收到包确认是自己的IP地址以后,解封查看段可以发现源和目标端口号,用目标端口号给到指定的应用程序,应用程序处理好后,就可以按照源的信息作出响应,回去的原理也是一样的。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3