之前本科的时候也了解过OSI七层模型和STP/IP模型,但是总是无法理解他们。这段时间有需要用到这两个概念的地方,所以再回头了解了一下这两个概念。在这篇博客中的很多地方是直接引用了其他的博客内容,如果这篇博客中还有哪里没有讲清楚的希望大家直接留言询问或去博客原文了解(原文的链接我在文章末尾已经列出)
之前也看过OSI七层模型,但是一直没有太明白七层模型的含义,直到我在一篇博客上看到了一段TCP/IP模型的比喻才恍然大悟:
比喻对象的对应关系:
主机:家庭
进程(程序): 孩子们
应用层报文:信件
传输层协议:小雪 and 小雨
网络层协议:邮政服务
链路层协议:邮政传输使用的工具(汽车or飞机)
比喻:
有两个家庭,一个位于北京,一个位于新疆,每个家庭有8个孩子,这两个家庭的孩子们是堂兄妹的关系。这两个家庭的孩子们喜欢彼此写信,每人每星期相互写一封信,每封信都用单独的信封通过传统的邮政服务传送,因此,每个家庭每星期要向另一个家庭发送64封信。每个家庭有个孩子负责信件的收集和邮递工作,北京的是小雪,新疆的是小雨。每个星期北京的小雪去他的所有的兄弟姐妹那里收集信件,并将这些邮件交到每天家门口来的邮政服务的邮车里。当信件到达新疆的家庭时,小雨负责将信件分发给它的兄弟姐妹手上。在新疆的小雨也负责类似的工作。
分析:
首先我们应该知道TCP/IP模型是什么,下面给出TCP/IP模型(这里给出的是TCP/IP四层模型和OSI七层模型的对应关系图)
孩子们写好了信件,就类比与进程(程序,应用层)产生了报文数据。写好了信件以后,孩子们就要等着小雪或小雨来收集信件,这就类比于传输层获取到应用层的报文信息,小雪或小雨将信件交给邮政服务,就类比于传输层将数据交给网络层,网络层的作用就是将报文进行传输。而传输的过程中会遇到很多中转站,网络层的底层作用就是如何选择下一个中转站和整个路线。而链路层,就是信件在每个中转站的过程中使用的是那种交通工具。
物理层负责的是0和1这样的透明的物理信号的传输。
理解上述TCP/IP模型后再来看OSI七层模型就不再那么晦涩难懂了:
应用层
是OSI参考模型的最高层,它是计算机用户,以及各种应用程序和网络之间的接口,其功能是直接向用户提供服务,完成用户希望在网络上完成的各种工作。它在其他6层工作的基础上,负责完成网络中应用程序与网络操作系统之间的联系,建立与结束使用者之间的联系,并完成网络用户提出的各种网络服务及应用所需的监督、管理和服务等各种协议。此外,该层还负责协调各个应用程序间的工作。
应用层为用户提供的服务和协议有:文件服务、目录服务、文件传输服务(FTP)、远程登录服务(Telnet)、电子邮件服务(E-mail)、打印服务、安全服务、网络管理服务、数据库服务等。上述的各种网络服务由该层的不同应用协议和程序完成,不同的网络操作系统之间在功能、界面、实现技术、对硬件的支持、安全可靠性以及具有的各种应用程序接口等各个方面的差异是很大的。应用层的主要功能如下:
用户接口:应用层是用户与网络,以及应用程序与网络间的直接接口,使得用户能够与网络进行交互式联系。
实现各种服务:该层具有的各种应用程序可以完成和实现用户请求的各种服务。
表示层
当A往QQ这个软件的聊天窗口里面输入信息,发出后,QQ会将这个信息保存在本地聊天记录文件MSGEX.db(一般就保存在QQ目录下以你的QQ号码为文件夹里)。以某种格式编码/保存某种信息,这可以理解为表示层了。其主要功能是“处理用户信息的表示问题,如编码、数据格式转换和加密解密”等
会话层
是OSI模型的第5层,是用户应用程序和网络之间的接口。当建立会话时,用户必须提供他们想要连接的远程地址。而这些地址是为用户专门设计的,更便于用户记忆。域名(DN)就是一种网络上使用的远程地址例如:www.3721.com就是一个域名。会话层的具体功能如下:
会话管理:允许用户在两个实体设备之间建立、维持和终止会话,并支持它们之间的数据交换。例如提供单方向会话或双向同时会话,并管理会话中的发送顺序,以及会话所占用时间的长短。
寻址:使用远程地址建立会话连接。l
出错控制:从逻辑上讲会话层主要负责数据交换的建立、保持和终止,但实际的工作却是接收来自传输层的数据,并负责纠正错误。会话控制和远程过程调用均属于这一层的功能。但应注意,此层检查的错误不是通信介质的错误,而是磁盘空间、打印机缺纸等类型的高级错误。
传输层
会话建立后,会将A发的信息斩件(拆解),如A发送“你吃了饭没有”?传输层将这句话斩成“你”“吃”“了”“饭”“没”“有”6个数据段,标记号使用的端口号,然后准备发出去。
网络层
接上一层,信息还未发出去,这时候在网络层做路由选路,可以理解为,从A家出去,可以分别经“联通”“电信”“移动”3个网络中的一个再到B家。
网络层根据路由协议负责选路(根据链路质量、带宽、开销等方法论)。假设最后选了2条,可能就A->联通->B发送“你”“吃”“了”3个数据段,A->电信->B发送“饭”“没”“有”3个数据段。
选路后,这一层要标记IP包头,包头主要内容是源IP地址,目的IP地址,使用什么协议。其中源、目的IP相当于你寄信的时候的收发的地址与邮政编码,标记出发送者与接收者。
数据链路层
主要是负责同一个子网内的通信的。例如A、B连接在同一台二层交换机,就属于同一个子网,那么数据帧的通信室是不需要通过网络层的(即三层交换机或者路由器),直接在这台二层交换机就过去了。这一层打的是MAC地址的帧头,对于上述通信过程来说,就是为数据帧打上A的机器的MAC与A的网关的MAC。这一层的工作就完成了
物理层
最后一层了,经过上述斩件、打完各层标签后的6个数据帧,物理层将他们翻译文6段0、1表示的比特流,然后通过光纤、铜缆进行传输。
借鉴的博客:
9、如何理解应用层、传输层、网络层、链路层、物理层
OSI七层模型详解
如何生动形象、切中要点地讲解 OSI 七层模型和两主机传输过程?