計算機網絡基礎:從協議到通信全解析(大致框架)

本節重點:

1.了解網絡發展背景,對局域網/廣域網的概念有基本認識

2.了解網絡協議的意義,重點理解TCP/IP五層結構模型

3.學習網絡傳輸的基本流程,理解封裝和解包分用

一、計算機網絡發展背景:

人與人之間是需要協同工作的,就注定了計算機需要協同工作,網絡的產生是必然的

  • 早期計算機是昂貴的大型設備(如 IBM 大型機),體積龐大、功能單一,且為 “單機運行” 模式,一臺計算機僅供少數人使用,資源(如計算能力、存儲)無法共享。
  • 軍事、科研領域首先產生了 “多設備協同” 需求:例如,美國軍方需要讓不同地點的計算機共享數據,以提高指揮效率;科研機構希望連接多臺計算機,協同完成復雜計算(如導彈軌跡計算、氣象模擬)。

早期的計算機是獨立模式(計算機之間相互獨立)

網絡互聯模式:多臺計算機連接在一起,完成數據共享,協同工作?

二、局域網與廣域網:

局域網(LAN)和廣域網(WAN)是計算機網絡按地理覆蓋范圍劃分的兩種核心類型

局域網:在有限地理范圍內(如家庭、辦公室、校園、工廠)將多臺設備(計算機、手機、打印機等)互聯形成的網絡。

交換機;主要用于在同一網絡(如局域網 LAN)內實現多個設備的高效通信

廣域網:覆蓋廣闊地理范圍(如城市、國家、全球)的網絡,用于連接多個局域網或其他廣域網,實現遠距離數據傳輸。

總結:局域網就是局部的,廣域網就是遠距離,所謂局部和廣部是相對的概念,取決于觀察的視角、網絡的規模和應用場景。

三、協議:

協議是指網絡中不同設備之間進行通信時必須共同遵守的一套規則、標準或約定,它規定了通信的格式、時機、順序以及錯誤處理方式等,確保數據能夠準確、有序、高效地在設備間傳輸。

簡單理解:就不如兩個人交流,只有是用同一套語言(中文/英文),并且遵循基本的語法規則才能相互交流溝通,網絡也是如此,只有達成約定,才能互相傳輸解析數據?

計算機之間的傳輸媒介是光信號和電信號,通過“頻率”和”強弱“來表示0和1這樣的信息,要想傳遞各種不同的信息,就需要約定雙方的數據格式,但只要約定好就行了嗎??

顯然不是,就好比一個是中文,一個是英文,我都各自遵循自己的協議,但沒有人制定國際交流語言就不行,兩個還是不能溝通,就好比計算機生產廠商很多,os很多,硬件設備很多,如何讓不同的設備不同的廠商之間的計算機能夠相互順暢的通信,就需要有人約定一個標準,讓大家都來遵循,這個標準就叫網絡協議。?

3.1? 協議分層:

?

例子中:我們簡單的進行通信,在我們語言層看來是面對面的,但實際是我們語言層的數據經過通信設備層,在經過電話機協議,轉到對方的通信設備層在到語言層。

那我們為什么要進行協議分層?本質就是為了解耦,如果我們把所有的協議都揉在一起,都放在一層,那這個協議會很冗雜,如果我們改變語言層的東西,就意味著改變整個協議,不利于實現和維護、發展

3.2? 理解分層:

a.軟件設計方面的優勢————實現低耦合

b.分層的依據是讓功能比較集中,耦合度比較高的模塊為一層?

c.每一層都要解決特定的問題(這就是我們學習網絡的框架)

3.3? 用例子理解每一層次

假設我們有兩臺主機,主機a和主機b,我們該如何傳輸數據?

1.如何把數據交付給和自己相連的下一臺主機(注意:不是主機a到b,而是主機a到b的過程中經過的其他主機)

2.當我們能傳輸后,我們要解決往哪傳輸,也就是路徑的選擇

3.我們要有糾錯/容錯的能力,如果傳輸失敗,數據該怎么辦???

4.數據包從主機a到b后要解決應用方面的問題(比如主機a向b發出申請下載電影,把數據發送給對方是手段,目的是為了下載電影,為了解決應用問題)

總結:綜上是網絡要解決的4個問題,應用低耦合高內聚的分層原理,每一層次都有自己匹配的協議,每一層的協議都要解決自己的問題。

3.4? OSI(Open System Interconnection)七層模型

OSI 七層模型:是國際標準化組織(ISO)提出的一種理論上的分層架構,目的是為網絡協議的設計提供統一的 “功能劃分標準”。它將網絡通信從底層到上層劃分為 7 個層級(物理層、數據鏈路層、網絡層、傳輸層、會話層、表示層、應用層),每個層級明確了需要解決的核心問題(如物理層負責信號傳輸,網絡層負責路由選擇等)。
簡單說,OSI 模型像一張 “建筑圖紙”,規定了 “房子應該有地基、墻體、屋頂”,但不具體規定 “地基用什么水泥,屋頂用什么瓦片”

從上圖可以看出:每一層都有自己的協議和自己要解決的問題

實際問題中,567層是需要我們自己設計的,也就是之前的例子中的第四點(解決應用問題)234層對應問題123,物理層暫時不考慮

3.5? TCP/IP五層(或四層)模型

TCP/IP 是一組協議的代名詞,它還包括許多協議,組成了 TCP/IP協議簇。

TCP/IP 通訊協議采用了 5 層的層級結構,每一層都呼叫它的下一層所提供的網絡來完成自己的需求。?

物理層: 負責光/電信號的傳遞方式. 比如現在以太網通用的網線(雙絞線)、早期以太網采用的的同軸電纜(現在主要用于有線電視)、光纖, 現在的 wifi 無線網使用 電磁波等都屬于物理層的概念。物理層的能力決定了最大傳輸速率、傳輸距離、抗 干擾性等. 集線器(Hub)工作在物理層。
數據鏈路層: 負責設備之間的數據幀的傳送和識別. 例如網卡設備的驅動、幀同步(就是說從網線上檢測到什么信號算作新幀的開始)、沖突檢測(如果檢測到沖突就 自動重發)、數據差錯校驗等工作。有以太網、令牌環網, 無線 LAN 等標準。交換機(Switch)工作在數據鏈路層。
網絡層: 負責地址管理和路由選擇。例如在 IP協議中, 通過IP地址來標識一臺主機, 并通過路由表的方式規劃出兩臺主機之間的數據傳輸的線路(路由). 路由器(Router)工作在網路層。
傳輸層: 負責兩臺主機之間的數據傳輸。如傳輸控制協議 (TCP), 能夠確保數據可靠的從源主機發送到目標主機。
應用層: 負責應用程序間溝通,如簡單電子郵件傳輸(SMTP)、文件傳輸協議(FTP)、網絡遠程訪問協議(Telnet)等,我們的網絡編程主要就是針對應用層。

也就是把567層歸結到應用層,后續如果我們說四層模型就是省略了物理層

結合上面所說的,我們實際編程是應用層,os其實早就在內部規定好了傳輸層和網絡層。?

?一般而言:

對于一臺主機, 它的操作系統內核實現了從傳輸層到數據鏈路層的內容。

對于一臺路由器, 它實現了從網絡層到物理層。

對于一臺交換機, 它實現了從數據鏈路層到物理層。

對于集線器, 它只實現了物理層

但是并不絕對. 很多交換機也實現了網絡層的轉發; 很多路由器也實現了部分傳輸層的內容(比如端口轉發)。

四、局域網中的兩臺主機是如何通信的???

4.1? 協議報頭

例子:比如一個快遞,你想買的東西實際上是箱子里的東西,并不包括快遞盒及快遞單,這多出來的就叫協議,協議上的從哪寄到哪,收件人名字等信息就叫報頭,將來快遞在站點與站點之間傳遞時只需要看報頭

a.報文=報頭+有效載荷(后面會提)

b.協議每一層都有,而每一個協議最終表現就是協議要有報頭

c.協議通常是通過協議報頭來進行表達的

4.2? 局域網

a.兩臺主機同處一個局域網是能夠直接通信的

b.局域網的原理(簡單提,后面詳細講)

? ?每一臺主機都有自己的”名字“,每一臺都有網卡,網卡也有自己的地址,MAC地址(表明自己在? ? ?局域網中的唯一性)(在linux中ifconfig可以查詢,其中有一行ether就是MAC地址,16進制,一? ? ?共48bit位?,window是ipconfig /all)

簡單來說就是A給D發數據,所有的主機都會收到,但由于所有主機在自己最底層的協議判斷時,C和B直接把該報頭丟棄,只有D識別并且判斷出是A發給自己的,所以就會處理

?當一個”你好“從主機1發到主機2時要經歷封裝,解包分用的過程,也就是”你好“每經過一層時要加上對應的報頭,對方在接收到后到達應用層要經過解包分用的過程

在網絡協議中,我們可以認為同層協議在直接通信,也可以理解成向下交付,這是兩種不同的認知

4.3? 報文=報頭+有效載荷

報頭就是每一層的協議,有效載荷就是除掉協議后剩下的

比如在傳輸層(站在傳輸層的視角):報文為傳輸層報頭+應用層包頭+”你好“

報頭=傳輸層報頭,有效載荷=應用層報頭+”你好“

4.4? 數據包封裝和分用?

1.不同的協議層對數據包有不同的稱謂,在傳輸層叫做段(segment),在網絡層叫做數據報 (datagram),在鏈路層叫做幀(frame)。
2.應用層數據通過協議棧發到網絡上時,每層協議都要加上一個數據首部(header),稱為封裝(Encapsulation)。
3.首部信息中包含了一些類似于首部有多長, 載荷(payload)有多長, 上層協議是什么等信息。
4.數據封裝成幀后發到傳輸介質上,到達目的主機后每層協議再剝掉相應的首部,根據首部中的 "上層協議字段" 將數據交給對應的上層協議處理。

數據分用的過程:

?

4.5? 每一層協議都要面臨和解決的問題

1.如何判斷哪里是報頭,哪里是有效載荷

2.如何判斷自己的有效載荷要交給上一層的哪個協議???每一層的協議也有幾個,要清楚交給那個協議

以上就是每一層協議的報頭都要涵蓋的信息,這就是協議的共性

4.6? 局域網的分類

1.以太網

a.當主機a給d發時,b不能給c發(只允許一個主機在任何一個時刻給局域網中發送信息,否則發送碰撞)

b.碰撞(Collision)?指的是多個設備同時在同一物理介質(如網線)上發送數據,導致信號相互干擾、無法被正確接收的現象。(網線站在os的角度就是共享資源/臨界資源)

c.如果發送碰撞就需要重新發送

2.令牌環路

令牌環路就類似與鎖,誰擁有令牌誰就可以發信息,避免了碰撞

特點:可靠性高、實時性較好,但成本高、擴展性差,目前已幾乎被以太網取代。

3.無線LAN

基于無線通信技術(如無線電波、紅外線)的局域網,核心標準是 IEEE 802.11 系列(即 WiFi),也屬于廣義以太網的延伸(無線以太網)。
特點:無需布線,靈活性強,適用于移動設備接入。

4.7? MAC地址和ip地址

在Linux中是用ifconfig命令進行查詢

ehc0和lo都是網絡接口,ehc0相當于入網接口,收數據和發數據都是這個,相當于數據鏈路層

4.7.1? MAC地址

其中echo中 ether是以太意思,這后面跟著就是MAC地址,每個數字都是16進制,一共有12個數字,每兩個:分隔,12x4就是48位,也就是6個字節

在網卡出廠時就確定了, 不能修改. mac 地址通常是唯一的(虛擬機中的 mac 地址不是真實的 mac 地址, 可能會沖突; 也有些網卡支持用戶配置 mac 地址)。

4.7.2? IP地址

inet是ip地址,內網ip/私有ip ip地址中每個取值范圍是0~255,即用一個char類型來表示,四個字節就可以表示一個ip地址,這種表示方案稱為IPv4,以點分隔,叫點分十進制?

IPv6 采用 128 位二進制數表示地址,按每 8 位(1 字節)劃分為 16 個字節,通常用8 組十六進制數表示(每組 4 個十六進制數,對應 16 位二進制,即 2 個字節),組之間用冒號(:)分隔。
例如:2001:0db8:85a3:0000:0000:8a2e:0370:7334?就是一個標準的 IPv6 地址。

IPv6是解決IPv4地址不夠用的情況

一般情況是局域網用MAC地址,廣域網用ip,但ip還可以用于局域網(后面會解釋)

4.7.3?ip地址和mac地址的作用

既然ip和mac都可以表示主機的唯一性,那區別是啥???作用是啥???

ip地址是提供方向目標,方便路徑選擇,比如西游記唐僧從大唐到西天取經

目的mac地址是會變的,是提供可行性,比如上一站女兒國下一站黑風嶺,上一站黑風嶺下一站火焰山

也就是ip提供給你一個方向,mac是沿著這個大致方向在兩個相鄰結點間一直跳,直到終點

ip地址工作在網絡層提供宏觀方向,mac地址工作在數據鏈路層提供微觀執行

五、總結梳理數據如何在網絡當中傳輸?

圖中中間部分代表路由器,兩邊部分代表主機

圈圈代表一個一個的局域網

傳輸層和網絡層是os內置好的,鏈路層是驅動

可以明確未來我們用戶是通過編寫代碼,調用系統調用接口來向下傳達我們的網絡發送任務才交給對方主機

一定是左主機自頂向下進行封裝,然后經過網線轉發到路由器,然后在做自底向上的解包

當經過第一個路由器A時,因為mac地址是在數據鏈路層,到路由器A時已經去掉源mac地址和目的mac地址,然后經過網絡層檢查發現需要到另外一個路由器,所以在A中自頂向下封裝,加上源mac地址和去B的nac地址,到B后依次循環這樣的操作,最后到右主機

最后形成的路徑就會變成這樣

問題:為什么路由器A到B時它是清楚去B,而不是別的路由器???

?原因就在于ip地址宏觀的路徑選擇,ip地址早已經決定了從哪個到哪個在到哪個

mac地址實現的是微觀的,是決定從哪個到哪個這種局部的

?

?

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

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

相關文章

PDF 編輯器:多文件合并 拆分 旋轉 順序隨便調 加水印 密碼鎖 頁碼背景

各位打工人、學生黨們,你們是不是也遇到過這種情況,領導甩來一個PDF讓你改,結果你搗鼓半天,發現這玩意兒根本動不了,簡直想原地爆炸!別急別急,今天就給你們安利一個辦公軟件——PDF編輯器&#…

【軟件基礎學習配置那些事 4-3】3ds Max2026 菜單欄常用命令-----文件、視圖、編輯、工具、組

3ds Max學習的筆記小知識!!!!!!!!后續都會補充添加!!!!(個人的一些學習筆記,如有不對,歡迎訂正&am…

網絡爬蟲的介紹

網絡爬蟲庫網絡爬蟲通俗來講就是使用代碼將HTML網頁的內容下載到本地的過程。爬取網頁主要是為了獲取網中的關鍵信息,例如網頁中的數據、圖片、視頻等。Python語言中提供了多個具有爬蟲功能的庫,下面將具的介紹。urlib庫:是Python自帶的標準庫&#xff0…

C# 編程實戰進階:字符串與字符串數組 (3)

目錄 1、給定一個整數數組 nums,將數組中的元素向右輪轉 k 個位置,其中 k 是非負數。 2、無重復字符的最長字符串 ,給定一個字符串 s 請你找出其中不含有重復字符的最長字符串的長度。 3、給定兩個字符串 s 和 t ,它們只包含小…

Python趣味算法:百錢百雞問題——雙重循環優化與算法效率分析

如何用Python解決中國古代數學難題?本文從暴力枚舉到高效優化,帶你領略算法之美,效率提升100倍! 看在每天堅持分享有趣知識的份上,點個關注吧(づ ̄ 3 ̄)づ 關注是我更新的動力 ̄︶ ̄? ̄︶ ̄?) 作者會分享更多涉及到各種編程語言的有趣知識!(^?^●)?? 目錄 …

JAVA_TWO-初識Java2

1.IDEA管理Java程序的結構2.idea編譯后的class文件在哪在工程out文件夾下。3.idea一些快捷鍵4.導入模塊File→New→Module from Existing Sources → 添加后綴.iml文件5.注釋單行注釋 //多行注釋 /* 注釋內容1注釋內容2 */文檔注釋 /** 注釋內容 */ (文檔注釋內容可…

二、Dify 版本升級教程(LInux-openeuler)

首先,你需要先按照好dify,然后才能升級,本文教程是基與Docker Compose 如果你還沒有安裝,可以看看這個教程。 一、Dify 私有部署、本地安裝教程(LInux-openeuler)_dify1.5版本部署-CSDN博客 安裝完成后&a…

Java 大視界 -- Java 大數據在智能安防門禁系統中的多生物特征融合識別與權限管理(280)

??親愛的朋友們,熱烈歡迎來到 青云交的博客!能與諸位在此相逢,我倍感榮幸。在這飛速更迭的時代,我們都渴望一方心靈凈土,而 我的博客 正是這樣溫暖的所在。這里為你呈上趣味與實用兼具的知識,也期待你毫無保留地分享獨特見解,愿我們于此攜手成長,共赴新程!?? 本博…

【Tools】Ubuntu24.04安裝詳細教程

00. 目錄 文章目錄00. 目錄01. Ubuntu 24.04簡介02. Ubuntu 24.04下載03. Ubuntu 24.04虛擬機創建04. Ubuntu 24.04安裝步驟05. Ubuntu 24.04常用軟件06. 附錄01. Ubuntu 24.04簡介 Ubuntu 24.04 LTS(代號“Noble Numbat”)是Canonical于2024年4月25日發…

linux基礎入門Ubuntu 22.04 系統中添加、刪除和授予用戶 sudo權限

在 Ubuntu 中,sudo 允許授權用戶以 root 級別權限執行任務,即使他們不知道 root 用戶密碼。這對于執行管理任務非常重要,因為它可以避免直接使用 root 用戶,從而減少系統被誤操作的風險,同時在企業生產中由于ubuntu系統…

npm : 無法加載文件 C:\Program Files\nodejs\npm.ps1

問題描述使用git bash, cmd運行npm都可以,但是用Power Shell運行npm,卻報錯:npm : 無法加載文件 C:\Program Files\nodejs\npm.ps1,因為在此系統上禁止運行腳本。有關詳細信息,請參閱 https:/go.microsoft.com/fwlink/…

【面經】實習經歷

文章目錄一、求職準備篇1.1提升技術水平1.1.1學什么?1.1.2怎么學?1.2做項目1.3做簡歷1.4找實習二、求職難度篇找實習難不難?筆試面試三、實習內容篇新人入職 -- 學會看代碼參與小需求實習日常實習到底難不難?四、總結 一、求職準備…

The Missing Semester of Your CS Education 學習筆記以及一些拓展知識(二)

文章目錄The Missing Semester of Your CS Education 學習筆記以及一些拓展知識Bash腳本筆記部分一些在Bash腳本中的常用命令補充常用標準輸入輸出命令常用環境變量(普通變量)控制命令常用系統時間信息獲取命令常用函數執行狀態控制命令常用腳本執行控制命令Bash腳本的創建和運…

教育科技內容平臺的用戶定位與產品方案:從需求到解決方案的精準匹配

教育科技內容平臺的用戶定位與產品方案:從需求到解決方案的精準匹配打造一款成功的內容平臺,核心在于 “懂用戶”—— 明確不同用戶的需求場景、使用目的,才能設計出真正有價值的產品功能。本文以面向互聯網從業者的教育科技內容平臺為例&…

網絡之路16:認識虛擬化環境H3C CAS

正文共:3888 字 54 圖,預估閱讀時間:6 分鐘目錄網絡之路第一章:Windows系統中的網絡0、序言1、Windows系統中的網絡 1.1、桌面中的網卡 1.2、命令行中的網卡 1.3、路由表 1.4、家用路由器網絡之路第二章:認識企業設備2…

Sklearn 機器學習 IRIS數據 理解分類報告

??親愛的技術愛好者們,熱烈歡迎來到 Kant2048 的博客!我是 Thomas Kant,很開心能在CSDN上與你們相遇~?? 本博客的精華專欄: 【自動化測試】 【測試經驗】 【人工智能】 【Python】 Sklearn 機器學習 IRIS 數據分類報告解讀 鳶尾花(Iris)數據集是機器學習入門中最經典…

ni-app 對鴻蒙的支持現狀

自 HBuilderX 4.27 版本開始,uni-app 支持 Harmony Next 平臺的 App 開發,目前僅支持 Vue3 項目編譯到鴻蒙平臺。uni-app x 從 4.61 版本起支持純血鴻蒙,即 Harmony NEXT,其組件、API、CSS 與 Android 和 iOS 基本拉齊。 開發與配…

docker 容器學習

筆者來介紹一下docker 容器的學習1、docker容器背景 docker 里面有兩個概念,鏡像可看成一個類,而容器則是鏡像的一個實例,從這個來看,那么一般鏡像是一個,而容器可以有很多個。 鏡像:帶一堆工具鏈的操作系統…

MongoDB社區版安裝(windows)

下載地址 官網: MongoDB: The World’s Leading Modern Database | MongoDB 8.0.11版本下載地址: https://fastdl.mongodb.org/windows/mongodb-windows-x86_64-8.0.11.zip 安裝 解壓安裝包 解壓結果目錄如下: bin目錄介紹 文件名稱作用…

Git上傳與下載GitHub倉庫

新建GitHub倉庫 … 本地上傳GitHub 第一步:git add .第二步:git commit -m your content第三步:git push xxx main或者git push xxx master 對于第三步,首先看自己建立的倉庫是master分支,還是main分支。以前都是默認m…