前言:
上一篇文章讲解了应用层的HTTP,其实应用层还包括DNS协议,但是不算很难,就不专门写了。问题来了,那为什么OSI七层,变成五层以后,没有会话层和表示层? 这是之前看到的一个问题,记录了下来,并且查阅了资料,直接贴出来吧~
为什么没有会话层和表示层?
表示层: 解决两个系统间交换信息的语法与语义问题,还有数据表示转化(转为主机无关编码),加解密和压缩与解压缩功能。
会话层:用于建立会话SSL等
不是弃用,而是这两层从来没有独立实现过,都是和应用层在一起实现。
五层协议没有表示层和会话层,而是将这些功能留给应用程序开发者处理。(OSI只是一个理论上的参考模型,也就是说实际应用中作为参考的。现行的tcp/ip协议族选用了5层架构,把会话层和表示层的功能整合在了应用层,这样有助于给开发者更多的选择。层次太多增加协议的复杂性也造成效率的折损。 在osi参考模型中,会话层的功能是会话控制和同步,表示层是解决两个系统间交换信息的语法与语义问题,还有数据表示转化(转为主机无关编码),加解密和压缩与解压缩功能。 很明显这两层在实际应用中很难保持统一性,应用通常会选择不同的加解密方式,不同的语义和时序,谈不上复用的东西作为协议的一部分自然是没有意义的,所以这两层的功能交给应用开发者作为应用层的一部分功能开发是比较合适的。)
以TCP/IP协议五层模型的计算机网络率先出现,硬件接口实现“物理层”、“数据链路层”,操作系统内核里的TCP/IP协议栈实现“网络层”、“传输层”,所有依赖于TCP/IP协议栈的应用程序实现广泛意义上的“应用层”,这个广泛意义的“应用层”既实现了会话ID、心跳keepalive,又实现了诸如文字、图片、音频、视频、文件的不同表示。
后来才有以TCP/IP为现实素材的OSI七层参考模型,希望将“会话层”、“表示层”从广泛意义上的应用层里独立出来,这样可以让应用程序瘦身,核心目标是:让千千万万不同应用程序共享“会话层”、“表示层”软件代码。
很遗憾的是,迄今为止这个美好的愿望依然没有实现,究其根本原因是,不同的应用程序有大同小异的会话、表示需求,这些代码不完全能够抽象到独立的会话层、表示层,或者说,现有的应用层已经比较完美实现了会话层、表示层,对于七层模型需求没有动力。
安全层 但是,有心栽花花不成,无心插柳柳成荫,一个提供安全加密服务层出现了,很多人都使用过,只是一直没有人想去划分层次结构,它的名字叫SSL/TLS,有了它的加入,我们可以将TCP/IP五层结构看成六层:
应用层 安全层(TLS) TCP/UDP IP层 数据链路层 物理层
有了安全层提供的服务,位于应用层的HTTP/SMTP/FTP,都可以在其名字后加一个S(Security),比如HTTPS,其实这个世界压根不存在HTTPS协议,只有HTTP协议,加上S的后缀只是告诉大家HTTP使用的是六层结构,有了SSL/TLS的安全保护。