OSI七层⽹络模型
⼀、OSI七层⽹络模型简介
1、OSI的前世今⽣
OSI(Open System Interconnect),即开放式系统互联。是OSI组织为了互联⽹各层之间协作⽽制定的标准模型。再具体点来说是为了使互联⽹各个基础组件⼚商统⼀标准⽽制定的标准,这样就能实现互联了。
2、OSI七层模型的划分
OSI划分为:物理层、数据链路层、⽹络层、传输层、会话层、表⽰层、应⽤层
3、OSI的分层设计思想
OSI严格遵守了“⾼内聚、低耦合”的互联⽹设计思想,在OSI七层模型中每层只关注本层的实现,向上只提供标准接⼝,它不需要其它层的实现,各司其职。
⼆、各司其职
⼀张图先了解各层间的基本功能
物理层
OSI模型的第⼀层,最终数据的传输通道。物理层顾名思义就是最靠近物理传输设备的⼀层。物理媒介包括光纤,⽹线,等。改成的主要作⽤是实现相邻计算机间的⽐特流传输,尽可能屏蔽掉具体传输介质和物理设备的差异。尽量对上
层也就是数据链路层屏蔽掉其不需要考虑的物理介质差异,对其提供统⼀的⽐特流传输调⽤⽅式。
物理层的主要功能:屏蔽物理媒介差异,为数据链路层提供统⼀的物理⽐特流传输能⼒。
数据单元:⽐特
osi参考模型一共有几层
实例:光纤、⽹线、集线器、中继器、调制解调器等。
举个例⼦,早前的电话机,你在北京,你⼥朋友在上海,你俩打个电话就能通话了。为什么?因为中间有根电话线。物理层你就可以这么简单的理解和记忆。
数据链路
该层主要负责建⽴和管理不同计算机节点间的数据链路,并提供差错检测、封装成帧、透明传输的能⼒。数据链路层⼜分为两个层:媒体访问控制⼦层(MAC)和逻辑链路控制⼦层(LLC)
媒体访问控制⼦层(MAC)
MAC地址你⼀定不会陌⽣。每台计算机都有⾃⼰的全⽹唯⼀的MAC地址,如下图你也可以看看⾃⼰的MAC地址。MAC⼦层的主要任务是解决共享型⽹络中多⽤户对信道竞争的问题,完成⽹络介质的访问控制。实现这个功能的是集线
器。⽤集线器组⽹,检查计算机与计算机之间有没有冲突,避免冲突的协议叫CSMA/CD协议。
逻辑链路控制⼦层(LLC)
主要任务是建⽴和维护⽹络连接和链路控制。
数据链路层的主要功能:将不可靠的物理信道变成⽆差错的、能可靠传输数据帧的数据链路,即:数据的差错检验、封装成帧、透明传输。
数据单元:帧
实例:⽹卡、MAC地址、以太⽹、交换机
MAC地址:(英语:Media Access Control Address),直译为媒体存取控制位址,也称为局域⽹地址(LAN Address),MAC位址,以太⽹地址(Ethernet Address)或物理地址(Physical Address),
它是⼀个⽤来确认⽹络设备位置的位址。在OSI模型中,第三层⽹络层负责IP地址,第⼆层数据链路层则负责MAC位址。MAC地址⽤于在⽹络中唯⼀标⽰⼀个⽹卡,⼀台设备若有⼀或多个⽹卡,则每个⽹卡都需要并会
有⼀个唯⼀的MAC地址。(摘⾃百度百科)解释的很详细了。
⼤⽩话解释⼀遍。⽹卡⼚商将MAC地址烧录在计算机BISO中,MAC地址能保证⼀台计算机是世界范围内的唯⼀性,就像你的⾝份证。嗯?不是⼀个IP代表⼀台计算机吗?有这个疑问接着往下看
MAC地址的作⽤:
如今⽐较流⾏的组⽹⽅式是⼀个逻辑整体(公司,学校等)或者⼀个区域组⼀个局域⽹,再通过交换机接⼊Internet。因为在局域⽹中IP只是逻辑上的划分,不信你可以在你所在的公司或者学校修改⼀下⾃⼰的IP
(最好是最后⼀段),依然能够连上⽹络。这样的话,每个⼈都可以随意修改IP,IP != ⽤户。所以MAC地址这个时候就有⽤了,只有MAC地址才能表⽰⽤户。交换机中保存了 MAC <-> IP 的映射关系。局域⽹访问互联⽹的唯⼀通道就是交换机。
记住上⾯⼀段。关于⽹络寻址这这是很基础的⼀步。
⽹络层
顾名思义就是实现⽹络互联的关键所在。该层通过IP将⼤⼤⼩⼩的局域⽹形成⼀个互联互通的互联⽹。
在计算机⽹络中进⾏通信的两个计算机之间会经过很多个数据链路,也可能还要经过很多通信⼦⽹。⽹络层的任务就是为两台通信的计算机之间选择合适的路由和交换节点,确保数据及时传送。⽹络层将数据链路层提供的数据帧组成数据包,包中有⽹络层包头,也就是IP相关信息,以便路由。
⽹络层的主要功能:通过IP地址,实现⽹络寻址,即IP寻址,通过路由算法进⾏最优的⽹络路由。
数据单元:数据包
⽹络路由听起来有些抽象,个⼈认为该层最重要的能⼒是IP寻址,也就是在互联⽹中,通信的两台机器要互相到对⽅。⽹络路由也就是路由算法,其作⽤就是在上⾯的寻址过程中,选择⼀条最优路线。
传输层
如第⼀章节:建⽴主机端到端的连接。重点在哪?“端”,怎么理解呢?如果你是⼀个程序员相信你⼀定知道端⼝这个东西,没错上述三层实现了互联⽹,也就是实现了两台机器间的互联互通。但是⼀台计算机上往往有好多应⽤程序,端⼝是⽤来区分不同应⽤程序的⽅式,每个应⽤程序都有各⾃的端⼝。很简单的⼀个道理,QQ⽤户能给⽤户发送即时消息吗?不能,为什么?这就是传输层的作⽤。传输层的作⽤是为上层协议提供端到端的可靠和透明的数据传输服务。包括处理差错控制和流量控制等。该层向上层应⽤屏蔽了底层通信细节。上层应⽤只需要按照传输层的规范,向传输层提交数据传输任务,其余的事情不需要上层应⽤关系。我们常见的TCP/IP协议中的TCP就作⽤在这⼀层。
传输层的主要功能:传输层的作⽤是为上层协议提供端到端的可靠和透明的数据传输服务,并提供差错控制和流量控制等功能。
以下⼏层不是很重要因为你应该知道TCP/IP协议。后续会详细介绍。
数据单元:称作数据包(packets)。但是,当你谈论TCP等具体的协议时⼜有特殊的叫法,TCP的数据单元称为段(segments)⽽UDP协议的数据单元称为“数据报(datagrams)”。
实例:TCP、UDP
会话层
会话层就是负责建⽴、管理和终⽌表⽰层实体之间的通信会话。该层的通信由不同设备中的应⽤程序之间的服务请求和响应组成。
会话层是什么?给你⼀个通俗易懂的答案:假如你了解session+cookie机制,相信你就明⽩了,这种session+cookie的机制就是会话层的实现。
表⽰层
如上所述,该层主要作⽤是数据格式的编码和转换。有点抽象?HTTP请求头/响应头 Content-Type:application/json; charset=utf-8 。这就是规定双⽅协商的数据格式: application/json; 和编码格式: charset=utf-8;
应⽤层
OSI应⽤层是最靠近上层开发者的⼀层,这⼀层就是将通信模型定制化成⼀个协议,⽐如适合于超⽂本传输的协议HTTP,具备安全性传输的HTTPS,还有⼀些⽐如FTP,POP3,SMTP等。
这⼀层可以这样理解,将下⾯⼏层根据场景具象,形成的⼀个提供给上层开发者应⽤的协议层。
三、数据封装与解封装
先看⼀下数据的传输过程
数据的流向是发送端A-->接收端B,然后途径两个过程
A:应⽤层 --> 物理层:数据封装过程
B:物理层 --> 应⽤层:数据解封装过程
接下来看数据的封装和解封装过程
3.1、数据封装过程
数据从应⽤层开始向下层流动,经过层层封装,最终在物理层转为字节流发送到接收⽅。
> 注意以下源 == 发送⽅,⽬标 == 接收⽅
经过传输层:加上TCP头,组成数据段,所谓的TCP头主要就是加上对源端⼝和⽬标端⼝的描述。
经过⽹络层:加上IP头,组成数据包,IP头其实就是源IP和⽬标IP。
经过数据链路层:加上MAC头,组成数据帧,MAC头其实就是源MAC和⽬标MAC。另外还有⼀个LLC头和⼀个FCS帧尾标识(⽤于差错检测)
经过物理层:将数据帧转为bit流,发送到接收⽅。
PS:以上过程你需要注意的是IP头,MAC头不是⽤于两台主机的,⽽是⽤于⽹络寻址的。下章节会介绍这个。真正需要计算机解析的是TCP头,
因为TCP头上是端⼝信息,简单的理解端⼝对应的是进程或者应⽤程序,接收端主机收到这些数据只需要将数据导向对应的应⽤程序即可。
⽽IP和MAC是⽹络寻址才会⽤到的部分。这也是OSI的设计思想,⾼内聚、低耦合,各层只需要专注各⾃的实现细节。
3.2、数据解封装过程
对应数据封装过程,解封装过程数据从物理层向上层流动,最终经过层层解封,到达对应的应⽤程序。
四、TCP/IP协议
⾸先给你解决⼀个疑问,OSI参考模型不是标准也不是协议,⽽是⼀个指定标准时所使⽤的概念框架。TCP/IP是OSI参考模型的实现。也就是说TCP/IP才是真正的实现。所以TCP/IP才是协议,⽽OSI只是参考模型。PS:当然也有⼀个组织根据OSI参考模型指定了OSI七层⽹络模型,但是OSI模型的专家缺乏实战经验,导致很难适⽤于实际使⽤场景。
TCP/IP协议是四层模型:应⽤层、传输层、⽹络层、⽹络接⼝层
如上图所⽰,OSI与TCP/IP协议在分层上稍有区别,OSI注重于各个层的功能划分,TCP/IP协议注重各层功能实现需要开发哪种程序。由此不难看出,OSI只是理论参考模型,⽽TCP/IP才是实战产物。
TCP/IP协议是单纯的TCP+IP的协议吗?不是的,TCP/IP协议是⼀个协议簇,如上图所⽰、其中包括常见的http、https、ftp、udp等等。
重点:我们需要知道的是OSI模型偏重于理论,TCP/IP偏重于实战。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。