# OSI七層模型
> 七層模型,也稱之為OSI(Open Systenm Interconnection)。是參考國際標準化組織(ISO)制定的一個用于計算機或通信系統間互聯的標準體系,一般稱為OSI參考模型或七層模型。

## 物理層
OSI模型第一層,是數據最終的傳輸通道,是最靠近物理傳輸設備的一層。主要是用來實現相鄰計算機間的比特流傳輸,并盡可能的屏蔽具體傳輸介質和物理設備間的差異。
* 主要功能:屏蔽物理媒介差異,為數據鏈路層提供統一的比特流傳輸能力。簡單點來說,**就是利用物理媒介以比特的形式傳輸數據**。
* 數據單元:比特
* 媒介/設備:光纖、網線、集線器、中繼器、調制解調器等
> 舉個例子:早期的電話機之間可以通話,是因為什么?可以簡單的理解為,是因為中間有根電話線。物理層也可以簡單的這么理解。
## 數據鏈路層
該層主要負責建立和管理不同計算機節點間的數據鏈路,并提供差錯檢測、封裝成幀、透明傳輸的能力。簡單點來說,**就是將網絡層交下來的IP數據報組裝成幀,并在兩個相鄰節點的鏈路上傳送**。
* 主要功能:將不可靠的物理信道變成無差錯的、能可靠傳輸數據幀的數據鏈路。即:數據的差錯校驗、封裝成幀、透明傳輸
* 數據單元:幀
* 實例:網卡、MAC地址、交換機、以太網
> 數據鏈路層又可以分為2層:媒體訪問控制子層(MAC)和邏輯鏈路控制子層(LLC)
1. 媒體訪問控制子層(MAC)
每臺計算機都有自己的全網唯一的MAC地址;主要任務是解決共享型網絡中多用戶對信道競爭的問題,完成網絡介質的訪問控制。

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等。這一層可以這樣理解,將下面幾層根據場景具象,形成的一個提供給上層開發者應用的協議層。
## 數據封裝過程

# 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>