[TOC]
## **OSI 七層模型**
**OSI 七層模型(Open System Interconnection Model)** 是國際標準組織提出的一個網絡分層模型。
每一層都專注做一件事情,并且每一層都需要使用下一層提供的功能比如傳輸層需要使用網絡層提供的路由和尋址功能,這樣傳輸層才知道把數據傳輸到哪里去。
**OSI 的七層體系結構概念清楚,理論也很完整,但是它比較復雜而且不實用,而且有些功能在多個層中重復出現。**
:-: 
:-: 
### 1. **物理層**
> 利用傳輸介質(網線,光纖,同軸電纜)為數據鏈路層提供物理連接,實現比特流的透明傳輸。盡可能屏蔽掉具體傳輸介質和物理設備的差異,使其上面的數據鏈路層不必考慮網絡的具體傳輸介質是什么。 (**比特**)
> **協議:IEEE802.3 以太網協議和物理層規范**
物理層并不是物理媒體本身,物理層的媒體(傳輸介質、物理設備)包括電纜、光纖等。正因為物理媒體會有很多差異,所以物理層的作用正是盡可能地屏蔽這些差異,使上面的數據鏈路曾感覺不到這些差異。其主要任務就是確定與傳輸媒體的接口有關的一些特性,如機械特性、電氣特性等。在這一層,**數據的單位為比特**
### 2. **數據鏈路層**
> 封裝成幀,透明傳輸,差錯檢測(**幀**)
> **協議:地址解析協議ARP、逆向地址解析協議RARP、點對點協議PPP**
**封裝成幀**:就是數據前后分別添加首部和尾部,這樣就構成了 **幀**。(在網線上,數據是以電信號的形式傳輸,在光纖上,數據以光信號形式傳輸。因此數據鏈路層對數據進行了格式化以進行傳輸)。
**透明傳輸**:用字節填充法(在非幀邊界的控制字符插入轉義字符)解決透明傳輸問題。

**差錯檢測**:傳輸過程中可能出現差錯(比特差錯),為保證可靠性,在數據鏈路層廣泛使用了循環冗余檢驗CRC的檢錯技術。
**數據鏈路層使用的信道主要有兩種類型:**
* **點對點信道**:也就是字面意思,點對點得通信方式。
* **廣播信道**:這種信道是一對多的方式,所以整個過程也比較復雜。必須使用一些信道協議來協調網絡中的主機數據發送。
**具體工作**:接收來自物理層的比特流形式的數據,并封裝成幀,傳送到上一層;同樣,也將來自上層的數據幀,拆裝為比特流形式的數據轉發到物理層;并且,還負責處理接收端發回的確認幀的信息,以便提供可靠的數據傳輸。
### 3. **網絡層**
> 通過路由選擇算法,為數據包選擇最適當的路徑。(**數據包**)
> **協議:網絡協議IP、地址解析協議ARP、互聯網控制信息協議ICMP、互聯網組管理協議IGMP**
如果我有多臺計算機,怎么找到我要發的那臺?或者,A要給F發信息,中間要經過B,C,D,E,但是中間還有好多節點如K.J.Z.Y。我怎么選擇最佳路徑?這就是路由要做的事。
注意:數據鏈路層是解決同一網絡內節點**之間的通信,而**網絡層主要解決不同子網間的通信。
### 4. **傳輸層**
> 提供端到端的連接(**報文段**)
> **協議:傳輸控制協議TCP、用戶數據報協議UDP**
### 5. **會話層**
> 建立和管理應用程序之間會話
> **協議:安全套接字協議SSL、傳輸層安全協議TLP**
例如:A和B通過QQ進行聊天時,A手機上的QQ和B手機上的QQ建立了會話。(同一應用程序之間)
### 6. **表示層**
> 把應用層提供的信息變換為能夠共同理解的形式,提供字符代碼、數據格式、控制信息格式、加密等的統一表示
> **協議:外部數據表示協議XDP**
例如:兩個通信主機之間采用不同的編碼方式,需要通過表示層來完成這種轉換,實現編碼的同一。
### 7. **應用層**
> 直接想用戶提供服務,完成用戶希望在網絡上完成的各種工作。
> **協議:支持萬維網應用的 HTTP 協議、支持電子郵件的 SMTP 協議、支持文字傳送的 FTP協議、DNS(域名解析)、郵局協議POP3、安全套接字協議Socks、簡單網絡管理協議SNMP、TCP/IP終端仿真協議Telnet**
### 數據在各層之間的傳遞過程

## **TCP/IP 四層模型**
**TCP/IP 四層模型**是目前被廣泛采用的一種模型,我們可以將 TCP / IP 模型看作是 OSI 七層模型的精簡版本。包含:
**應用層、傳輸層、網絡層、網絡接口層**。
:-: 
## **OSI七層模型和TCP/IP四層模型的區別**
1. OSI 七層協議分別是:物理層、數據鏈路層、網絡層、傳輸層、會話層、表示層、應用層;TCP/IP 四層協議分別為:網絡接口層,網絡層、傳輸層、應用層。
2. OSI 是一種理論模型,而 **TCP/IP 已經廣泛使用,成為網絡互聯實際的標志**
3. OSI 模型是一個大而全的理論模型,TCP/IP 模型側重一些核心的協議的分層,是由實際發展總結出來的。
4. OSI 先有模型,后有協議,先有標準,后進行實踐
5. OSI協議實現起來1. OSI協議實現起來**過分復雜,**而且**運行效率低**,**層次劃分不合理**,很多功能在多個層次**重復出現**,而且1. OSI協議實現起來**過分復雜,**而且**運行效率低**,**層次劃分不合理**,很多功能在多個層次**重復出現**,**層次劃分不合理**,很多功能在多個層次重復出現
## **為什么網絡要分層?**
1. **各層之間相互獨立**:各層之間相互獨立,各層之間不需要關心其他層是如何實現的,只需要知道自己如何調用下層提供好的功能就可以了(可以簡單理解為接口調用)。這個和我們對開發時系統進行分層是一個道理。
2. **提高了整體靈活性** :每一層都可以使用最適合的技術來實現,你只需要保證你提供的功能以及暴露的接口的規則沒有改變就行了。**這個和我們平時開發系統的時候要求的高內聚、低耦合的原則也是可以對應上的。**
3. **大問題化小** :分層可以將復雜的網絡間題分解為許多比較小的、界線比較清晰簡單的小問題來處理和解決。這樣使得復雜的計算機網絡系統變得易于設計,實現和標準化。**這個和我們平時開發的時候,一般會將系統功能分解,然后將復雜的問題分解為容易理解的更小的問題是相對應的,這些較小的問題具有更好的邊界(目標和接口)定義。**
>
> **計算機科學領域的任何問題都可以通過增加一個間接的中間層來解決,計算機整個體系從上到下都是按照嚴格的層次結構設計的。**
- PHP
- PHP 核心架構
- PHP 生命周期
- PHP-FPM 詳解
- PHP-FPM 配置優化
- PHP 命名空間和自動加載
- PHP 運行模式
- PHP 的 Buffer(緩沖區)
- php.ini 配置文件參數優化
- 常見面試題
- 常用函數
- 幾種排序算法
- PHP - 框架
- Laravel
- Laravel 生命周期
- ThinkPHP
- MySQL
- 常見問題
- MySQL 索引
- 事務
- 鎖機制
- Explain 使用分析
- MySQL 高性能優化規范
- UNION 與 UNION ALL
- MySQL報錯:sql_mode=only_full_group_by
- MySQL 默認的 sql_mode 詳解
- 正則表達式
- Redis
- Redis 知識
- 持久化
- 主從復制、哨兵、集群
- Redis 緩存擊穿、穿透、雪崩
- Redis 分布式鎖
- RedisBloom
- 網絡
- 計算機網絡模型
- TCP
- UDP
- HTTP
- HTTPS
- WebSocket
- 常見幾種網絡攻擊方式
- Nginx
- 狀態碼
- 配置文件
- Nginx 代理+負載均衡
- Nginx 緩存
- Nginx 優化
- Nginx 配置 SSL 證書
- Linux
- 常用命令
- Vim 常用操作命令
- Supervisor 進程管理
- CentOS與Ubuntu系統區別
- Java
- 消息隊列
- 運維
- RAID 磁盤陣列
- 邏輯分區管理 LVM
- 業務
- 標準通信接口設計
- 業務邏輯開發套路的三板斧
- 微信小程序登錄流程
- 7種Web實時消息推送方案
- 用戶簽到
- 用戶注冊-短信驗證碼
- SQLServer 刪除同一天用戶重復簽到
- 軟件研發完整流程
- 前端
- Redux
- 其他
- 百度云盤大文件下載
- 日常報錯記錄
- GIT
- SSL certificate problem: unable to get local issuer certificate
- NPM
- reason: connect ECONNREFUSED 127.0.0.1:31181
- SVN
- SVN客戶端無法連接SVN服務器,主機積極拒絕
- Python
- 基礎
- pyecharts圖表
- 對象
- 數據庫
- PySpark
- 多線程
- 正則
- Hadoop
- 概述
- HDFS