# OSI七层模型
> 七层模型,也称之为OSI(Open Systenm Interconnection)。是参考国际标准化组织(ISO)制定的一个用于计算机或通信系统间互联的标准体系,一般称为OSI参考模型或七层模型。
![](https://img.kancloud.cn/48/40/4840f9ef1af9fff7ee2645b685581170_986x574.png)
## 物理层
OSI模型第一层,是数据最终的传输通道,是最靠近物理传输设备的一层。主要是用来实现相邻计算机间的比特流传输,并尽可能的屏蔽具体传输介质和物理设备间的差异。
* 主要功能:屏蔽物理媒介差异,为数据链路层提供统一的比特流传输能力。简单点来说,**就是利用物理媒介以比特的形式传输数据**。
* 数据单元:比特
* 媒介/设备:光纤、网线、集线器、中继器、调制解调器等
> 举个例子:早期的电话机之间可以通话,是因为什么?可以简单的理解为,是因为中间有根电话线。物理层也可以简单的这么理解。
## 数据链路层
该层主要负责建立和管理不同计算机节点间的数据链路,并提供差错检测、封装成帧、透明传输的能力。简单点来说,**就是将网络层交下来的IP数据报组装成帧,并在两个相邻节点的链路上传送**。
* 主要功能:将不可靠的物理信道变成无差错的、能可靠传输数据帧的数据链路。即:数据的差错校验、封装成帧、透明传输
* 数据单元:帧
* 实例:网卡、MAC地址、交换机、以太网
> 数据链路层又可以分为2层:媒体访问控制子层(MAC)和逻辑链路控制子层(LLC)
1. 媒体访问控制子层(MAC)
每台计算机都有自己的全网唯一的MAC地址;主要任务是解决共享型网络中多用户对信道竞争的问题,完成网络介质的访问控制。
![](https://img.kancloud.cn/0b/17/0b17cf477e4b7bac509cc67ee880a364_1312x292.jpg)
2. 逻辑链路控制子层(LLC)
主要是建立和维护网络连接和链路控制。
## 网络层
该层通过IP将大大小小的局域网组成一个互联互通的互联网。主要任务是为2台通信的计算机之间选择合适的路由和交换节点,确保数据及时传送。简单点说,**把传输层提供的报文段或用户数据报封装成包进行传送**
* 主要功能:通过IP地址,实现网络寻址;即IP寻址,通过路由算法进行最优的网络路由
* 数据单元:数据包
* 实例:IP协议
## 传输层
该层负责建立主机端到端的连接。上述三层实现了互联网,也就是主机间的通信,但是一台主机上往往有很多应用程序,端口就是用来区分不同应用程序的。主要是用来**为上层协议提供可靠的透明的端到端的数据传输协服务,包括差错控制和流量控制**。常见的TCP/IP协议,TCP就作用在这一层。
* 主要功能:为上层协议提供可靠的透明的端到端的服务,并提供差错控制和流量控制功能
* 数据单元:packets。在TCP协议下是段,在UDP协议下是数据报
* 实例:TCP协议、UDP协议
> 一个简单的例子:QQ能够给微信发送消息吗?答案显然是不能的,因为这两个应用程序的端口号不一样,这就是传输层的作用。
## 会话层
该层负责建立、管理和终止表示层实体之间的通话信息。一个通俗的理解,常说的session+cookie机制就是作用在会话层。
## 表示层
该层主要是用来数据格式的编码和转换。HTTP请求头/响应头 `Content-Type:application/json; charset=utf-8` 。这就是规定双方协商的数据格式: `application/json`; 和编码格式: `charset=utf-8`;
## 应用层
这一层就是将通信模型定制化成一个协议,比如适合于超文本传输的协议HTTP,具备安全性传输的HTTPS,还有一些比如FTP,POP3,SMTP等。这一层可以这样理解,将下面几层根据场景具象,形成的一个提供给上层开发者应用的协议层。
## 数据封装过程
![](https://img.kancloud.cn/16/ce/16ce482aac4f2a2c8d96529782bc8ca8_803x330.png)
# TCP/IP 协议
OSI参考模型既不是标准也不是协议,而是一个制定标准时所使用的概念框架。TCP/IP 协议才是OSI参考模型的实现,所以说TCP/IP才是协议。
TCP/IP协议分为四层:应用层(应用层、表示层、会话层)、传输层、网络层、网络接口层(数据链路层、物理层)
> TCP/IP协议就是单纯的TCP + IP 协议吗?并不是的,它表示一个协议族,其中包含常见的http,https,ftp,udp等等。
<table>
<tr>
<th>OSI七层模型</th>
<th>TCP/IP概念层模型</th>
<th>功能</th>
<th>TCP/IP协议簇</th>
</tr>
<tr>
<td>应用层</td>
<td rowspan="3">应用层</td>
<td>文件传输、文件服务、电子邮件、虚拟终端</td>
<td>HTTP、SMTP、FTP、Telnet</td>
</tr>
<tr>
<td>表示层</td>
<td>数据格式化、编码、加密</td>
<td>没有协议</td>
</tr>
<tr>
<td>会话层</td>
<td>建立和终止与别的点之间的联系</td>
<td>没有协议</td>
</tr>
<tr>
<td>传输层</td>
<td>传输层</td>
<td>提供端到端可靠传输</td>
<td>TCP、UDP</td>
</tr>
<tr>
<td>网络层</td>
<td>网络层</td>
<td>为数据包选择合适的路由</td>
<td>IP、RIP、ICMP等</td>
</tr>
<tr>
<td>数据链路层</td>
<td rowspan="2">网络接口层</td>
<td>将数据组装成帧传输以及差错校验</td>
<td>PPP、ARP、RARP等</td>
</tr>
<tr>
<td>物理层</td>
<td>在物理媒介上以比特流的形式传输数据</td>
<td>IEEE802.12等</td>
</tr>
</table>