【Linux】網絡新手村

歡迎來到?破曉的歷程的 博客

??不負時光,不負己??

引言
今天,我們就開始學習Linux網絡相關的內容。這篇博客作為Linux網絡板塊的第一篇博客看,我們首先要帶著大家明白Linux網絡的一些名詞的概念,為之后的學習掃清障礙。然后我們就開始學習套接字相關的內容。說干就干,那我們就開始吧。

走進網絡

我們生活在一些互聯網的時代,這些網絡的名詞大家認識嗎?

局域網和廣域網

局域網(Local Area Network,簡稱LAN)和廣域網(Wide Area Network,簡稱WAN)是計算機網絡中的兩種主要類型,它們在覆蓋范圍、連接方式、應用場景等方面存在顯著差異。

局域網(LAN)

定義與特點

  • 局域網是指在某一區域內由多臺計算機互聯成的計算機組,通常覆蓋方圓幾千米以內的范圍。
  • 它是在較小的地理范圍內(如一個學校、工廠、機關或家庭內)實現計算機設備連接和數據共享的網絡。
  • 局域網可以是封閉型的,由辦公室內的兩臺計算機組成,也可以是一個公司內包含上千臺計算機的大型網絡。
  • 局域網具有高效、可靠且安全的通信環境,能夠滿足用戶之間的信息傳輸和資源共享需求。

主要功能

  • 文件管理、應用軟件共享、打印機共享等。
  • 工作組內的日程安排、電子郵件和傳真通信服務。

組成與連接

  • 局域網通常包括一組相互連接的計算機、服務器、網絡設備和通信媒介等。
  • 這些設備可以通過有線或無線方式進行連接,并通過網絡協議進行通信和數據傳輸。

### 廣域網(WAN)

定義與特點

  • 廣域網是一種連接不同地區局域網或城域網計算機通信的遠程網,通常跨接很大的物理范圍,從幾十公里到幾千公里不等。
  • 它能夠連接多個地區、城市、國家甚至橫跨幾個洲,提供遠距離通信服務,形成國際性的遠程網絡。
  • 廣域網并不等同于互聯網,但互聯網是廣域網的一種重要形式。

主要功能

  • 連接分布在不同地區的局域網或計算機系統,實現資源共享和遠程通信。
  • 提供世界范圍的數據通信服務。

組成與連接

  • 廣域網主要由通信子網和資源子網組成。
  • 通信子網負責數據傳輸和交換,可以利用公用分組交換網、衛星通信網和無線分組交換網等技術實現。
  • 資源子網則包含各種計算機系統和數據資源,通過通信子網實現互連和資源共享。

總結

所謂 “局域網” 和 “廣域網” 只是一個相對的概念. 比如, 我們有 “天朝特色” 的廣域網, 也可以看做一個比較大的局域網
局域網和廣域網是計算機網絡中的兩種重要類型,它們在覆蓋范圍、連接方式、應用場景等方面各具特色。局域網主要適用于較小范圍內的計算機互聯和數據共享,而廣域網則能夠連接不同地區的計算機系統,實現遠距離通信和資源共享。在實際應用中,局域網和廣域網往往相互結合,共同構建更加復雜和龐大的計算機網絡系統。

協議

在未來的學習網絡過程中,我們會經常聽到一個名詞——協議。大家日常聽到的協議的協議就是約定,但在網絡中協議的概念并不是如此。
在之前電話還不是很普及的時代,電話費很貴。張三要到外地上大學,在臨行前張三和父親約定:以后我給你打電話,電話響一聲表示我很好,你不用擔心我,不用接;電話響兩聲表示我沒錢了,需要你給我打錢,也不用接;電話響了三聲就代表我有事和你說,這時候你再接電話。就這樣,通過響鈴聲,不用接的方式,不僅傳達了意思,還不用花電話費,一舉兩得。這就是協議,協議的本質是一種規則。
李四在京東上買了一個杯子,兩天就到了李四的手中。難道是商家親自把杯子給李四送過來嗎?當然不是。商家把杯子給樓下的順豐小哥,然后順豐小哥給快遞貼上標簽,標簽上寫著收貨人的聯系方式、住址、姓名等等。然后這個快遞就上路了,輾轉多個地方,來到了李四也就是收貨人的手中,但李四不僅僅收到了杯子,還有一個標簽。其中,這個標簽就是順豐公司內部給快遞定的信息表,凡事順豐內部的工作人員都可以看懂這個信息表,然后快遞每到一處中轉站,工作人員就會根據標簽上的信息對快遞進行分揀,然后快捷,高效的把快遞送到指定的收貨人手中。這就是順豐公司的協議。如果沒有這個協議的存在,快遞員就不知道這個快遞該運向哪?交給誰。而這些快遞上貼的標簽就是報頭。
這個觀點遷移到計算機中同樣適用。我們的計算機是有不同的硬件阻成的。這些硬件之間是通過總線進行連接的。為了讓這些硬件協同高效的運轉起來,與此同時對數據進行處理,離不了協議和報頭。

協議的本質就是一種規則,大家都可以看懂的規則。協議=報頭+有效數據。

網絡分層

假如,你和你的好朋友打電話,你們是在直接通信嗎?這個問題看似廢話,其實不是的。
你們并沒有直接通話。你們要想通話,必須使用相同的語言,所以就有語言協議。你們的聲音分別交給了自己的電話,然后電話機之間通過電話機協議傳輸數據,這才導致你么聽見了彼此的聲音。如此有什么好處呢?假如你們使用英語溝通,電話機協議是不需要改變的。所以這就實現了解耦。關于解耦的更多話題,我們以后再談。
假如:你騎自行車從北京到四川去玩,毫無疑問,中間會經過很多地方。首先,你得有能力從一個地方來到另一個地方。其次從北京出發可以到達很多地方,我們要有路徑選擇的能力。并且從北京到四川,我們極有可能會走錯方向,走錯方向的時候,我們要能力修正方向。最后,你去四川不是目的,你的目的是到四川去玩。

OSI七層模型

包括以下七個層次,每個層次都具有獨特的職責和功能:

  • 物理層 (Physical Layer)
  • 數據鏈路層 (Data Link Layer)
  • 網絡層 (Network Layer)
  • 傳輸層 (Transport Layer)
  • 會話層 (Session Layer)
  • 表示層 (Presentation Layer)
  • 應用層 (Application Layer)

每個層次都構建在前一層次的基礎上,向上提供更高層次的服務,向下依賴更低層次的服務。以下是對每個層次的簡要介紹:

物理層: 負責在物理媒介上傳輸原始比特流,包括電纜、光纖等。它主要關注硬件細節和傳輸介質的特性。

數據鏈路層: 負責將比特流組織成幀,進行物理尋址和錯誤檢測。以太網協議和PPP協議是數據鏈路層的典型實現。

網絡層: 提供數據包的傳輸服務,實現源到目的地的路徑選擇。IP協議是網絡層最為重要的協議之一。

傳輸層: 負責端到端的通信,確保數據的可靠傳輸。TCP和UDP是傳輸層最常見的協議,分別提供可靠的連接和無連接的通信服務。

會話層: 建立、管理和終止會話,確保數據的同步和控制。RPC(遠程過程調用)和NetBIOS是會話層的典型協議。

表示層: 負責數據的格式轉換、加密和解密。ASCII和JPEG等編碼和壓縮算法屬于表示層的范疇。

應用層: 為用戶提供網絡服務,是用戶與網絡之間的接口。HTTP、FTP、SMTP等協議屬于應用層。
這個模型最全面,但是我們使用最多的網絡分層模型卻不是這個。

CP/IP五層(或四層)模型

TCP/IP是一組協議的代名詞,它還包括許多協議,組成了TCP/IP協議簇TCP/IP通訊協議采用了5層的層級結構,每一層都呼叫它的下一層所提供的網絡來完成自己的需求。

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

兩種模型的對比

如圖:
在這里插入圖片描述

  • 我們編碼的區域一般都是在應用層。
  • 傳輸層和網絡層都是由操作系統維護的。不同的操作系統對這部分內容的設計都是類同的,這就奠定了不同的操作系統同樣可以實現數據的交互和信息的傳遞。
  • 傳輸層和網絡層都是由操作系統維護的。操作系統不相信任何人,所以操作系統不會讓應用層的代碼直接訪問傳輸層。所以在傳輸層和應用層之間一定存在著大量的系統調用接口供開發者使用。未來我們在應用層的各種開發工作都要訪問這些接口。
  • 網絡分層的好處就是:有效的實現了高內聚,低耦合。將很多關聯性很高的代碼和功能放在一層。減少各個層級之間的相互影響。

關于報頭和協議

有了網絡分層的知識,報頭我就可以多講一些。

  • 每一層都有若干個協議,而且協議的表現形式都是報頭。

  • 每一份數據最終在被發送或者在不同的協議層中,都會有自己的報頭。

  • 應用層也是需要報頭的。
    接下來,我們來看一下數據在自頂向下傳輸過程中,報頭是怎樣工作的。
    在這里插入圖片描述
    如圖,為了方便說明,我們將各個網絡層的報頭用特殊的字符表示。有A主機和 B主機。A主機要向B主機發送信息:“你好”。如上就是信息在網絡層的傳輸過程。

  • 報文=報頭+有效的載荷

  • 發送數據時,自頂向下添加報頭,我們稱之為封裝的過程。

  • 接受數據時,自下而上去掉報頭,我們稱之為解包的過程。

  • 在網絡通信當中,我們發現同層報頭和有效載荷完全相同。我們可以理解成同層協議之間直接通信,也可以理解層自頂向下交付。這兩種認識的方式并不沖突。

封裝的過程很好理解,現在我想談一談解包的過程。
1.在解包的時候,怎么區分哪部分是報頭?哪部分是有效的載荷呢?
2.在解包的時候,如何知道自己的有效的載荷要交付接上層的哪一個協議?要知道一層中不止一種協議。
如上的兩個問題是每一層協議都必須解決的問題。每一層協議的報頭中,必須涵蓋如上的信息,這是所有協議的共性。我們把有效的載荷定向向上交付給指定協議的過程稱為分用的過程

局域網

兩臺處于同一局域網的主機可以直接通信。
局域網中通信的標準有:①以太網②令牌環網③無線LAN通信。
接下來我們談一談以太網通信的原理:
在局域網中每一臺機器都有自己的“名字”。每一臺機器都有網卡,網卡有自己的唯一性地址:Mac地址。Mac地址用來表征自己在局域網中的唯一性
如圖,在一個局域網中有8臺機器。
在這里插入圖片描述
主機1向主機8發送消息,所有在同一局域網中的主機都可以收到這一消息。然后根據Mac地址進行比較,如果這個消息是發給自己的,就接受這一消息;如果不是發給自己的,就會自動摒棄該消息。
但是,就像在一間教室里,一個人說話,全班都可以聽清楚,但是如果多個人同時說話,就分辨不出誰和誰進行對話一樣。在一個局域網中,同一時間只允許一個主機向局域網中發送消息,否則就會發生碰撞。所以該局域網被稱為碰撞域。
那我們如何看待局域網中的網絡資源呢?是共享資源,臨界資源。


接下來我們簡單講一下令牌環網的原理。 在同一局域網中,只允許持有令牌環的主機發送信心,這種做法和我們學的鎖🔒非常相似。

到這里,我們的內容就告一段落。我們下篇博客,再見。
在這里插入圖片描述

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

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

相關文章

Bootstrap 按鈕下拉菜單

Bootstrap 按鈕下拉菜單 簡介 Bootstrap 是一個流行的前端框架,用于快速開發響應式和移動設備優先的網頁。它提供了一套豐富的組件,包括導航、下拉菜單、按鈕等,使得開發者能夠輕松構建功能豐富且美觀的界面。在本文中,我們將重…

新加坡工作和生活指北:餐飲出行篇

文章首發于公眾號:Keegan小鋼 ?餐飲 前一篇文章 說到,有些房東不允許房客煮飯,那在新加坡都去哪吃飯?有什么吃的呢? 比較便宜的餐飲場所就是小販中心、咖啡店和冷氣食閣,也是大部分人常去的就餐場所。咖…

分布式整合

一、分布式架構介紹 什么是分布式系統 分布式系統指一個硬件或軟件組件分布在不同的網絡計算機上,彼此之間僅僅通過消息傳遞進行通信和協調的系統。 通俗的理解,分布式系統就是一個業務拆分成多個子業務,分布在不同的服務器節點&#xff0…

使用Java實現復雜數據結構算法

使用Java實現復雜數據結構算法 大家好,我是微賺淘客系統3.0的小編,也是冬天不穿秋褲,天冷也要風度的程序猿! 1. 前言 在軟件開發中,復雜數據結構和算法是提升程序效率和性能的重要組成部分。本文將通過Java語言&…

OCR技術主要用于自動化文本數據的錄入

OCR是“Optical Character Recognition”的縮寫,中文意思是光學字符識別。這是一種技術,允許電子設備如掃描儀或數碼相機讀取文檔中的文本,通過檢測和分析文本的暗和亮的模式來識別字符的形狀,然后將這些形狀轉換為可被計算機處理…

ASP.NET Core----基礎學習03----開發者異常頁面 MVC工作原理及實現

文章目錄 1. 開發者異常頁面(1)Startup.cs 頁面的基礎配置(2)自定義顯示報錯代碼的前后XX行 2. MVC 的原理3. MVC 的實現4.默認路由路徑5.返回Json字符串 1. 開發者異常頁面 (1)Startup.cs 頁面的基礎配置 namespace ASP.Net_Blank {public class Startup{private readonly IC…

FlowUs息流:提升學術研究效率的協作神器

在學術界,論文撰寫和小組協作是日常研究工作的重要組成部分。FlowUs作為一個多功能的協作平臺,為大學教授和學生提供了一個無縫的工作環境,使這些任務變得更加順暢。 FlowUs模板中心 高校學生教師 專用模板免費 🎓 教授的論文管…

Webpack安裝以及快速入門

3 Webpack 1 什么是Webpack https://webpack.js.org/ (官網) webpack 是一個現代 javascript 應用程序的 靜態模塊打包器 (module bundler) 待會要學的 vue-cli 腳手架環境, 集成了 webpack, 所以才能對各類文件進行打包處理 webpack是一個 靜態模塊 打包器,可以做以下的這…

Spring Boot (9):AOP實戰經驗

1 概述 介紹完Spring AOP所具備的功能特性,接下來,看一下再應用程序中使用AOP時應該遵循哪些最佳實踐。 2 活用切點表達式 Spring AOP的一大特色在于在開發人員提供了非常靈活的切點機制。Spring在編譯期間處理切入點,并嘗試進行優化匹配。然…

計算機的錯誤計算(二十四)

摘要 計算機的錯誤計算(二十一)就案例 展示了“兩個不相等數相減,差為0”。本節給出新的計算過程:不停增加計算精度直到出現非0結果。這個過程與結果表明,即使是專業數學軟件,對這個問題的處理&#xff0…

1 HTML and CSS

HTMl(超文本標記語言) HTML 概述 超文本標記語言用來描述和定義網頁的內容 HTML(超文本標記語言——HyperText Markup Language)是構成 Web 世界的一磚一瓦;它定義了網頁內容的含義和結構 “超文本”(hypertext)是指連接單個網站內或多個網站間的網頁的鏈接 1. HTML標簽功能區分…

Qt之多線程編程(QThread)

文章目錄 前言Qt多線程的基本使用如何移動線程常用的一些函數示例代碼總結 前言 在現代計算機系統中,多線程編程已經成為一種常見的編程模式,它可以有效地利用多核處理器的計算能力,提高程序的執行效率。Qt作為一種跨平臺的應用程序開發框架…

【ffmpeg系列一】源碼構建,ubuntu22與win10下的過程對比。

文章目錄 背景ubuntu22結論 win10過程 對比結論 背景 順手編譯個ffmpeg試試,看看不同平臺下誰的配置比較繁瑣。 先讓gpt給出個教程: ubuntu22 使用elementary-os7.1構建,看看有幾個坑要踩。 錯誤1: 依賴libavresample-dev未…

Linux-學習-05-openssl安裝與卸載

目錄 一、環境信息 二、卸載步驟 1、使用包管理器卸載 三、安裝步驟 1、下載OpenSSL源代碼 2、解壓并進入目錄 3、配置、編譯和安裝 4、更新軟鏈接 5、更新共享庫緩存 6、/etc/profile添加環境變量 7、環境變量生效 8、openSSL版本驗證 一、環境信息 名稱值CPUInte…

【人工智能】-- 智能家居

個人主頁:歡迎來到 Papicatch的博客 課設專欄 :學生成績管理系統 專業知識專欄: 專業知識 文章目錄 🍉引言 🍉基于深度卷積神經網絡的表情識別 🍈流程圖 🍈模型設計 🍍網絡架…

[圖解]企業應用架構模式2024新譯本講解24-標識映射3

1 00:00:00,460 --> 00:00:02,580 超類定義了一個抽象方法 2 00:00:03,170 --> 00:00:03,450 3 00:00:06,410 --> 00:00:09,690 把reader內容 4 00:00:10,870 --> 00:00:12,350 把它變成一個領域對象 5 00:00:13,690 --> 00:00:15,800 但這里只是把它變成一個…

python安裝PyTorch+cuda

1,最終結果 import torchprint(torch.cuda.is_available()) #顯示True,則安裝成功 print(torch.__version__)#打印當前PyTorch版本號。 print(torch.version.cuda)#打印當前CUDA版本號。 print(torch.backends.cudnn.version())# 打印當前cuDNN版本號。 print(torc…

Ruby 語法

Ruby 語法 Ruby 是一種動態、開放源代碼的編程語言,由日本的松本行弘(Yukihiro Matsumoto)于1995年開發。Ruby 的設計哲學強調簡潔和效率,同時也是一種表達力強的語言。它結合了多種編程語言的特性,包括 Perl、Smalltalk、Eiffel、Ada 和 Lisp。Ruby 的語法簡單直觀,使得…

【愛上C++】vector用法詳解

文章目錄 一:vector簡介二:vector的創建和初始化三:vector的遍歷1.[]下標2.at()3.迭代器遍歷4.范圍for 四:vector的空間1.size2.max_size3.capacity4.reserve5.resize6.empty 五:vector的增刪查改1.push_back2.pop_back3.find4.insert5.erase6.swap7.assign Hello~同學們好&…