目錄
前言
一. 計算機網絡背景
1.1 發展歷程
1.1.1 獨立模式?
1.1.2 網絡互聯
1.1.3 局域網LAN?
1.1.4 廣域網WAN
1.2 總結
二. ?"協議"
2.1 什么是協議
2.2 網絡協議的理解
2.3?網絡協議的分層結構
三.?OSI七層模型(理論標準)
四. TCP/IP五層模型(工程標準)
五.?OS和網絡協議棧的關系
六. 網絡中的地址管理?
6.1 認識IP地址
6.1.1 IP地址的特點
6.1.2 IP地址的兩種版本
6.1.3 公有IP地址與私有IP地址
6.1.4 動態IP地址與靜態IP地址
6.1.5 IP地址的作用
6.2?認識MAC地址
6.2.1?MAC地址介紹
6.2.2?MAC地址的特點
6.2.3?MAC地址示例
6.2.4?MAC地址與IP地址的區別
6.3 再度理解ip和mac
七.?網絡傳輸基本流程
7.1?兩種形式的流程圖?
7.1.1 同網段傳輸?
7.1.2 跨網絡傳輸
7.2 封裝和解包/分用
7.3 以太網通信
?7.4 網絡通信的基本脈絡圖
八. 總結
前言
????????在當今的數字化世界中,網絡已成為計算機系統和應用的核心組成部分。Linux,作為一個開放源代碼的操作系統,在服務器、嵌入式設備、以及開發環境中被廣泛使用,而其強大的網絡能力使其在網絡管理和網絡編程領域占據了重要地位。
????????Linux 網絡基礎知識的掌握,不僅有助于理解操作系統如何管理網絡資源,還能夠幫助開發者、系統管理員和網絡工程師更高效地調試、配置和優化網絡服務。在這篇博客中,我們將一起探索 Linux 網絡的基本概念、工具和配置方法,幫助你從零開始搭建和管理自己的網絡環境。
????????無論你是初學者還是已有一定基礎的讀者,本文都將為你提供清晰的概念講解和實用的操作技巧。讓我們一起開始這段關于 Linux 網絡基礎的探索之旅吧!
一. 計算機網絡背景
1.1 發展歷程
計算機網絡的發展可以追溯到20世紀60年代。當時,美國國防部的高級研究計劃署(ARPA)啟動了一個名為ARPANET的研究項目,旨在將分布在全美的計算機連接起來,實現資源共享和信息交流。ARPANET于1969年建成,成為了世界上第一個計算機網絡
在隨后的幾十年里,計算機網絡經歷了從軍用到民用、從局域網到廣域網的快速發展。20世紀70年代,隨著計算機和網絡技術的不斷進步,計算機網絡開始向商業化和民用化方向發展。1974年,ARPANET采用了TCP/IP協議,這成為了今天互聯網的基礎。到了80年代,局域網(LAN)和廣域網(WAN)開始普及,TCP/IP協議也成為互聯網的標準協議,標志著互聯網的正式建立
1.1.1 獨立模式?
點對點通信 的模式。每個計算機與其他計算機獨立互聯,通常用于簡單的網絡連接。圖中描述了多個計算機之間通過業務端口進行數據交換的情形。表示計算機正在處理不同的業務,并且能夠在處理完一個任務后,跳轉到下一個任務。?
????????在這種架構中,每臺計算機的資源(如數據、計算能力)都無法共享,這在小型或非常簡單的環境下是足夠的。
????????隨著業務需求的增長和計算任務的復雜化,多個計算機之間需要共享數據和資源。這時,?共享服務器結構?應運而生。每臺終端計算機通過連接一個公共的服務器來共享數據、存儲和計算資源。這種架構允許更多計算機加入網絡,同時確保所有計算機都可以訪問共享資源(如數據庫、文件和應用程序),從而提高了網絡的管理性和資源利用率。
1.1.2 網絡互聯
共享服務器的網絡結構。每個終端設備(如計算機)使用獨立的計算機進行工作,但它們通過連接到一個共同的服務器來共享數據。通過這種結構,業務之間可以隨時切換和共享資源,通常用于資源共享和數據集中管理的場景。
????????隨著網絡規模的擴大和多設備之間的數據交換頻繁,第二張圖的 共享服務器 模式開始出現性能瓶頸,特別是在數據傳輸速率和網絡管理方面。每個計算機通過單一服務器來共享資源,可能導致 服務器成為瓶頸,影響整體網絡性能。
????????為了提高網絡效率,引入了 交換機和路由器。這些設備能有效地管理網絡流量,減少單一服務器的壓力,提供更高的帶寬和數據流量轉發能力。通過使用交換機,計算機可以直接與交換機進行數據交換,減少了多設備間的數據傳輸延遲。
????????此外,路由器的引入為網絡提供了更好的 拓撲結構,能夠靈活地連接不同子網,提高了網絡的擴展性和管理性。
1.1.3 局域網LAN?
局部網絡(LAN)結構 的一個發展階段,使用了 交換機 和 路由器 設備進行連接。多個計算機和交換機通過路由器連接,從而形成了一個小型的局部網絡。在這種結構中,各設備之間的通信更加高效,特別是在局域網絡中,交換機和路由器的使用大大提高了數據傳輸的速度和效率。
????????隨著網絡應用的普及,局部網絡的規模逐漸無法滿足跨地域、跨城市甚至跨國家的需求。計算機和服務器不再僅僅存在于一個物理位置,而是分布在不同的城市和國家之間。此時,需要通過 路由器 和 交換機 連接不同的局部網絡,形成一個更大范圍的 廣域網(WAN)。
????????跨地域連接,通過不同的 LAN(局部網絡)通過路由器和交換機相連接,形成一個全球范圍的計算機網絡。這種結構適用于需要多個地理位置之間共享數據、應用和服務的情況。
????????在這種結構下,網絡不僅要提供高效的數據交換能力,還要滿足安全性、數據冗余、容錯性等復雜要求,以應對企業在全球范圍內的運營需求。
1.1.4 廣域網WAN
廣域網(WAN)架構。圖中的多個局部網絡(如大阪、東京、名古屋等)通過路由器和交換機相互連接,形成一個跨越多個城市的大型網絡。這種結構展示了網絡如何連接不同的地理位置和數據中心,代表了較為復雜的網絡拓撲。
1.2 總結
????????計算機網絡在現代社會中發揮著舉足輕重的作用。它打破了數據的孤立狀態,使得不同計算機之間能夠高效地交換信息和共享資源。無論是工作、學習還是生活,計算機網絡都已經成為人們不可或缺的一部分。它讓人們能夠隨時隨地訪問互聯網,獲取各種信息和服務,極大地提高了工作效率和生活質量?
二. ?"協議"
2.1 什么是協議
????????協議(Protocol)是一種約定,是指一組用于規定計算機之間進行通信時,如何傳輸數據和處理信息的規則和約定。協議是網絡通信的基礎,它定義了數據傳輸、錯誤檢測、數據壓縮、數據加密等多個方面的細節,以確保不同設備能夠順利、高效地進行通信。
????????生活中的"協議":比如你是南方的,但是你考上了北方的大學,你為了給家里節省話費,你就跟家人做個約定,如果電話響了1聲就是報平安,2聲就是記得打生活費,3聲就是有事情需要當面聊…… 而這種基于約定某種信號的決策,就是協議。
計算機之間的傳輸媒介是光信號和電信號. 通過 "頻率" 和 "強弱" 來表示 0 和 1 這樣的信息.要想傳遞各種不同的信息, 就需要約定好雙方的數據格式.
不同的人會規定不同的協議,比如去上學,就是上學協議,去上班就是上班的協議,該結婚了,也有結婚協議。協議是用來解決通訊問題的。
讀到這里,你肯定也會有一些疑惑:
1. 你怎么保證你的數據能準確的到達下一個設備?- 數據鏈路層的協議解決,會有各種各樣的字段表示這個數據就是發給你的
2. 如何定位主機的問題,比如說你想給你爸媽發消息,那為什么就能準確發給你爸媽呢,而不發給你的弟妹,老師呢?- IP協議,協議就要涵蓋報文,原IP是誰,目的IP是誰,主機都有自己的IP地址,沒有IP地址主機是通信不了的。
3. 長距離傳輸的數據丟失了怎么辦?-?TCP協議
4. 如何處理發來的數據??- https http ftp smtp...應用層協議
5. 所以每層都要有自己的協議?
為什么會有上述的問題發生呢?歸根結底就是單純因為傳輸距離變長了,就會考慮到了各種問題了
- 當我們郵寄快遞的時候需要填寫快遞單,當你拿到了一個空快遞單的時候 你是能認識的,對方也認識,這就是給單子做了約定。然后你就知道要填地址,姓名,手機號...了
- 當收快遞的時候,快遞員給你快遞的時候,你的快遞盒子上面貼的有紙(快遞單),你要根據這個盒子上的快遞單來確實這個東西是否發給我的。所以我們收快遞不止收到快遞本身,還收到更多的信息字段(快遞單),這個信息字段就是我們規定的協議,更準確的是叫做報頭。由此可知,協議的表現形式就是結構體對象!(雙方能夠認識是因為做了一個規范,網絡使用的是TCP,IP...,就意味著源代碼層面上都是約定好的,這樣A主機定義的結構體對象,B主機就也能知道啥意思了)!
解決了上面的問題,我們再想一個更深層的問題:
- 計算機生產廠商有很多;?
- 計算機操作系統, 也有很多;?
- 計算機網絡硬件設備, 還是有很多;?
- 如何讓這些不同廠商之間生產的計算機能夠相互順暢的通信? 就需要有人站出來, 約定一個共同的標準, 大家都來遵守, 這就是 網絡協議;
2.2 網絡協議的理解
網絡協議,簡稱為協議,是網絡通信(即網絡數據傳輸)經過的所有網絡設備都必須共同遵從的一組約定、規則。這些規則詳細規定了如何建立連接、如何互相識別、如何發送和接收數據等
網絡協議是兩臺計算機或設備之間進行通信時遵循的一組規則。這些規則決定了數據如何在網絡中傳輸、如何格式化、如何保證數據的可靠性、如何進行錯誤檢測等。可以類比為一種“語言”,它使得不同設備之間能夠理解彼此并交換信息。
然而,隨著網絡環境的復雜性增加,單一的協議已經無法滿足各種需求。比如,我們需要不同協議來處理不同的功能:有些協議關注數據的傳輸可靠性,有些則處理數據如何在網絡中路由等等。
僅僅依賴一個單一的協議來處理所有的通信需求會非常復雜和低效。不同類型的設備、不同的網絡技術、不同的需求,都可能需要不同的協議來分別解決。比如,物理層需要協議來定義硬件設備的連接方式,而應用層需要協議來定義如何格式化數據。這種復雜性促使我們需要分層來把通信任務分成多個相互獨立、負責不同功能的模塊。
2.3?網絡協議的分層結構
網絡協議的分層不僅讓網絡通信更加靈活、模塊化、可維護,還確保了網絡的標準化、可擴展性和易于管理。通過分層,我們能夠清晰地理解和解決網絡中的各個層次問題,提升了網絡的穩定性、可靠性與性能。同時,這也為不同技術和設備間的互操作性提供了基礎,使得全球的設備能夠通過統一的協議進行有效的通信。
這張圖通過展示不同語言和通信設備之間的協議協作,強調了協議分層的重要性。圖中體現了在通信中,語言協議和通信設備協議可以獨立變化而不相互影響。無論是切換語言(如漢語到英語)還是更換設備(如從有線電話到無線電話),協議分層確保了通信的靈活性和兼容性。語言協議處理語言層面的轉換,而設備協議則負責設備之間的連接與數據傳輸,從而實現了不同設備和語言用戶之間的有效溝通。
真實的情況是人在和電話溝通,在邏輯上,是人與人溝通,認為AC是在同一層的。層和層直接是高內聚、低耦合的
層狀結構的好處:通過高內聚、低耦合的,好維護。一層出現問題,只會影響這一層本身,不會影響上一層,比如說電話機層壞了,只需要把電話機修好了就能恢復正常了,甚至把一層干掉,換成類似的(電話機換成無線電),照樣不影響上一層
這時候我們肯定會有疑惑?我們該怎么分層呢
三.?OSI七層模型(理論標準)
- OSI(Open?System?Interconnection,開放系統互連)七層網絡模型稱為開放式系統互聯參考模型,是一個邏輯上的定義和規范;
- 把網絡從邏輯上分為了7層. 每一層都有相關、相對應的物理設備,比如路由器,交換機;
- OSI?七層模型是一種框架性的設計方法,其最主要的功能使就是幫助不同類型的主機實現數據傳輸;
- 它的最大優點是將服務、接口和協議這三個概念明確地區分開來,概念清楚,理論也比較完整. 通過七個層次化的結構模型使不同的系統不同的網絡之間實現可靠的通訊;
- 但是, 它既復雜又不實用; 所以我們按照TCP/IP四層模型來講解.
對于學軟件的咱們來說,物理層可以暫不關心。學軟件只需要先考慮五(四)層協議
四. TCP/IP五層模型(工程標準)
TCP/IP四層(或五層)模型:將OSI七層模型中的表示層、會話層合并為應用層,從而形成了四層(或五層)結構。從高到低依次為應用層、傳輸層、網絡層、數據鏈路層和物理層(五層模型還包括一個會話層)。TCP/IP協議簇就是基于這種分層結構設計的
OSI七層模型理論是好的,但是工程角度既復雜又不實用,所以我們把他變成了5層(其實7層都是需要的,只不過把上三層壓縮成了一層)? ?名字叫做TCP/IP是因為這兩層最重要!!
物理層(Physical Layer):
- 功能:物理層負責在物理介質(如電纜、光纖、無線電波等)上傳輸數據的比特流。它定義了硬件設備之間的電氣、機械、功能等接口標準,確保比特在網絡中能夠被傳輸。
- 設備:網卡、集線器、交換機(物理設備)、路由器等。
數據鏈路層(Data Link Layer):
- 功能:數據鏈路層負責在物理鏈路上可靠地傳輸數據幀,解決數據傳輸中的錯誤檢測、流量控制和幀的封裝與解封裝等問題。它使用MAC地址來標識設備,確保在相鄰設備之間進行通信。
- 設備:網卡、交換機(數據鏈路層設備)。
- 協議:Ethernet(以太網)、PPP(點對點協議)等。
網絡層(Network Layer):
- 功能:網絡層負責將數據包從源設備路由到目的設備,處理設備間的尋址與路由選擇。它通過IP地址來標識設備,并通過路由協議確保數據能夠跨越多個網絡進行傳輸。
- 設備:路由器。
- 協議:IP(Internet Protocol)、ICMP(Internet Control Message Protocol)等。
傳輸層(Transport Layer):
- 功能:傳輸層負責提供端到端的通信,確保數據的可靠性和完整性。它為應用程序提供不同的傳輸服務,包括面向連接的服務(TCP)和無連接的服務(UDP)。
- 協議:TCP(Transmission Control Protocol)、UDP(User Datagram Protocol)等。
應用層(Application Layer):
- 功能:應用層直接與用戶的應用程序交互,提供網絡服務,如電子郵件、文件傳輸、網頁瀏覽等。它處理數據的格式化、協議的實現和數據的交互。
- 協議:HTTP(Hypertext Transfer Protocol)、FTP(File Transfer Protocol)、SMTP(Simple Mail Transfer Protocol)、DNS(Domain Name System)等。
在整個網絡通信里,站在操作系統層面,最重要的兩層協議是傳輸層和網絡層,傳輸層最具代表性的協議是TCP,網絡層最具代表性的協議是IP
名字叫做TCP/IP是因為這兩層最重要!!
了解了那么多,我們學習這些和之前學習OS的有什么關系呢?
五.?OS和網絡協議棧的關系
上述圖片說明,傳輸層,網絡層都是屬于Linux內核,這也就是我們之前為什么要深入了解內存,文件,進程,驅動等等?
這其實就相當于一臺主機,而兩臺主機之間做交互比如得通過網卡(硬件),所以發送方要通過用戶層貫穿協議棧到物理層,而接收方又要從物理層貫穿協議棧到用戶層?
由上述可知,網絡通信的本質就是貫穿網絡協議棧的過程!!?
六. 網絡中的地址管理?
6.1 認識IP地址
IP地址(Internet Protocol Address,互聯網協議地址) 是用于在計算機網絡中標識每個設備的唯一地址。IP地址是互聯網通信和局域網內設備間通信的基礎,通過IP地址,網絡設備能夠定位并與其他設備進行通信。
6.1.1 IP地址的特點
唯一性:
每個連接到網絡的設備都會分配一個唯一的IP地址,用于識別該設備。IP地址保證了設備在網絡中的唯一標識。
層次結構:
IP地址屬于網絡層(OSI模型中的第三層),其主要作用是為不同的網絡設備提供通信路徑。
6.1.2 IP地址的兩種版本
IP協議有兩個版本, IPv4和IPv6. 我們整個的課程, 凡是提到IP協議, 沒有特殊說明的, 默認都是指IPv4
-
IPv4(互聯網協議版本4):
- 長度:32位(4字節),通常表示為4個十進制數(每個數的范圍是0到255),并通過“點分十進制”表示。例如:
192.168.1.1
。 - 地址空間:IPv4支持大約43億個地址,但由于互聯網設備的增長,IPv4地址已經開始枯竭。但仍是主流地址
- 示例:
192.168.0.1
- 長度:32位(4字節),通常表示為4個十進制數(每個數的范圍是0到255),并通過“點分十進制”表示。例如:
-
IPv6(互聯網協議版本6):
- 長度:128位(16字節),通常表示為8組16進制數,每組由4個十六進制字符組成,使用冒號分隔。例如:
2001:0db8:85a3:0000:0000:8a2e:0370:7334
。 - 地址空間:IPv6擁有極其龐大的地址空間,能夠支持幾乎無限量的設備連接。
- 示例:
2001:0db8:85a3:0000:0000:8a2e:0370:7334
?
- 長度:128位(16字節),通常表示為8組16進制數,每組由4個十六進制字符組成,使用冒號分隔。例如:
6.1.3 公有IP地址與私有IP地址
-
公有IP地址:
是通過互聯網服務提供商(ISP)分配的,能夠在全球范圍內唯一標識設備。通常用于與外部互聯網通信。示例:8.8.8.8
(Google的DNS服務器)。 -
私有IP地址:
用于局域網(LAN)內部,不會直接在互聯網上路由。私有IP地址范圍通常用于家庭、公司等內部網絡。常見的私有IP地址段:192.168.0.0
到192.168.255.255
172.16.0.0
到172.31.255.255
10.0.0.0
到10.255.255.255
- 私有IP地址通過 NAT(網絡地址轉換) 轉換成公有IP地址,以實現內外網通信。
6.1.4 動態IP地址與靜態IP地址
-
動態IP地址:
由DHCP(動態主機配置協議)服務器動態分配,每次連接網絡時可能會分配不同的IP地址。通常用于家庭網絡和企業中大多數設備。 -
靜態IP地址:
固定分配給某個設備,通常用于需要持續、固定連接的設備,如服務器、網絡打印機等。
6.1.5 IP地址的作用
- 設備識別:IP地址用于標識網絡中每個設備,確保數據能夠準確傳輸到目標設備。
- 數據路由:路由器使用IP地址來決定如何將數據包從一個網絡路由到另一個網絡。
- 網絡通信:設備通過IP地址進行通信,不同網絡中的設備通過IP協議進行交互。
IP地址的意義:路徑選擇 —> 從哪里來,到哪里去,IP地址是永遠不變的
6.2?認識MAC地址
6.2.1?MAC地址介紹
MAC地址(媒體訪問控制地址,Media Access Control Address) 是一種硬件地址,用于在局域網(LAN)中唯一標識網絡設備。它是網絡接口卡(NIC)或其他網絡設備(如交換機、路由器等)硬件層面的標識符,用于確保數據能夠準確地傳送到目標設備。
6.2.2?MAC地址的特點
唯一性:每個設備的MAC地址在理論上是唯一的,通常由設備的制造商在生產過程中分配,保證同一品牌和型號的設備之間不重復。
長度和格式:
- MAC地址通常由 48位(6字節)二進制數表示,通常用 16進制 數字表示。
- 常見的表示方式為
XX:XX:XX:XX:XX:XX
或XX-XX-XX-XX-XX-XX
,其中每個“XX”表示兩個十六進制數。例如,00:14:22:01:23:45
。分配規則:
- MAC地址的前 3 字節(即前 24 位)是由國際標準化組織(IEEE)分配給制造商的,稱為 組織唯一標識符(OUI,Organizationally Unique Identifier)。這部分標識了設備的生產商。
- 后 3 字節(24位)由設備制造商分配,用于標識設備的唯一性。
作用:
- 數據鏈路層標識:MAC地址是在數據鏈路層(OSI模型中的第二層)使用的,用來唯一標識網絡設備。在局域網中,數據包通過MAC地址在設備之間傳輸。
- 物理地址:MAC地址被視為物理地址,因為它與設備的硬件相關,通常存儲在網絡接口卡(NIC)或其他網絡設備的固件中。
功能:
- 設備識別:當設備發送數據時,它會將目標設備的MAC地址寫入數據幀的目標地址字段,以便網絡中的交換機和其他設備將數據包轉發到正確的目標設備。
- 局域網通信:在局域網中,設備通過MAC地址進行直接通信,不依賴于IP地址。MAC地址在數據鏈路層起到重要作用。
靜態與動態:
- 靜態MAC地址:通常是硬件預設的,設備的MAC地址通常是不變的,除非手動修改。
- 動態MAC地址:某些情況下,設備可以通過軟件修改其MAC地址,這在某些特殊情況下(如網絡調試或隱私保護)可能會有用。
6.2.3?MAC地址示例
- 典型的MAC地址:
00:14:22:01:23:45
。00:14:22
是廠商的OUI,標識設備的生產商。01:23:45
是設備的唯一標識符。
6.2.4?MAC地址與IP地址的區別
- MAC地址 是硬件地址,在局域網中用于設備識別。它是固定的、唯一的,通常不隨網絡變化而變化。
- IP地址 是網絡層的地址,用于設備在網絡中的定位。IP地址是可以更改的,且在不同的網絡環境中可能會發生變化。
MAC地址的意義:上一站從哪里來,下一站到哪里去 —> 當下目標,MAC地址一直在變?
6.3 再度理解ip和mac
mac地址是保證局域網中主機的唯一性
ip地址是保證主機全網的唯一性
可是他們的具體意義是什么呢,下面來講個故事:
假設我們要自駕從黑龍江到杭州去玩,我們始終知道我們從哪來且要到哪去(源和目一直不變的,其實就是ip地址),但是我們的這個過程有很多省份,所以我們需要做路徑規劃,上一站從哪來,下一站又到哪里是會(源和目會一直變化,依據是我接下去要去哪里,其實就是mac地址)
IP地址,尤其是目的IP,一般是不會改變的,協助我們進行路徑選擇
Mac地址,出局域網后源和目都要被丟棄,讓路由器重新封裝
在Linux可以用ifconfig命令查看自己主機的mac和ip?
七.?網絡傳輸基本流程
7.1?兩種形式的流程圖?
7.1.1 同網段傳輸?
同一個網段內的兩臺主機進行文件傳輸.
以太網通常使用交換機來實現設備之間的通信。交換機通過 MAC 地址表來轉發數據幀,確保數據正確地發送到目標設備。?
7.1.2 跨網絡傳輸
跨網段的主機的文件傳輸. 數據從一臺計算機到另一臺計算機傳輸過程中要經過一個或多個路由器.?
令牌機制:令牌環網絡的傳輸方式依賴于“令牌”機制。令牌是一個特殊的數據包,網絡中的設備必須先獲得令牌才能發送數據。令牌會在網絡中循環傳遞,避免了數據沖突。
數據傳輸控制:在令牌環網絡中,數據只有在令牌到達時才能發送,這樣避免了數據沖突和多個設備同時發送數據的問題,提供了一種有序的傳輸機制。?
故障容錯:雖然令牌環網絡的拓撲結構是環形的,但如果某個設備或連接發生故障,令牌環可以通過檢測斷開的部分進行修復(例如通過跳過損壞的部分)。然而,環形結構的一個缺點是,如果環路中的任意一點發生故障,整個網絡可能會受到影響,盡管現代網絡設備能夠通過冗余路徑處理這一問題。
令牌環網絡曾經在1980s到1990s非常流行,尤其是在IBM的LAN環境中,但隨著以太網技術的普及,令牌環逐漸被取代。
?
過程分析:?
- 首先是我們的信息到達鏈路層的時候,我們的鏈路層會看看我們的當前ip地址和目標ip地址是不是跨網了,如果跨網了就會通過包裝mac地址的報文傳送給自己局域網中的路由器,mac地址的目的就是將報文從局域網內部的a主機發送到b主機,只不過需要跨網的時候會指定發給路由器
- 路由器不僅有以太網的驅動、令牌環的驅動、無線wlan……的驅動,所以他會幫我們直接解包老的報頭換上新的報頭,這樣底層的差異化就被屏蔽了,而上三層是保持一致的。
- 這也是為什么無論是手機還是電腦都可以入網,只要路由器能夠提供他們不同的mac幀的報頭,就可以把底層的差異全部屏蔽掉!?
結論:
- 局域網通信的本質就是把數據交給路由器
- IP協議屏蔽了底層網絡的差異化,靠的就是工作在IP的路由器!!
- IP實現了全球主機的軟件虛擬層,一切皆是IP報文?
7.2 封裝和解包/分用
- 不同的協議層對數據包有不同的稱謂,在傳輸層叫做段(segment),在網絡層叫做數據報 (datagram),在鏈路層叫做幀(frame)
- 應用層數據通過協議棧發到網絡上時,每層協議都要加上一個數據首部(header),稱為封裝(Encapsulation)
- 首部信息中包含了一些類似于首部有多長, 載荷(payload)有多長, 上層協議是什么等信息
- 數據封裝成幀后發到傳輸介質上,到達目的主機后每層協議再剝掉相應的首部, 根據首部中的 “上層協議字段” 將數據交給對應的上層協議處理
下圖為數據封裝和解包的過程?
(1)用戶層:需要版本號
因為很可能對方雖然跟你使用的是同一個軟件,但是版本并不一定一樣(有的人可能并不會經常更新),而版本不同的話可能功能也不一樣,所以我們需要一個能夠標識版本的字段,來讓另一方做出區分從而根據不同的版本推送不同的信息!!
(2) 傳輸層:需要序號
同時傳輸的時候,可能我們說話的順序會導致不同的意思,所以我們消息傳輸的可靠性其中之一必須得保證有序!!所以我們傳輸信息的時候需要有序號信息。
(3) 網絡層:需要知道當前ip和目標ip
信息在傳輸的時候總得知道自己從哪來,且該去往哪里吧,這樣對方在接受的時候才能知道當前的信息是發給自己的。
(4) 鏈路層:需要有當前mac地址和目標mac地址
這樣才能知道我當前的局域網內有那么多主機,我怎么知道要去往哪個主機呢?? mac地址是每個網卡出廠的一個唯一標識,機器啟動的時候OS會讀取網卡的屬性信息就可以獲得,他存在的意義就是保證在局域網內具有唯一性!!
每一層都會需要不同的協議報頭!?層層往下其實就是對有效載荷進行封裝,而當傳送給另一端的時候,又會自下而上貫穿協議棧,每一層都之后認得自己的那部分報文信息,識別之后丟棄自己的那部分再往上傳遞(如何得知交給哪一層 是通過分用決定的),直到用戶層就可以變成我們需要的有效信息了,所以層層往上就是在進行解包!??
最后再拓展兩個思考問題:
問題1:把一碗水倒入桶里,可是將來讓你必須要把水分開,結果是分不開了。
所以幾乎任何層的協議,都要提供一種能力,將報頭和有效載荷分離的能力,即在封裝的時候,要考慮未來怎么更好的解包。
問題2:實際上,整個網絡協議棧想一個倒的多叉樹,所以網絡層不止有IP,還有ICMP IGMP..., 當自下而上貫穿協議的時候,抬頭一看,發現每一層都有很多協議
所以還要有個能力,即幾乎任何層的協議, 都要在報頭中提供,決定將自己的有效載荷交付給上層哪一個協議的能力,把這種能力,叫做分用的過程
有了這兩個問題和答案,我們才能更加理解封裝和解包,才不會困惑
7.3 以太網通信
思考一下,多臺主機是在以太網怎么通信的?
或者說,一個主機,怎么把數據交給另一臺主機呢?
下面先講一個故事:老師在班級上課的時候,叫張三站起來交作業,此時其實其他同學也聽到了,但是最后只有張三理會了。
本質上:大家都收到了這個聲音(報文),大家都把這個聲音提取了信息(報頭和有效載荷),并且進行了對比(分離)。提取到報頭叫的是張三,把自己的名字和張三做對比,在對比報文信息的時候發現該報文不是自己的于是就丟棄了!
注意:當班級里的同學很吵鬧的時候,可能張三就無法聽到老師在叫他了。因為一些垃圾的噪音會把正確信息給頂掉。
????????再比如:你正在打游戲,另一個人在和你連接一個局域網下載視頻,那么就會擠壓局域網帶寬,進而和你的數據發生碰撞,然后打游戲就會卡頓
????????所有發送的信息是有可能被其他非目標主機捕捉的,只不過一般情況下都會被丟棄,但是如果有人刻意為之的話還是可以被上層看到的,所以我們一般來說要對數據進行一定的加密保護,如果沒有任何保護就發送數據就可能會泄漏信息!!?
以太網通信的原理:
因為所有主機都可能會發送信息,所以有可能會發生數據碰撞問題!!尤其是如果有人不斷往局域網發送垃圾數據的時候。?
以太網通信的結論:
- 發送主機都要執行碰撞避免算法,他的算法原理就是每個主機在發送的時候都會等上隨機的延遲時間,相當于是錯峰發送!!
- 局域網越大碰撞概率就越大,所以一般不建議太大,否則會影響傳輸效率,但是如果實在需要這種場景,就需要用交換機來劃分碰撞域!!
- 局域網是屬于多臺主機的共享資源,因為任何時刻都只能有一個主機發送消息,所以我們必須保證他的互斥性,只不過不是用加鎖完成的,以太網是用碰撞避免算法來控制每個時刻都只有一個主機在發送信息,而還有一種令牌環網他所使用的方法就是通過持有某種標識(有點像令牌)才能具備發送的能力,且該資源只有一份!
?7.4 網絡通信的基本脈絡圖
八. 總結
通過本章內容,我們系統地了解了計算機網絡的基礎知識,涵蓋了從網絡發展的歷程到協議的定義與分類,再到OSI七層模型和TCP/IP五層模型的具體應用。同時,我們深入探討了網絡中的地址管理,介紹了IP地址與MAC地址的特點、作用以及它們之間的區別。這些內容為我們提供了理解網絡架構與通信過程的堅實基礎。
本章不僅幫助我們掌握了網絡的基礎理論,也為接下來的深入學習和實踐提供了必要的框架。接下來,我們將進一步Linux網絡編程套接字,UDP與TCP等更為復雜的課題,繼續深化對計算機網絡技術的理解和應用。