对于上一篇博文“计算机网络学习的一点心得1”,我不知道有多少是对了,又错了多少,也许整篇博文,除了OSI的各层名称写对了外,其余的便全是错的。
经过一段时间的项目中的对HTTP协议的使用,让我对网络协议的分层有了一点点的感觉和理解 —— 在网络传输中,除了应用层的协议的数据格式有差别,应用层以下都是相同的 —— 我现在对网络分层为什么要这样设计有了一小点的理解——那就是便于应用层各协议的设计和实现,同时便于应用层以下的整体网络数据的传输。
下面让我们先看一下网络分层模型:
图1 - OSI七层模型及各层功能
再看一下OSI七层协议与TCP/IP五层协议的对应:
图2 - OSI七层模型与TCP/IP五层模型的对照
下面再来看下在整个网络连接中,各层的典型工作设备(终端设备除外,因为终端设备具备网络模型中的所有功能):
图3 - 各层的典型设备
接下来,看下各层都是有哪些常用协议在工作:
图4 - 各层常用协议
注:以上四张图均出自 —— OSI七层模型与TCP/IP五层模型
- 下面以HTTP协议的使用为例来解释上面我所说的对网络传输的理解:
我们先看下HTTP的请求报文和响应报文的格式的图解——
图5 - HTTP请求报文格式
图6 - HTTP响应报文格式
注:图5和图6出自“HTTP协议漫谈 - HTTP协议历史和报文结构”
下面让我们再来看下另一位博主对HTTP的理解:
图7 - HTTP请求报文格式
图8 - HTTP响应报文格式
注:图7和图8出自“Http协议报文格式”
我也很喜欢另一篇博客上对HTTP的图解,下面贴图看下此博主对HTTP报文的图解:
图9 - HTTP请求报文格式
图10 - HTTP响应报文格式
注:图9和图10出自“HTTP请求/响应报文结构”
下面,我们来看一下在应用层应用的另一个比较多的协议 —— 简单邮件传输协议(SMTP)的格式:
此图出自:SMTP协议介绍 ,在此篇博文中,有对SMTP比较容易理解的介绍,用以作参考。
通过这两个协议的展示,我们应该能知道,应用层的协议都会有自己的数据传输格式。
当要传输的数据,在应用层按自己所用的协议封装好了数据包之后,然后把数据传输到应用层以下后,不管所传来的数据格式是什么样的,都会按照现在所使用的网络协议,把应用层所传来的数据封装成统一的数据包在网络中传输,这样传输层及以下的层自然而然的就屏蔽了应用层的数据格式的差异性,以便让应用层有更多样的应用出现和使用。
还有,很多书上都说网络协议屏蔽了网络设备上的物理差异。然而,我理解的是,网络协议的应用层以下的协议屏蔽了应用层协议的差异,而网络上的不同设备更像是网络上相应协议层功能需求的实现。不知这样理解是否会有偏颇,望有读者能指正一二。