[ 計算機網絡 ] 深入理解OSI七層模型

🎉歡迎大家觀看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 總結:?

物理層通過各種協議和標準(如以太網、光纖通信、無線通信)實現其功能,確保數據能夠在物理介質上正確傳輸。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/81315.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/81315.shtml
英文地址,請注明出處:http://en.pswp.cn/web/81315.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

線性代數之張量計算,支撐AI算法的數學原理

目錄 一、張量計算的數學本質 1、線性代數:張量的幾何與代數性質 2、微積分:梯度與自動微分 3、優化理論:張量分解與正則化 4、張量計算的核心操作 二、張量計算在AI算法中的作用 1、數據表示與處理 2、神經網絡的參數表示 3、梯度計算與優化 三、張量計算在AI中的…

打造一個支持MySQL查詢的MCP同步插件:Java實現

打造一個支持MySQL查詢的MCP同步插件&#xff1a;Java實現 用Java實現一個MCP本地插件&#xff0c;直接通過JDBC操作本地MySQL&#xff0c;并通過STDIO與上層MCP客戶端&#xff08;例如Cursor&#xff09;通信。插件注冊一個名為mysql 的同步工具&#xff0c;接收連接參數及SQL…

【數據架構01】數據技術架構篇

? 9張高質量數據架構圖&#xff1a;大數據平臺功能架構、數據全生命周期管理圖、AI技術融合架構等&#xff1b; &#x1f680;無論你是數據架構師、治理專家&#xff0c;還是數字化轉型負責人&#xff0c;這份資料庫都能為你提供體系化參考&#xff0c;高效解決“架構設計難、…

java三種常見設計模式,工廠、策略、責任鏈

設計模式實戰解析 一、工廠模式&#xff08;點外賣模式&#xff09; 1. 核心思想 代替直接new對象像點外賣一樣獲取對象 2. 實際應用 Spring框架&#xff1a;BeanFactoryJDBC&#xff1a;DriverManager.getConnection() 3. 三種變體對比 類型特點示例場景簡單工廠一個工…

jenkins使用Send build artifacts over SSH發布jar包目錄配置

本測試用ruoyi-plus的代碼。 1 [GitLab 自動觸發 Jenkins 構建_jenkins構建觸發器沒有build when a change is pushed to git-CSDN博客](https://blog.csdn.net/wangyiyungw/article/details/81776972) 2 [jenkins使用Send build artifacts over SSH遇到的坑-CSDN博客](https…

vscode打開vue + element項目

好嘞&#xff0c;我幫你詳細整理一個用 VS Code 來可視化開發 Vue Element UI 的完整步驟&#xff0c;讓你能舒服地寫代碼、預覽界面、調試和管理項目。 用 VS Code 可視化開發 Vue Element UI 全流程指南 一、準備工作 安裝 VS Code 官網下載安裝&#xff1a;https://code…

黑馬程序員C++2024新版筆記 第4章 函數和結構體

目錄 1.結構體的基本應用 2.結構體成員的默認值 3.結構體數組 4.結構體指針 ->操作符 5.結構體指針數組 1.引入已存在的結構體數組地址 2.通過new操作符申請指針數組空間 6.函數的概念 7.函數的基礎語法 8.無返回值函數和void類型 9.空參函數 10.函數的嵌套調用…

高級前端工程師必備的 JS 設計模式入門教程,常用設計模式案例分享

目錄 高級前端工程師必備的 JS 設計模式入門教程&#xff0c;常用設計模式案例分享 一、什么是設計模式&#xff1f;為什么前端也要學&#xff1f; 1、設計模式是什么 2、設計模式的產出 二、設計模式在 JS 里的分類 三、常用設計模式實戰講解 1、單例模式&#xff08;S…

Ubuntu+Docker+內網穿透:保姆級教程實現安卓開發環境遠程部署

文章目錄 前言1. 虛擬化環境檢查2. Android 模擬器部署3. Ubuntu安裝Cpolar4. 配置公網地址5. 遠程訪問小結 6. 固定Cpolar公網地址7. 固定地址訪問 前言 本文將詳細介紹一種創新性的云開發架構&#xff1a;基于Ubuntu系統構建Android仿真容器環境&#xff0c;并集成安全隧道技…

Linux Kernel調試:強大的printk(一)

引言 想了好久&#xff0c;還是覺得這個標題才配得上printk&#xff01;^_^ 我相信&#xff0c;不管做什么開發&#xff0c;使用最多的調試手段應該就是打印了&#xff0c;從我們學習編程語言第一課開始&#xff0c;寫的第一段代碼&#xff0c;就是打印"Hello, world&qu…

基于NLP技術的客戶投訴與需求文本分類方法研究

目錄 摘要 1. 引言 2. 文本分類基礎 2.1 文本分類的定義與類型 2.2 文本分類的評價指標 3. 傳統文本分類方法 3.1 基于TF-IDF和SVM的方法 3.2 基于主題模型和詞向量的改進方法 4. 深度學習文本分類方法 4.1 TextCNN模型 4.2 BiLSTM模型 4.3 注意力機制與Transformer…

#RabbitMQ# 消息隊列入門

目錄 一 MQ技術選型 1 運行rabbitmq 2 基本介紹 3 快速入門 1 交換機負責路由消息給隊列 2 數據隔離 二 Java客戶端 1 快速入門 2 WorkQueue 3 FanOut交換機 4 Direct交換機 5 Topic交換機 *6 聲明隊列交換機 1 在配置類當中聲明 2 使用注解的方式指定 7 消息轉…

【深度學習】多目標融合算法(六):漸進式分層提取模型PLE(Progressive Layered Extraction)

目錄 一、引言 二、PLE&#xff08;Progressive Layered Extraction&#xff0c;漸進式分層提取模型&#xff09; 2.1 技術原理 2.2 技術優缺點 2.3 業務代碼實踐 2.3.1 業務場景與建模 2.3.2 模型代碼實現 2.3.3 模型訓練與推理測試 2.3.4 打印模型結構 三、總結 一…

【Java開發日記】如何使用Java開發在線生成 pdf 文檔

一、介紹 在實際的業務開發的時候&#xff0c;研發人員往往會碰到很多這樣的一些場景&#xff0c;需要提供相關的電子憑證信息給用戶&#xff0c;例如網銀&#xff0f;支付寶&#xff0f;微信購物支付的電子發票、訂單的庫存打印單、各種電子簽署合同等等&#xff0c;以方便用…

Oracle 11g 單實例使用+asm修改主機名導致ORA-29701 故障分析

解決 把服務器名修改為原來的&#xff0c;重啟服務器。 故障 建表空間失敗。 分析 查看告警日志 ORA-1119 signalled during: create tablespace splex datafile ‘DATA’ size 2000M… Tue May 20 18:04:28 2025 create tablespace splex datafile ‘DATA/option/dataf…

消息隊列的使用

使用內存隊列來處理基于內存的【生產者-消費者】場景 思考和使用Disruptor Disruptor可以實現單個或多個生產者生產消息&#xff0c;單個或多個消費者消息&#xff0c;且消費者之間可以存在消費消息的依賴關系 使用Disruptor需要結合業務特性&#xff0c;設計要靈活 什么業務…

《帝國時代1》游戲秘籍

資源類 PEPPERONI PIZZA&#xff1a;獲得 1000 食物。COINAGE&#xff1a;獲得 1000 金。WOODSTOCK&#xff1a;獲得 1000 木頭。QUARRY&#xff1a;獲得 1000 石頭。 建筑與生產類 STEROIDS&#xff1a;快速建筑。 地圖類 REVEAL MAP&#xff1a;顯示所有地圖。NO FOG&#xf…

使用JSP踩過的坑

雖然說jsp已經過時了&#xff0c;但是有時維護比較老的項目還是需要的。 下面說下&#xff0c;我使用jsp踩過的坑&#xff1a; 1.關于打印輸出 在jsp中輸出使用 out.println("hello");而不是 System.out.println("hello");如果在定義函數部分需要打印…

redis集群創建時手動指定主從關系的方法

適用場景&#xff1a; 創建主從關系時默認參數 --cluster-replicas 1 會自動分配從節點。 為了能精確控制 Redis Cluster 的主從拓撲結構&#xff0c;我們通過 Redis Cluster 的手動分片功能來實現 一、手動指定主從關系的方法 使用 redis-cli --cluster-replicas 0 先創建純…

ROS合集(七)SVIn2聲吶模塊分析

文章目錄 一、整體思想二、具體誤差建模流程三、總結明確&#xff08;預測值與觀測值&#xff09;四、選點邏輯五、Sonar 數據處理流水線1. ROS Launch 配置&#xff08;imagenex831l.launch&#xff09;2. SonarNode 節點&#xff08;sonar_node.py&#xff09;3. Subscriber …