互联网OSI七层模型详细解析(三)

让我们接着上一篇继续讨论OSI模型的第5层、第6层和第7层。网络上很少有资源能够真正帮你区分OSI模型的最后三层:会话层、表示层和应用层,因为另一个较为流行的计算机网络模型TCP/IP协议已经将这三层组合为一个整体的应用层结构。

要理解OSI会话层,你必须得知道这个模型是早在个人计算机或笔记本电脑问世以前就已经创建了。那时,计算机的运行是在被称为大型计算机的大型机器上完成的,这些机器通常很大,占据了整个房间。后来人们使用被称为哑终端(字符终端)的设备来访问这些巨大主机上的计算资源(CPU资源、内存资源、磁盘资源、网络资源)。哑终端实际上只是插入这些主机的显示器和键盘,并不会执行实际的数据处理。所有的实际计算都是在大型机上完成的。这也是Linux创建的模型,也是Linux经常被描述为多用户操作系统的原因。在任何情况下,所有的计算都是在这些大型主机上完成的,用户通过哑终端连接到这些大型主机上,它们的另一端又连接着其它的大型主机,而其它的大型主机另一端又是与哑终端相连着的用户组。     

说到这里我们就可以定义会话层主要解决的问题了。如图示,左边的蓝色用户正在通过该大型机与右边也连接着大型主机的蓝色用户进行对话,与此同时还有两个绿色用户也在使用这两个主机相互对话。好吧,如果所有的数据都需要在这两个相连的大型主机上处理和发送,那么从左侧主机发送到右侧主机的数据包将具有相同的第二层地址(-MAC地址),相同的第三层地址(-IP地址),甚至可能具有相同的第四层地址(-端口号),这就引出了一个问题,如何将这两个蓝色用户之间的对话从这两个绿色用户那里保持分离呢?这就是会话层发挥作用的地方。

  • OSI会话层的作用:

会话层是用于区分用户会话的,它允许网络协议独立于OSI模型的第二层、第三层或第四层地址来识别用户。其实第五层也使用了一些被称之为第五层的组件。假设这两个蓝色用户在没有使用大型主机的情况下需要进行交谈,实际上右边蓝色用户是xxx site.com的网络服务器,而左边蓝色用户只是使用手机的人。

该移动电话当前连接的是此用户家中的Wi-Fi,并登录到了网站xxx.site.com。但是如果这个用户决定去咖啡店并连接到那里的Wi-Fi网络时又会是怎样的情形呢?因为咖啡店的网络不同于家中的网络,是一个新的IP地址,因此很多信息也会发生变化。如果网站需要使用OSI模型的第一层到第四层的信息来识别这个用户,那么该用户将不得不重新登录到该网站。因为网站每次连接到新的Wi-Fi网络时,都会获得一个新的IP地址。

由于我们是使用HTTP协议来访问该网站的,HTTP中有一种名为HTTP cookie的功能。这些cookie只是一些任意文本字符串,用于存储由服务器创建的用户特定信息。当用户登录到网站时,服务器会生成这些cookie中的一个并将其发送给用户,然后该cookie就会与用户信息联系在一起。所以你可以看到HTTP cookie是OSI模型会话层协议的最好例子,它们允许网络独立于数据链路层、网络层和传输层地址来识别用户。这就是我前面提到的第五层组件。

  • 表示层提供的功能

接下来是OSI模型第六层-表示层。我们先模拟一个数据包到达xxx.site.com的web服务器的场景。前面我们说过每个数据包实际上只不过是一系列的1和0。在OSI模型前五层的协调工作下,我们知道这个数据包会被成功传递到web服务器,传递到正确的Mac地址、正确的IP地址,正确的端口号以及启动正确的用户会话,那么OSI第六层负责什么功能?是告诉我们如何转换这些1和0吗?

事实上我们可以采用不同的计算机数据表示方法来解释这些1和0。例如,我们是不是可以按照Base64的编码规则将这些1和0划分为6位一组的编码,如此就意味着这些6位一组的编码会变成一组新的64字符集。

或者我们是不是应该以4位为一组来解释那些1和0,也就是十六进制,每组由四个1和0组成,代表着一个新的十六进制字符:

或者我们应该将这些1和0解释为长数字或整数,如果我们将所有这些1和0解释为32位随机整数,这些数字的变化将会庞大到数不胜数。

这就是表示层的功能,它是要告诉我们如何处理这些1和0。之前的会话层我们是以HTTP为例的,在表示层我们仍会使用HTTP协议来作说明。

HTTP协议使用的是扩展ASCII码对照表,扩充ASCII码将所有的1和0分组为八个比特的集合(也就是8位码),并将每一组8位码解释为不同的ASE字符,将每一组不同的1和0组合转换为字母G、字母E以及字母T。以此类推,这就是表示层提供的服务。它告诉我们如何处理通过OSI模型成功接收的比特1 和0并将其交付给正确的用户会话(用户会话是指用户与系统进行交互的一系列对话过程)。

  • OSI应用层有何作用?

如果表示层的主要功能是告诉我们如何翻译这些已经接收到的1和0, 那么第七层-应用层是要告诉我们如何处理这些被翻译的字符,或者说是第七层实际上定义了应用程序命令。

前三个字节的1和0分别被转变成字母G、E和T,HTTP中的get命令是用于获取特定网页的命令,是一种网页请求的方式。实际上是HTTP request的前8个字符使用主机packet.net中的http P 1.1 请求访问简单html页面。这就是OSI模型第七层应用层的功能。

在本节中,我们一直使用HTTP作为示例协议。为了实现会话管理目标,HTTP使用了HTTP cookie,无论你使用的是ipv4还是IPv6,HTTP cookie的工作原理都是一样的。对于第六层,HTTP使用的是扩展的询问编码;对于第七层,HTTP有自己的一组应用程序命令。当然这只是教你了解计算机网络是如何工作的,网络协议也不只有HTTP,还有其它协议在OSI模型上工作。例如FTP协议。这些协议中的每一个都可以以任何对特定应用程序最有意义的方式实现第5层、第6层和第7层的功能。

这就是为什么TCP/IP模型将这些层合并为一个聚合应用程序层的原因,因为应用程序的每个协议都将以自己的方式实现这三个目标, 因此才将它们组合为一个有益的应用层。所以最终无论你使用的是七层OSI模型、五层TCPIP模型,还是有点传统的四层TCP/IP模式,它们都是帮你理解计算机网络的一种方式。

Author: Maha

我是Wintesting中国站的 Maha,目前职位是市场营销&内容经理,负责CN Wintetsing网站内容的设计、编写与发布,同时还监管国内市场营销工作。与此同时,我也是一名IT培训教员,我的教育背景和所从事的行业都是与IT工程师行业及信息通信技术相关。此外,除了编写中英双语的新兴技术文稿外,我还是一名IT翻译工作者,累积翻译字数逾近10万,涉及的领域有大数据、人工智能、IoT、机器学习、云计算、AR&VR、计算机网络技术、计算机网络安全技术、应用程序测试、软件测试、系统测试、网络测试及IT基础设施等。如果你需要相关领域的内容编写或翻译工作请联系我。