OSI模型综述
翻译自Introductory Networking tips:需代理🌏
OSI(Open Systems Interconnection)模型是一个标准化的模型,我们用它来演示计算机网络背后的理论。在实践中,它实际上是更紧凑的TCP/IP
模型,以现实世界的网络为基础;然而,在许多方面,OSI模型更容易获得初步的理解。
OSI模型由七层组成:
┌────────────────┐
│ OSI │
├────────────────┤
│Application │
│----------------│
│Presentation │
│----------------│
│Session │
│----------------│
│Transport │
│----------------│
│Network │
│----------------│
│Data Link │
│----------------│
│Physical │
└────────────────┘
The OSI Model: An Overview
Layer 7 – Application:
OSI模型的应用层本质上为计算机上运行的程序提供了连接网络的选择。它几乎专门用于应用程序,为它们提供一个用于传输数据的接口。当数据被提供给应用层时,它被向下传递到表示层
。
Layer 6 – Presentation:
表示层接收来自应用程序层的数据。这些数据往往采用应用程序能够解析的格式,但这个格式并不一定是接收端计算机💻应用层所采用的格式。表示层将数据转换为标准化格式,并处理对数据的任何加密、压缩或其他转换。完成后,数据被传递到会话层
Layer 5 – Session:
当会话层从表示层接收到正确格式化的数据时,它会检查是否可以通过网络与另一台计算机(也就是接收端计算机💻)建立连接。
-
如果不能,则返回一个错误,进程不会继续。
-
如果会话可以建立,那么会话层的工作就是维护它,以及与远程计算机的会话层合作,以同步通信。
会话层特别重要,因为它创建的会话对于所讨论的通信是唯一的。这使得你可以同时向不同的端点发出多个请求,而不需要混合所有的数据(想象一下在web浏览器中同时打开两个标签)!
当会话层成功地记录了主机和远程计算机之间的连接时,数据被传递到第4层:传输层
。
Layer 4 – Transport:
传输层是一个非常有趣的层,它具有许多重要的功能。
它的第一个目的是选择要传输数据的协议。传输层中最常见的两个协议是TCP
(Transmission Control Protocol)和UDP
(User Datagram Protocol);
- 使用TCP传输是基于连接的,这意味着在请求期间计算机之间建立并保持连接。这确保了可靠的传输,因为可以使用连接来确保数据包都到达正确的位置。TCP连接允许两台计算机持续通信,以确保数据以可接受的速度发送,并且任何丢失的数据都被重新发送。
- 而UDP则相反;数据包基本上是被扔向接收端计算机💻的如果它不能跟上,那就是它的问题(这就是为什么视频传输像Skype,如果连接不好会花屏)。
这意味着通常在准确性优于速度的情况下选择TCP(如文件传输,或加载网页),而UDP将被用于速度更重要的情况下(如视频流)。
Layer 3 – Network:
网络层负责定位请求的目的地。例如,互联网是一个巨大的网络,当你想从某个网页中请求信息时,是网络层会获取页面的IP地址并找出最佳路径。这个阶段的寻址依然是逻辑
寻址(即IP地址),是由软件控制的。逻辑地址用于为网络提供秩序,对它们进行分类,并允许我们正确地对它们进行排序。目前最常见的逻辑寻址形式是IPV4格式,你可能已经很熟悉了(例如192.168.1.1是家庭路由器的常见地址)。
Layer 2 – Data Link:
数据链路层侧重于传输的物理
寻址。它从网络层(包括远程计算机的IP地址)接收一个包,并添加接收端点的物理(MAC)地址。在每台网络计算机内部都有一个网络接口卡(NIC),它带有一个唯一的MAC(媒体访问控制)地址来识别它。
MAC地址由制造商设置,并按字面意义刻入卡中;它们不能被改变——尽管它们可以被欺骗。当信息通过网络发送时,实际上是物理地址用来确定信息发送的确切位置。此外,数据链路层的工作还包括将数据封装成适合传输的格式。
数据链路层还有一个非常重要的功能就是他会检查接收的数据是否发生了损失,因为在物理层
经常发生数据的损失
Layer 1 – Physical:
物理层直接与计算机的硬件联系。由电脉冲组成的数据通过网络发送和接收。物理层负责将二进制数据转换成信号并将其通过网络发送,同时接收传入信号并将它们转换回二进制数据。
Encapsulation
当数据从模型的每一层向下传递时,更多包含特定于相关层的详细信息被添加到传输的开始部分。
例如:
- 网络层添加的报头将包括源IP地址和目的IP地址等内容
- 传输层添加的报头将包括指定使用何种协议的信息(当然不止这点信息)。
- 数据链路层还在传输的末端添加一块,用于验证数据在传输时没有被损坏;这增加了安全性,因为不可能出现数据被破坏和拦截而帧尾却不被破坏的场景。
整个过程称为 封装
;数据从一台计算机发送到另一台计算机之间发生。
注意,封装的数据在流程的不同步骤中被赋予了不同的名称。在第7、6和5层中,数据被简单地称为数据。在传输层,封装的数据被称为段或数据报(取决于是 TCP
还是 UDP
被选择作为传输协议)。在网络层,数据被称为数据包。当数据包被传递到数据链路层时,它就变成了一个帧,而当它在网络上传输时,这个帧已经被分解成比特。
当消息被接收端计算机💻接收到时,它会反转这个过程——从物理层开始,直到它到达应用层,在此过程中剥离添加的信息。这称为反封装。因此,你可以把OSI模型的层看作是存在于具有网络能力的每台计算机内部的。虽然这在实践中并不明确,但计算机都遵循同样的封装过程发送数据,并在接收数据时进行反封装。
封装和反封装过程非常重要——不仅仅是因为它们的实际用途,还因为它们为我们提供了一种发送数据的标准化方法。这意味着所有的传输将始终遵循相同的方法,允许任何启用网络的设备向任何其他可到达的设备发送请求,并确保它将被理解——无论它们是否来自同一制造商;使用相同的操作系统;或者其他因素。
The TCP/IP Model
TCP/IP
模型在很多方面与OSI模型非常相似。它比OSI
模型早几年提出并且做为现实网络的基础提供服务。TCP/IP
模型包括四层:应用程序层、传输层、因特网层和网络接口层。在它们之间,它们涵盖了与OSI
模型的七层相同的功能范围。
┌─────────────────────┐
│ TCP/IP │
│---------------------│
│Application │
│---------------------│
│Transport │
│---------------------│
│Internet │
│---------------------│
│Network Interface │
└─────────────────────┘
这两个模型是这样匹配的
┌──────────────────────────────────────┐
│ OSI │TCP/IP │
├────────────────┤─────────────────────│
│Application │ │
│----------------│ │
│Presentation │ Application │
│----------------│ │
│Session │ │
│----------------│---------------------│
│Transport │ Transport │
│--------------------------------------│
│Network │Internet │
│--------------------------------------│
│Data Link │ │
│----------------│Network Interface │
│Physical │ │
└──────────────────────────────────────┘
TCP/IP模型的封装和反封装过程与OSI模型的工作方式完全相同。TCP/IP模型的每一层都在封装期间添加了一个报头,在反封装期间删除了一个报头。
现在让我们来看看更实际点的吧。
一个分层模型从视觉上来说非常直观,它向我们展示了数据如何封装和通过网络发送的一般过程,但它实际上是如何发生的呢?
当我们讨论TCP/IP时,考虑一个包含四层的表是很好的,但实际上我们讨论的是一组协议——一组定义如何执行操作的规则。TCP/IP得名于其中最重要的两个协议:控制两个端点之间数据流的传输控制协议(Transmission Control Protocol),以及控制数据包如何寻址和发送的互联网协议(Internet Protocol)。接下来我们讨论 TCP
协议
如前所述,TCP是一种基于连接的协议。换句话说,在您通过TCP发送任何数据之前,您必须首先在两台计算机之间建立一个稳定的连接。形成这种联系的过程被称为三次握手。
当您试图建立连接时,您的计算机首先向远程服务器发送一个特殊请求,表明它想初始化连接。这个请求包含SYN( synchronise
的缩写)位,它实际上是在启动连接进程时进行第一次接触。然后,服务器将响应一个包含SYN位的包,以及另一个 acknowledgement
位,称为ACK。最后,您的计算机将发送一个包含ACK位的包,以确认连接已成功设置。三次握手成功完成后,数据可以在两台计算机之间可靠地传输。任何在传输中丢失或损坏的数据都会被重新发送,从而导致连接看起来是无损的。