🎉歡迎大家觀看AUGENSTERN_dc的文章(o゜▽゜)o☆??
🎉感謝各位讀者在百忙之中抽出時間來垂閱我的文章,我會盡我所能向的大家分享我的知識和經驗📖
🎉希望我們在一篇篇的文章中能夠共同進步!!!
🌈個人主頁:AUGENSTERN_dc
🔥個人專欄:C語言?|Java | 數據結構?| 算法 | MySQL?| RabbitMQ?| Redis
?個人格言:
一重山有一重山的錯落,我有我的平仄
一筆鋒有一筆鋒的著墨,我有我的舍得
目錄
1. OSI七層模型
1.1 OSI七層模型
1.2 為什么要分成七個層次?
1.3 各層分別的職責:
1.3.1 應用層
1.3.1.1 主要功能:?
1.3.1.2 常見應用層的協議:
?1.3.1.3 總結
1.3.2 表示層
1.3.2.1 主要功能:
1.3.2.2 常見表示層協議:
1.3.2.3? 總結
1.3.3 會話層
1.3.3.1 主要功能
1.3.3.2 常見會話層協議
1.3.3.3 總結
1.3.4 傳輸層
1.3.5 網絡層
1.3.5.1 主要功能:?
1.3.5.2 常用協議:?
1.3.5.3 總結:
1.3.6 數據鏈路層
1.3.6.1 主要功能:?
1.3.6.2 常見協議
1.3.6.3 總結:?
1.3.7 物理層
1.3.7.1 主要功能:?
1.3.7.2 常見協議:?
1.3.7.3 總結:?
1. OSI七層模型
1.1 OSI七層模型
OSI(Open Systems Interconnection)七層模型是一個概念性的網絡通信模型,將網絡通信過程分為七個層次,每一層負責特定的功能。OSI模型的主要目的是提供一個標準化的框架,以便不同廠商的設備和軟件能夠互操作。
1.2 為什么要分成七個層次?
說到分層,我們可以聯想一下平時我們開發一個SpringBoot后臺程序時的分層,我們往往會按照每一層做不同的事情的原則,將系統分為三層(若系統復雜,則會有更多的層級) :
<1> Controller (負責前后端的數據交互)
<2> Service (負責業務操作邏輯)
<3> Repository (負責與數據庫進行交互)
復雜的系統需要進行分層,因為每一層都需要專注于一類事情,就像設計模式中的 <單一責任原則>
網絡分層的原理也是一樣,每一層只專注于做一件事情
話說回來,我認為分層的原因主要有三點:
1. 各層之間需要相互獨立:?各層之間相互獨立,各層之間不需要關心其他層是如何實現的,只需要知道自己如何調用下層提供好的功能就可以了(可以簡單理解為接口調用)。這個和我們對開發時系統進行分層是一個道理。
2.?提高了靈活性和可替換性:每一層都可以使用最適合的技術來實現,你只需要保證你提供的功能以及暴露的接口的規則沒有改變就行了。并且,每一層都可以根據需要進行修改或替換,而不會影響到整個網絡的結構。這個和我們平時開發系統的時候要求的高內聚、低耦合的原則也是可以對應上的。
3.?大問題化小:分層可以將復雜的網絡問題分解為許多比較小的、界線比較清晰簡單的小問題來處理和解決。這樣使得復雜的計算機網絡系統變得易于設計,實現和標準化。 這個和我們平時開發的時候,一般會將系統功能分解,然后將復雜的問題分解為容易理解的更小的問題是相對應的,這些較小的問題具有更好的邊界(目標和接口)定義.
1.3 各層分別的職責:
在OSI七層模型中,每一層的模型都會對上一層的數據進行封裝(除了物理層外,物理層對數據進行轉換而不是封裝)
接下來我們簡單介紹一下,每一層的不同的職責
1.3.1 應用層
將用戶上傳的數據發送給表示層做處理,或接收表示層傳來的數據展示給用戶
1.3.1.1 主要功能:?
<1> 提供用戶接口: 應用層為用戶提供直接的交互界面,使得用戶能夠方便的使用各種網絡服務
<2> 數據格式化: 應用層負責將用戶數據轉換為合適的網絡傳輸格式,以及將接受到的數據解析為用戶可以理解的格式
<3> 提供網絡服務: 應用層提供了多種網絡服務,滿足用戶的不同需求
1.3.1.2 常見應用層的協議:
<1> HTTP/HTTPS
<2> SMTP/POP3/IMAP
<3> FTP/SFTP
<4> DNS
?1.3.1.3 總結
總的來說,應用層主要是用來服務于用戶,與用戶直接進行交互的,同時應用層是通過調用下層提供的服務來實現其功能
1.3.2 表示層
表示層會對來自于應用層的數據進行封裝,傳輸給會話層,或接收會話層的數據,解封后傳輸給應用層
1.3.2.1 主要功能:
<1> 數據表示和轉換:?表示層負責將數據轉換為適合網絡傳輸的格式,以及將接收到的數據轉換為應用程序可以理解的格式。
例如:將ASCII轉換為Unicode編碼格式,將圖像音頻等轉換成合適的傳輸形式
<2> 數據加密和解密:?表示層提供數據加密和解密服務,確保數據在傳輸過程中的安全性和隱私性。
例如在HTTP的基礎上,通過SSL/TLS協議對數據進行加密,確保數據在傳輸過程中不被竊取或篡改
<3> 數據壓縮和解壓縮:?表示層提供數據壓縮和解壓縮服務,減少數據傳輸的大小,提高傳輸效率。
例如: 將文件壓縮成ZIP文件進行傳輸,壓縮文件大小,提高傳輸效率
1.3.2.2 常見表示層協議:
SSL/TLS(Secure Sockets Layer/Transport Layer Security)
1.3.2.3? 總結
表示層主要負責處理應用層數據的表示,轉換,加密和壓縮,確保數據在不同的系統之間能夠正確的理解和處理
1.3.3 會話層
會話層接收表示層的數據并進行封裝,發送給傳輸層,或接收傳輸層的數據解封發送給表示層
1.3.3.1 主要功能
<1> 建立會話:?會話層負責在通信雙方之間建立會話
<2> 管理會話:?會話層負責管理會話的整個生命周期,包括數據傳輸、會話恢復和會話終止。
<3> 同步和檢查點:?會話層在數據傳輸過程中設置同步點和檢查點,確保數據的完整性和一致性。
<4> 對話控制:?會話層支持雙向通信,并可以控制會話的方向。
1.3.3.2 常見會話層協議
<1> RPC (Remote Procedure Call)
<2> NetBIOS?(Network Basic Input/Output System)
<3>?SMB(Server Message Block)
1.3.3.3 總結
會話層主要負責管理和協調通信雙方之間的會話,通過各種協議實現其功能,確保數據在會話期間正確、有序地傳輸。
1.3.4 傳輸層
傳輸層的主要職責是提供端到端的可靠或不可靠數據傳輸服務,確保數據能夠在網絡中正確、完整地傳輸。
1.3.4.1 主要功能
<1> 端到端的通信:?傳輸層負責在源主機和目標主機之間建立和管理端到端的通信。
<2> 可靠傳輸:?傳輸層提供可靠的數據傳輸服務,確保數據能夠完整、無誤地到達目的地。
<3> 不可靠傳輸:?傳輸層也提供不可靠的數據傳輸服務,不保證數據的可靠傳輸,但提供快速傳輸。
<4> 多任務管理:?傳輸層可以同時管理多個應用程序的通信,每個應用程序使用不同的端口號。
1.3.4.2 常見協議
<1> TCP?(Transmission Control Protocol)
<2>?UDP(User Datagram Protocol)
1.3.4.3 總結
傳輸層通過TCP和UDP兩種協議實現其功能,確保數據能夠在網絡中正確、完整地傳輸。
1.3.5 網絡層
1.3.5.1 主要功能:?
<1> 路由選擇:?網絡層負責選擇最佳路徑,將數據報從源主機傳輸到目標主機。
<2> 邏輯地址處理:?網絡層使用邏輯地址(如IP地址)來標識網絡中的設備。IP地址是網絡層的核心,用于路由選擇和數據報的傳輸。
<3> 數據報傳輸:?網絡層將傳輸層的數據(如TCP段或UDP數據報)封裝成網絡層的數據報(如IP數據報),接收方的網絡層將接收到的數據報解封裝,提取出傳輸層的數據并傳遞給上層。
<4> 錯誤檢測:?網絡層在數據報中添加校驗和,用于檢測數據在傳輸過程中是否發生錯誤。如果檢測到錯誤,網絡層會丟棄錯誤的數據報,由傳輸層負責重傳。
1.3.5.2 常用協議:?
<1>?IP(Internet Protocol):?IP是網絡層的核心協議,負責將數據報從源主機傳輸到目標主機。
<2> ICMP(Internet Control Message Protocol):ICMP用于發送錯誤消息和控制消息,幫助網絡層更好地管理數據報的傳輸。
<3>?IGMP(Internet Group Management Protocol):IGMP用于管理多播組成員關系,支持多播通信。
1.3.5.3 總結:
網絡層通過IP協議、ICMP協議等實現其功能,確保數據能夠在復雜的網絡環境中高效、可靠地傳輸。
1.3.6 數據鏈路層
1.3.6.1 主要功能:?
<1> 幀的封裝與解封裝:?數據鏈路層將網絡層的數據(如IP數據報)封裝成幀。幀是數據鏈路層的數據單元,包含幀頭、數據部分和幀尾。
<2> 可靠傳輸:?數據鏈路層通過校驗碼(如CRC)檢測傳輸過程中是否發生錯誤。某些數據鏈路層協議(如HDLC)可以糾正單比特錯誤。數據鏈路層可以通過確認應答(ACK)和超時重傳機制確保數據的可靠傳輸。
<3> 介質訪問控制:?數據鏈路層負責管理多個設備共享同一物理介質(如以太網電纜)時的訪問控制。
<4> 流量控制:?數據鏈路層可以通過流量控制機制(如滑動窗口協議)控制發送方的數據流量,避免接收方緩沖區溢出
1.3.6.2 常見協議
<1> 以太網(Ethernet)
<2>?Wi-Fi(IEEE 802.11)
<3>?PPP(Point-to-Point Protocol)
1.3.6.3 總結:?
數據鏈路層主要負責將物理層傳輸的原始比特流封裝成幀,并提供可靠的數據傳輸服務。
1.3.7 物理層
1.3.7.1 主要功能:?
<1> 物理連接:?物理層負責建立和維護物理連接,確保數據能夠在物理介質上傳輸。
<2> 比特流傳輸:?物理層負責在物理介質上透明地傳輸原始的比特流。
<3> 信號編碼:?物理層將數據編碼為適合物理介質傳輸的信號。
1.3.7.2 常見協議:?
<1>?以太網(Ethernet)
<2>?光纖通信
<3>?無線通信
1.3.7.3 總結:?
物理層通過各種協議和標準(如以太網、光纖通信、無線通信)實現其功能,確保數據能夠在物理介質上正確傳輸。