一、什么是 OSI 七层模型?
OSI 模型用于定义并理解数据从一台计算机转移到另一台计算机,在最基本的形式中,两台计算机通过网线和连接器相互连接,在网卡的帮助下共享数据,形成一个网络,但是一台计算机基于微软的 Windows 系统而另一台计算机基于 Mac OS 系统,那么这两台计算机之间将如何相互通信?
为了完成不同计算机或网络或架构之间的成功通信,国际标准化组织提出了 OSI 七层模型,该模型(从上到下)包括了应用层、表示层、会话层、传输层、网络层、数据链路层、物理层。
每一层其实际上都是一个协议包,比如说当我们要提起应用层的时候,并不仅仅指计算机的应用程序(谷歌、火狐等 APP),还包含了大量的应用层协议,应用层协议能使应用层程序在网络中够正确的运行,接下来我们一起来看下 OSI 的七层模型。
二、图解 OSI 七层模型
1. 应用层(Application Layer)
应用层是由网络应用程序使用的,离用户最近的一层。应用层通过各种协议(FTP——文件传输协议;HTTP/S——网上冲浪协议;SMTP——邮件传输协议;Telnet——与虚拟端之间的通信协议),为网络应用提供服务(网络应用是指使用在互联网的计算机应用),执行用户活动。
2. 表示层(Presentation Layer)
表示层从应用层接受数据,这些数据是以字符和数字的形式出现的(如:Chinese、666),表示层将这些字符和数据,转换成机器能够理解的二进制格式(1001 0110),表示层的这个功能称为“翻译”功能,即把人类的语言翻译成机器能理解的语言。在传输数据之前,表示层减少了用来表示原始数据的比特数,也就是将原始数据进行了压缩,数据压缩减少了数据原始数据所需的空间,随着文件大小的减少,它就可以在很短的时间内到达目的地,数据压缩对实时视频和音频传输有很大的帮助,以保持完整性的数据传输前的数据加密。
与此同时,在发送端,数据会在表示层被加密,然后在接受端,数据再在表示层进行解密操作,保证数据传输的安全性。
3. 会话层(Session Layor)
在讲会话层之前,我们首先假设下,如果你计划办一个聚会,为确保每一个活动能顺利进行,则需要建立一个流程(装扮环境、烧菜、清洁、告别)。
会话层的情况也是如此,会话层用于建立和管理连接、启用、发送和连接数据,就像你为聚会雇用助手一样,会话层也有自己的助手,也就是各种 API 或应用程序接口,还有 NetBIOS,即网络基本输入输出系统,它允许不同计算机上的应用程序相互通信。
在客户端与服务器建立会话之前,服务器会执行一项为身份验证的功能,比如你在客户端计算机输入了用户名和密码之后(指向服务器应用程序对于的 API),客户端计算机和服务器之间将建立会话或链接。
通过身份验证后,服务器将检查用户授权身份验证和授权,授权是服务器来确定你是否有访问文件权限的过程,如果服务器确认你所登录的账号没有相应的权限,则客户端计算机就会收到一条消息,告诉你:您未被授权访问此页面。
身份验证和授权这两个功能都由会话层执行,会话层提供正在下载的文件的跟踪。举个例子,我们上网浏览的网页包含了文本、图片等信息,这些文本和图片作为单独的文件存储在 Web 服务器上,当你在 Web 浏览器中请求网站时,你的 Web 浏览器将建立一个到 Web 服务器的单独会话,以便分别下载这些文本和图像信息文件。这些文件以数据包的形式被接收,与此同时,会话层也给出了下载下来的那个数据包属于哪个文件的轨迹,以确定是文本文件还是图像文件,并追踪他们收到数据包的位置,最终将文本和图片展示在浏览器中,这个就是会话层的会话管理功能。到这里,我们也知道了,浏览器会执行应用层、表示层和会话层所有的功能。
总给一下,会话层有三个方面的功能:会话管理、会话管理和授权。
4. 传输层(Transport Layer)
在会话层之下是传输层。传输层通过分段(Segmentation)、流量控制(Flow Control)和差错控制(Error Control)来控制通信的可靠性。
(1)首先在分段中,传输层从会话层接收数据,并将数据分为称为“段”(Segment)的数据单元:
且每个数据单元(Data Unit)包含一个源端口号、目的端口号和序列号,
这些端口号有助于引导每一个网段执行正确的应用程序。
序列号有助于按照正确的顺序重新综合段,以便在接收者处形成正确的消息。
2)其次,在流量控制中,传输层可以控制传输的数据量。假如一个移动设备连接到一个服务器,若服务器的最大可以传输 100Mbps 的数据,而我们移动端设备最大可以处理 10Mbps 的数据,现在我们正在从服务器下载一个文件,但是服务器开始以 50Mbs 的速度发送数据,这比手机所能处理的速率要高,所以手机在传输层的帮助下,可以告诉服务器将数据传输速率降低到 10Mbps,这样就不会有数据丢失。
(3)最后一个是差错控制。传输层也可用于差错控制,在数据传输的过程中,如果某些数据出现丢失,目标传输层将使用自动重复请求方案,来重新传输丢失或损坏的数据,传输层向每个段添加一个称为“校验和”的位,以找出所接收到的传输层控制协议。
传输层控制协议有面向连接的传输和面向无连接的传输,面向连接的传输通过 TCP 来实现的面向无连接的传输是通过 UDP 来实现的。
UDP 比 TCP 更快,因为它不会提供任何关于数据是否真正交付的反馈,而 TCP 提供反馈,因此丢失的数据可以在 TCP 中重新传输。在是否接收到所有的数据并不重要的应用场景中,如流媒体电源、歌曲、游戏、IP 语音、TFTP、DNS 等可以使用 UDP 协议传输数据;而必须要进行完整的数据传输的场合,例如万维网、电子邮件、FTP 等,就需要使用 TCP 协议。
所以,总结一下,传输层涉及到分段(Segmentation)、流量控制(Flow Control)、差错控制(Error Control)、面向连接(TCP)和无连接(UDP)的传输。
5. 网络层(Network Layer)
传输层将数据传递到网络层,网络层用于将接收到的数据段从一台计算机传输到不同网络中的另一台计算机,网络层的数据单元称为数据包(Packets),网络层的功能是进行逻辑寻址(Logical Addressing)、路由(Rout)和路径确定(Path Determination)。
(1)首先是逻辑寻址(Logical Addressing)。在网络层进行的 IP 寻址称为逻辑寻址,网络中每一台计算机都有一个唯一的 IP 地址,网络层为每一个分段(Segment)都会被分配发送方和接收方的 IP 地址,并形成一个 IP 数据包,分配 IP 地址是为了确保每一个数据包到达正确的目的地。
(2)路由(Rout)。路由是一种将数据包从源端移动到目的端的方法,该方法建立在 IPV4 & IPV6 基础之上。
现假如计算机 A 与网络 1 相连,计算机 B 与网络 2 相连,我们从 B 电脑请求访问 Facebook 网站,现在有了来自计算机 B 中 Facebook 服务器的回复,这些回复将以数据包的形式出现,而这个数据包只传送到计算机 B,由于网络中每个设备都有一个唯一的 IP 地址,所以计算机 A 和计算机 B 都也有一个唯一的 IP 地址,而 Facebook 服务器给计算机 B 的回复已经在数据包中,且在数据包中已经添加了发送方的 IP 地址:192.168.3.1 和接收方的 IP 地址 192.168.2.1,假设子网掩码使用 255.255.255.0,这个掩码表示 IP 地址的前三组数字代表网络,即计算机 B 所在的网段(Network 2)就是 192.168.2,而 IP 地址的最后一个数就是计算机的编号,这样我们就可以采用 IP 地址和掩码的方式在网络层进程数据的传输。
(3)接下来就是路径选择(Path Determination)的问题,计算机可以通过多种方式连接到 Internet 服务器,从源到目标的数据传递的最佳可能路径称为“路径选择”,关于路径选择的协议有 OSPF、边界网关协议(BGP)、中间系统到中间系统协议(IS-IS),以确定数据传递的最佳可能路径。
6. 数据链路层(Data Link Layer)。
数据链路层从网络层接收数据包,数据包包含了发送方和接受方的 IP 地址。有两种寻址方式:逻辑寻址和物理寻址。逻辑寻址在网络层已经完成,即在数据段(Segment)中添加了发送方和接收方的 IP 地址,以形成 IP 数据包。而物理寻址就是在数据链路层中完成的,其方法就是在 IP 数据包中添加发送方计算机和接收方计算机的物理地址:MAC,从而形成一个数据帧。MAC 地址是由计算机制造商嵌入到计算机的,也是唯一的,我们的手机也有一个唯一的 MAC 地址。
数据链路层中的数据单元称为“帧”数据,链路层作为计算机的软件网络接口卡嵌入,网卡提供经由本地介质将数据从一台计算机传送到另一台计算机的装置,本地介质包括铜线、光纤或无线电信号。
所以,数据链路层执行两个基本功能:1.允许上层使用“帧封装”之类的各种技术访问介质;2.控制如何放置和接收来自介质的数据,并进行错误检测。
有时候可能会有多个设备连接到公共介质,如果两个或多个设备连接到同一个介质,并同时发送数据,那么这些消息可能会发生冲突,从而形成一个收件人无法理解的信息,为了避免这些情况,数据链路层会密切关注,并监视什么时候共享的媒介是空闲的,这样设备就可以为接收端传递正确的数据,这就是所谓的 CSMA(载波监听多路访问)技术。
7. 物理层(Physical Layer)
到现在为止,应用的“行为动作”已经通过传输层进行了分割,变成网络层的数据包和数据链路层的数据“帧”,现在是一种二进制序列了,最后在物理层将这些二进制序列转换成信号并在本地介质(铜缆、光纤、无线信号等)上传输,并在目标计算机应用层上显示数据。
三、结束语
由于我后面要做西门子 S7-1200PLC 的以太网通信和串口通信方面的教学视频,为了让大家更好的了解数据在计算机网络中是怎么传输的,特意利用周末的时间整理了下计算机网络中的 OSI 七层模型相关知识,希望对大家有所帮助。
原文始发于微信公众号(有追求的开发者):图解OSI七层结构模型
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/257072.html