浅谈OSI七层网络体系结构
为什么
为什么要为网络结构分层呢?这其实体现的是分而治之的原理。和做项目一样,比方说一个完整的大型游戏只由一个人开发,好处就是这个游戏里里外外高度统一,但是时间代价太大了。怎样做到即统一又快速呢?就是将这个游戏分为很多模块,由不同的人来完成不同的模块,但模块之间又要设立一个标准,达到统一的目的。
同理,网络数据传输的过程其实是一个相当复杂的过程,我们同样需要将它分层次并且形成一个标准,由此世界标准化组织ISO在1983年推出了OSI参考模型。
是什么
OSI协议分为七层,从上至下分别是:
- 应用层(Application)
- 表示层(Presentation)
- 会话层(Session)
- 运输层(Transport)
- 网络层(Network)
- 数据链路层(Data Link)
- 物理层(Physical)
接下来便分别阐述这七层协议
应用层
为用户提供服务或应用程序,如收发邮件,网页浏览,QQ等。
表示层
将用户请求转换为OSI语法形式。每一个标准都有它对应的语法,比方说用户在应用层qq上发出了“你好”。那么首先在应用层会将用户请求转化成计算机能够识别的报文,然后在表示层对报文进行转换,使它符合OSI的语法,使它能够继续往下执行。
会话层
会话的建立,管理和释放。会话是什么?简单的说就是一个事件完整的过程。比方说支付宝付款这一个事件,我必须有购买——提交订单——付款这么一个过程,如果说我点击提交订单后,刷新了一下网页,发现订单不见了,得重新购买,这不合适吧。
运输层
端到端地传输完整的报文。注意两点:端到端(end to end),完整的报文。
什么叫端到端,是指计算机到计算机吗?并不是。计算机中有很多开放的端口都知道吧?对,端到端就是指端口到端口,而计算机到计算机叫做点到点。为什么要这样呢?打个比方,有三个人A,B,C,他们在用QQ聊天,A对B,A对C都发了一个消息,B和C都要给A回,这个时候,如果传输过程是点到点的话,A的计算机怎么区分这两个回复消息是分别来自谁然后分配到QQ不同的对话框中的呢?所以说,端到端的好处就在于此。事实上,如果你用netsta -an命令可以看到计算机端口的运行情况,当你浏览一个网页,或是发送一个什么请求,对比计算机前后端口的变化,你就会发现端口的开放。
什么叫完整的报文呢?我们知道,网络数据的转发实则是利用了分布转发的原理,每一个报文将会被分为很多部分通过不同的线路往外发,从而提高效率。但是在这一层还没有往外发,只是传送的完整的报文。
网络层
以分组报文为单位,进行分组打包处理和分组路由选择。这里准备往外发,将数据进行分组。
数据链路层
以数据帧为单位无差错地传输数据。两点:一是数据帧,二是无差错。
我们知道,数据不是盲目地发送的,而是有目的,有源头的,所以体现在数据当中就是数据帧,它有一定的格式,表明数据的一些信息。
无差错,数据传输过程难免出现差错,怎样避免也是数据链路层需要考虑的问题。
物理层
在物理线路上传输数据比特信号。至此,数据才从主机当中开始往外发。
怎么用
以QQ发消息为例,以上的讲解已经能够表示,消息是如何发出来的,那么接收的过程呢?同样地,物理层接收比特信号,在数据链路层解析是不是发给我的啊?来自哪里啊?这些问题,在网络层将分组得到的报文组合起来,在运输层找到相应的端口,会话层查看会话状态,表示层转化成应用层能理解的形式,应用层解析数据并将其显示在QQ对话框当中。
注意
OSI参考模型之所以叫参考模型是因为它是一个完美的模型但实际的应用却几乎没有,所以它的价值是在于形象描绘了数据在网络内部的传输,具有参考价值。虽然实际应用少,但是它始终是一个非常重要的概念。