05 是时候展现真正的技术了 - 应用层¶
可能细心的小可爱-你已经观察到了,我们虽然讲的是 OSI,章节却是按照 TCP/IP 四层来讲的。所以我们今天会把会话层,表示层以及应用层一起讲。之所以这么讲就是也是因为第五和第六层可以不用考虑。在现代网络中,我认为它们并不完全重要(不重要在这里是说你在 debug 的时候,可以不用考虑,即使是网络工程师,当然作为软件工程师的你也不需要考虑这些)。我同意其他某些人的观点,存在即合理。有些协议确实在第五层和第六层起作用(当然是因为之前网络还没有那么发达,或者类似于 IBM 这种一家独大的时候,可以做一些事情来垄断,现在已经不存在了,就好像 IBM 这个公司你肯定知道,但是提到 TOP IT 公司你还会想到 IBM 吗,如果回答会,那你可能有点过时了,哈哈)。让我们再看回要讨论的问题。在这里是不是五个,六个和七个之间的区别并不是那么重要了。
会话层¶
会话层提供的服务可使应用建立和维持会话,并能使会话获得同步。会话层使用校验点可使通信会话在通信失效时从校验点继续恢复通信。这种能力对于传送大的文件极为重要。会话层,表示层,应用层构成开放系统的高 3 层,面对应用进程提供分布处理,对话管理,信息表示,恢复最后的差错等。
表示层¶
表示层是为通信提供的一种公共语言,以便能进行操作。这种类型的服务之所以需要,是因为不同的计算机体系结构使用的数据表示法不同。例如,IBM 主机使用 EBCDIC 编码,而大部分 PC 机使用的是 ASCII 码。在这种情况下,便需要会话层来完成这种转换。现在,当我们使用键盘输入某些内容时,发生的事情是我们使用了一种称为 ASCII 的格式。 ASCII 的作用是将每个字母,小写和大写以及键盘上的所有符号都转换为十六进制值。在本课程的稍后部分,我们将讨论十六进制编号系统,但是现在,只知道这是一种与十进制有点不同的计数方法,但实际上,它非常相似。它只从 0 到 15 计数,但不能由单个值到 15 计数,因此它从 0 到 9 计数,然后将 A,B,C,D,E 和 F 加进来凑到 15。现在,仅需了解 ASCII 会将键盘上的任何字母都转换为该十六进制值。所以这里 A 是 41。L 是十六进制的 6C 数字,实际上是一个数字。空格是 20,Y 是 79。如果我对其余所有字符都执行此操作,则得到的所有基数都属于我们,均以 ASCII 编写。你可以在这里看到一些相似之处,对吗?它表示为 41 6c 6c 2079。好吧,这就是所有空间 y。因此,在 ASCII 中,我们具有这种格式。ASCII 是用于编码文本的开放标准。在 20 世纪 70 年代,IBM 是一家规模庞大的硬件销售公司,IBM 希望与众不同,以便你必须购买他们的硬件及其所有东西才能搭配使用,因此他们使用了一个称为 EBCDIC 的不同编码系统,EBCDIC 所做的与 ASCII 相同。
它为不同的键盘字母分配了不同的十六进制值。表示层为我们做的是,如果你有一个运行非 IBM 系统的大型系统,并且需要与运行 IBM 的业务系统联网,则需要某种协议将 ASCII 转换为 EBCDIC,你可以进行翻译,以便 IBM 机器可以理解该语言,而非 IBM 机器可以理解所传输的信息。表示层具有一些允许这种情况发生的协议。有时,我们拥有允许在表示层进行加密的协议,其中包括格式化图片等。在现代网络中,大多数这种格式设置完全在网络之外的应用程序内部进行。 EBCDIC 在很大程度上已经死了,我们不再需要它了。
因此,表示层最终是有点过时的协议。这里有些过时的第二层是会话层。在会话层运行的协议称为 Citrix ICA 协议。不过,在大多数情况下,对于设计防火墙,网络,故障排除和支持的网络工程师而言,ICA 协议在大多数情况下也可以在应用程序层运行。我们只是在规范中正式写了它,即 ICA 是第五层协议,而不是第七层协议。作为网络技术人员,当你进行故障排除时,不必担心自己是第五层还是第六层问题。所以这也是为什么现代的网络都是通过 TCP/IP 协议来进行实现的。OSI 固然好,让每一层都那么的清晰明了。但是作为程序员的你一定清楚多一层就多一点复杂度。多了两层,肯定是有它的作用,当然相对应的也添加了“多余”。所以还是那句话 OSI 是标准,提到它就知道 7 层协议。它是那个标准,它是那个元老,但是随着网络的更新换代。很多东西可能已经不需要了。这一层基本就是介绍,当做一个历史来看就好了。不需要记住
现在我们来看一下应用层¶
我在这里问一个很经典的面试题,阿里有问过我这个面试题哦,当你在浏览器上输入
如果我们现在看一下去掉第五层和第六层的 OSI 模型,那么我们就有了物理层,即电缆。我们具有数据链路层,该层允许一个设备与下一个设备对话,而下一个设备与下一个设备对话。我们拥有网络层,它为我们提供了一种寻址方案和一种机制,可将流量从 Internet 的一路一直移动到 Internet 的另一端。我们有第四层,即传输层,它使我们可以进行呼叫建立。因此,如果我们知道目的地的 IP 地址,则可以使用传输层和 TCP 来表示,我想和你一起传输一些数据,对吗?然后,我们有了应用程序层,它实际上将负责将所需的应用程序从服务器一直移动到客户端。
我们到这里就已经把 OSI 的 7 层模型都大致的讲解完了,希望你看完之后,对 OSI 的 7 层模型,有了一个全新的认识。当然其中还有很多没有细讲的东西,比如 IP,TCP,UDP。但是你已经比过去的你知道的要多得多了。我希望你对 OSI 模型已经有了一个大概的认识,知道了每一层的作用和一些有用的协议。当然你对具体的协议还没有理解的那么深刻。但是不用着急,我们后面会慢慢的讲解。但是在这之前,我们要回归一下最基本的东西也就是二进制,如果你很熟悉,完全可以跳过下一章(但是我相信你还是能从我讲的学到你不知道的知识)。即使不是很熟悉,你应该也多少有一些了解,希望你可以温故而知新。有一个新的认识。
最后我们再来看一下在应用层都有什么协议。FTP,WWW,Telnet,NFS,SMTP,Gateway,SNMP,HTTP 。还是和之前一样,我们试着来匹配一下,做一下月老,看看你应该怎么连线。先来看一下 FTP 全称是 File Transfer Protocol。文件传输协议是一种标准的网络协议,用于在计算机网络上的客户端和服务器之间传输计算机文件。 FTP 建立在客户端-服务器模型体系结构上,在客户端和服务器之间使用单独的控制和数据连接。因为 FTP 是文件传输协议,是对话协议,不属于基础层,所以它就被定义在上层了,也就是应用层了对不对。还有我们后面讲的重中之重 HTTP(Hypertext Transfer Protocol)- 超文本传输协议:它是用于分布式,协作的超媒体信息系统的应用程序层协议。从定义上已经知道了它是应用层的协议了。我就不一一的讲解了。感兴趣的你可以去查一下上面列的每一个协议。
