OSI 模型背景
OSI 的全称是“开放式系统互联模型(Open Systems Interconnection model)”,是一个由国际标准化组织(ISO)制定的计算机网络体系结构标准。在早期计算机网络快速发展的时代,由于缺乏统一的标准和协议,不同的厂商和组织之间往往无法互相通信和交流。为了解决这个问题,国际标准化组织倡导建立一个通用的参考模型,以便不同的计算机系统和网络设备能够相互兼容和交互。该标准定义了计算机网络中不同层次之间的相互作用和接口规范,提供了一种通用的框架,用于描述网络协议和服务的功能和交互方式。
OSI 七层结构
OSI 模型分为七个层次:
- 物理层:定义数据如何在物理介质(如光纤、双绞线等)上传输。
- 数据链路层:负责在物理层之上建立数据链路,向网络层提供可靠的数据传输服务。
- 网络层:负责将数据包从源地址传输到目标地址,还可以处理拥塞控制、路由和分组传输。
- 传输层:负责确保数据的可靠传输,包括错误检测和重传机制。
- 会话层:确保不同设备之间的通信能够顺畅地进行,并且能够有效地处理任何异常情况。
- 表示层:确保通过网络传输的数据可以被正确地解释和处理,以实现数据的可靠传输和正确显示。
- 应用层:为用户提供应用程序,例如电子邮件、文件传输协议(FTP)和远程终端访问(Telnet)。
物理层
物理层主要负责将比特流从一个节点传输到另一个节点,并确保数据在物理媒介上的传输。 主要涉及到的是硬件层面的细节和参数,如电压、电流、信号速率等。 它的主要功能包括:
- 传输介质:物理层定义了传输介质的类型、连接方法以及使用的电气、光学或无线技术等。这些传输介质包括电缆、光纤、无线电波等。
- 数据编码:物理层将逻辑比特转换为物理信号,以便在传输介质上传输。这通常涉及到各种数据编码技术,如非归零编码、曼彻斯特编码等。
- 传输速率:物理层定义了数据在物理信道上的传输速率,通常用比特/秒来表示。
- 时序控制:物理层负责控制数据发送和接收的时序,以确保数据帧可以正确地同步并按照正确的顺序传输。
- 硬件接口:物理层定义了计算机系统和传输媒介之间的接口标准,以确保它们互相兼容。
- 物理拓扑:物理层定义了计算机网络的物理拓扑结构,如总线型、环型、星型等。
数据链路层
数据链路层建立了可靠的数据传输通道,以便网络上不同节点进行通信。该层的主要任务是将网络层提供的数据包转换成适合在物理介质上传输的数据帧,每个数据帧都包含元数据,如源地址、目标地址、长度和校验和等信息。 数据链路层有多种协议,其中点对点协议(PPP)、高级数据链路控制协议(HDLC)和以太网协议是最常用的协议。以太网协议应用最为广泛,它支持多种不同的物理介质,如双绞线、光纤、无线电波等。
网络层
网络层负责将数据包从源地址传输到目标地址,并处理路由、拥塞控制和分组传输等问题。网络层是整个网络协议栈中最为重要的一层,因为它使得不同计算机上的应用程序能够相互通信。 当数据从源节点进入网络层时,网络层会对数据进行封装,添加上一些头部信息,例如目标地址、源地址、协议类型等等。然后,网络层会根据目标地址查找路由表,确定数据包下一步的转发路径,并将数据包发送到合适的下一个节点。 网络层的主要协议是 Internet Protocol(IP),IP 协议使用 IP 地址来标识网络中的主机,并使用路由表来决定如何传输数据包。此外,网络层还有一些其他协议,例如 ICMP 和 ARP 等。 网络层的另一个重要功能是拥塞控制。如果某个链路的带宽被超载,那么就可能导致拥塞,使得网络的性能降低。因此,网络层需要监测网络的状态,并采取一些措施来减轻拥塞,例如丢弃一些数据包、减少传输速度等。
传输层
传输层主要负责在不同的主机之间提供端到端的通信服务。传输层使用各种协议来确保数据的可靠传输,并为不同的应用程序提供不同的服务质量和优先级。 传输层使用的协议包括 TCP(传输控制协议)和 UDP(用户数据报协议)。TCP 提供了可靠的、面向连接的数据传输,它通过确认机制和重传机制保证数据的可靠性。UDP 则是一种无连接的协议,它不提供确认和重传机制,但其简单的设计使得数据传输速度更快。 它的主要功能包括:
- 可靠性:传输层使用一系列技术来确保数据的可靠传输,如确认、重传、流量控制、错误检测和纠正等。
- 分段和重组:传输层可以将数据分成更小的数据段来加速传输,并在接收端将这些数据段重新组装成完整的数据。
- 连接控制:传输层提供连接控制服务,以确保数据被正确地传输。这包括建立连接、维护连接状态、释放连接等操作。
- 流量控制:传输层还可以控制数据发送的速率,以防止数据过载或丢失。
- 差错控制:传输层使用各种方法来检测和纠正传输过程中出现的错误,如校验和、序列号和确认信息等。
- 多路复用和多路分解:传输层可以使用多路复用和多路分解技术,在一个网络连接上同时处理多个应用程序之间的数据传输。
会话层
会话层主要负责管理不同设备之间的会话,并确保连接的建立、维护和终止。 它的主要功能包括:
- 会话管理:会话层负责建立、维护和终止两个设备之间的会话。它可以在设备之间创建多个会话,并按照需要关闭某些会话。此外,会话层可以检测和处理任何异常情况,如超时、连接丢失等。
- 同步:会话层通过同步机制来确保不同设备之间的通信顺序正确。这意味着,如果一个设备发送了多个消息,会话层会确保这些消息按照正确的顺序被接收方接收到。
- 标记:会话层还可以在数据流中插入标记,以便接收方知道何时需要进行特定操作。例如,在一个长时间运行的事务中,会话层可以插入标记,以指示接收方何时应该提交或回滚事务。
表示层
表示层主要负责将数据转换为适合表示或显示的格式,并且向用户提供友好的界面。 它的主要功能包括:
- 数据格式化:将数据从应用程序格式转换为通用格式,以便在不同系统之间进行交换。
- 数据加密和解密:对敏感信息进行加密以确保安全传输,同时在接收端进行解密以恢复原始数据。
- 压缩和解压缩:将数据压缩以减少传输时间和带宽消耗,并在接收端进行解压缩以还原原始数据。
- 字符编码和解码:将字符转换为可在网络上传输的二进制格式,在接收端进行解码以恢复原始字符。
- 图像、声音和视频编码和解码:将图像、声音和视频转换为可传输的数字格式,并在接收端进行解码以还原原始内容。
- 数据描述和标记:使用标记语言(如 HTML,XML)将数据描述为结构化文档。
应用层
应用层负责为用户提供各种服务和应用程序,如 Web 浏览器、电子邮件客户端等。 常见的应用层协议:
- HTTP:超文本传输协议是 Web 应用程序中最常用的协议之一。它定义了 Web 客户端和服务器之间的通信规范,使得用户可以通过 Web 浏览器请求和访问互联网上的各种资源。
- FTP:文件传输协议允许用户在不同的计算机之间共享文件。FTP 客户端可以通过该协议连接到远程 FTP 服务器,并上传或下载文件。
- SMTP:简单邮件传输协议是电子邮件系统中用来发送邮件的常用协议。SMTP 客户端将邮件发送到邮件服务器,然后由服务器将邮件传递给接收方。
- POP3:邮局协议版本 3 用于从邮件服务器上下载电子邮件。POP3 客户端会连接到邮件服务器,并下载最新的邮件到本地计算机上。
- SSH:安全外壳协议用于在计算机之间建立加密连接。SSH 客户端可以通过该协议连接到远程计算机,并执行命令或传输文件,而无需担心安全问题。
OSI 七层模型数据传输流向
数据发送方
- 第 7 层:应用层,应用程序产生数据
- 第 6 层:表示层,将数据进行加密、压缩等处理
- 第 5 层:会话层,建立、维护和终止会话
- 第 4 层:传输层,将数据分段并添加源端口号和目标端口号
- 第 3 层:网络层,将数据打包成分组或报文并添加源 IP 地址和目标 IP 地址
- 第 2 层:数据链路层,将数据分割为帧并添加源 MAC 地址和目标 MAC 地址
- 第 1 层:物理层,将帧转换为电信号并通过物理介质发送出去
数据接收方
- 第 1 层:物理层,接收到电信号并将其转换为帧
- 第 2 层:数据链路层,将帧还原为数据,并检查是否有误差,如果有则进行纠错
- 第 3 层:网络层,将数据包从源 IP 地址解封,并根据目标 IP 地址进行路由选择
- 第 4 层:传输层,将数据段重组为完整的数据,并去掉源端口号和目标端口号
- 第 5 层:会话层,恢复会话并处理会话异常
- 第 6 层:表示层,对数据进行解密、解压等处理
- 第 7 层:应用层,将数据呈现给应用程序使用
TCP/IP 四层结构
为了更符合实际应用中的需求,互联网工程任务组(IETF)制定了 TCP/IP 四层模型。 TCP/IP 四层模型中的物理层对应 OSI 七层模型中的物理层和数据链路层,主要负责数据的传输和处理;网络层对应 OSI 七层模型中的网络层,主要负责数据的路由和转发;传输层对应 OSI 七层模型中的传输层,主要负责数据的可靠传输和流量控制;应用层对应 OSI 七层模型中的会话层、表示层和应用层,主要负责应用程序之间的通信。 具体来说:
- 应用层:应用层负责为用户提供各种应用服务,如文件传输协议(FTP)、网络新闻传输协议(NNTP)、域名系统(DNS)等。
- 传输层:传输层提供两种协议:传输控制协议(TCP)和用户数据报协议(UDP)。TCP 提供可靠的、面向连接的服务,而 UDP 则提供不可靠但效率高的服务。
- 网络层:网络层使用 Internet 协议(IP)来定义数据包如何从源主机传输到目标主机,并负责路由和转发等任务。
- 物理层:物理层定义了数据在物理媒介上传输的细节和参数,如电缆类型、数据速率、编码等。 OSI 参考模型和 TCP/IP 参考模型都是描述计算机网络的分层体系结构,但它们有一些区别和联系。
- 层数不同:OSI 模型共有七层,而 TCP/IP 参考模型只有四层。TCP/IP 参考模型将 OSI 模型的物理层和数据链路层合并为一个物理层,同时将 OSI 模型的会话层和表示层合并为应用层之下的部分服务和协议实现。
- 设计目的不同:OSI 模型最初是作为一个通用的参考模型来设计网络协议的,而 TCP/IP 参考模型则是基于早期 ARPANET 网络的实际需求来设计的。
- 粒度不同:OSI 模型定义了更多的层次,每个层次都有明确的功能和服务,而 TCP/IP 参考模型则在更高层次上定义了较少的服务和协议,同时许多 TCP/IP 协议也涵盖了 OSI 模型中多个层次的功能。
- 实现方式不同:虽然 OSI 模型和 TCP/IP 参考模型都是分层的设计,但具体的协议实现方式可能会因为不同的厂商、开发者或者应用场景而有所不同。
- 关联性:两种模型是相互关联的,OSI 模型在 TCP/IP 参考模型设计中起到了重要的参考作用,并且 OSI 模型在学术研究和标准化方面也得到广泛应用。