Linux:網絡基礎1

文章目錄

  • 前言
  • 1. 協議
    • 1.1 為什么要有協議?
    • 1.2 什么是協議?
  • 2. 網絡
    • 2.1 網絡通信的問題
    • 2.2 網絡的解決方案——網絡的層狀結構
    • 2.3 網絡和系統的關系
    • 2.4 網絡傳輸基本流程
    • 2.5 簡單理解IP地址
    • 2.6 跨網絡傳輸
  • 總結

前言

??在早期的計算機發展中,一開始其實是一個個獨立的設備,通俗來說就是電腦和電腦之間不是像現在這樣可以互相傳輸數據的,只能通過,比如將這個電腦上的數據通過軟盤拷貝下來,再到另一臺電腦下載。而有人的參數,效率定然是低下的,因此就有了網絡,通過網絡來實現不同設備之間的數據傳輸。

1. 協議

1.1 為什么要有協議?

??我們上面說了,網絡可以使不同的設備之間互相傳輸數據,那么此時就有問題了。比如丟包了怎么辦,我們知道一臺設備可能會給另一個距離十分遠的設備傳輸數據,距離變長的,那么如何能確定這個數據一定能送到呢?再比如網絡中一定是有很多個設備在傳輸數據,那么如何定位你的目標機器呢?

1.2 什么是協議?

??協議本質就是一種約定。舉個淺顯的例子,時間線撥回20世紀初,電話剛剛興起的時候,每次打電話都是要收費的,對普通人來說是一筆不小的費用,所以一個大學生就與家里人作了一個約定,如果我打電話,電話響了一聲我就掛了,那么就意味著沒有生活費了,如果電話響了兩聲我就掛了,意味著我在大學里的生活狀況一切良好,不用擔心我,而兩聲以上的話就說明我需要和你們進行通話了,此時你們再接電話。而這就是一種約定,也就是一種協議。

2. 網絡

??我們知道電腦是有很多廠商的,如果每個廠商所定下的協議不一樣的話,那么設備和設備之間是無法進行通信的,因此就需要有一套完整的網絡協議來進行規范,所以的廠商都需要遵守這個協議。
??網絡一定要能保證各個不同的機器都能無障礙的連入互聯網,所以要定制全年的協議,不僅僅要定義010信號是什么意思,還需要規定其底層是以光電信號的頻率還是強弱來識別010。

2.1 網絡通信的問題

在這里插入圖片描述
??一臺主機轉發數據可能要經過多個路由器轉發才能最終到達另一臺主機,那么就會有問題:

  1. 怎么保證把數據交給了下一跳。
  2. 在轉發中,如何進行路徑選擇,目標主機定位的問題。
  3. 如果報文中間出現錯誤,或者丟失該怎么辦。
  4. 對于送達的數據,如何進行處理。

??這些問題都需要由協議來解決。

2.2 網絡的解決方案——網絡的層狀結構

??左邊的是一開始約定的協議模型,右邊的是后來工程實現(編碼實現)的時候完成的協議模型。
在這里插入圖片描述
??OSI:

  • OSI(Open System Interconnection,開放系統互連)七層網絡模型稱為開放式系統互聯參考模型,是一個邏輯上的定義和規范;
  • 把網絡從邏輯上分為了7層, 每一層都有相關、相對應的物理設備,比如路由器,交換機;
  • OSI 七層模型是一種框架性的設計方法,其最主要的功能使就是幫助不同類型的主機實現數據傳輸;
  • 它的最大優點是將服務、接口和協議這三個概念明確地區分開來,概念清楚,理論也比較完整。通過七個層次化的結構模型使不同的系統不同的網絡之間實現可靠的通訊;
  • 但是,它既復雜又不實用,所以我們按照TCP/IP四層模型來講解。

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

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

2.3 網絡和系統的關系

在這里插入圖片描述
??因此對于網絡的編程,實際上與我們之前的編程并沒有什么太大的區別,都是通過調用系統調用接口來進行的。也就是說在操作系統中它還會實現TCP/IP協議!!!

2.4 網絡傳輸基本流程

??那么我們再來理解一下數據是如何轉發的呢?也就是主機之間是如何進行通信的呢?
??我們先以我們熟悉的事物來類比,比如快遞,到達我們手上的快遞實際上并不僅僅只要快遞,還有快遞單,上面寫了收件人、地址、電話等待內容,我們知道這些東西我們其實是不需要的,那么帶上它干什么呢?這并不難理解,這是為了給快遞員指明要將這個快遞送到什么地方,為其指明一個方向。也即是說,快遞 = 快遞單 + 我們所買的物品。
??在計算機傳輸數據時也是一樣的,它并不僅僅只是傳輸了數據,還需要將目的主機的的信息等等一系列內容都發過去,在這里,這些數據就是對應上面所說的快遞單,而我們需要的數據,比如說你發送了個你好,這個你好就對應我們所買的物品。
??那么在計算機中用C語言要如何表示呢?那么肯定就先描述了,使用struct xxx{} 結構體來表示。在計算機種,協議通常用結構體字段來表征的,而結構體字段定義出來的對象,我們稱為協議報頭。
在這里插入圖片描述

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

??上面是主機一向主機二發送你好的大概流程,最后從主機一發出的數據實際上是報頭 + 有效載荷,也就是你發的真實數據。那么就有問題了:

  1. 如何將報文中的報頭和有效載荷進行分離呢?
  2. 任何協議中,如何將自己的有效載荷,交付給上層的那一個協議呢?

??上面的兩個問題是每一個協議都要解決的問題,是任何的共性!!!所以要好好理解!!

2.5 簡單理解IP地址

在這里插入圖片描述
??上面圈起來的就是ip地址,它是一個點分十進制的形式,以[0~255]. [0~255]. [0~255]. [0~255] 的形式展示的。
??如果在發送的報文中以這樣的形式進行發送,那么占據的內存是相當大的,因為這些就是一個個的字符,一個字符是一字節,這么多是非常浪費內存的,而它的沒有數字的范圍都是0~255,所以我們可以用一個字節(8個比特位)來表示。
在這里插入圖片描述
??ip大概分為兩類,一類是公網ip,一種是內網ip,它們加起來就是所有的ip地址。IP地址是用來表示互聯網中唯一的一臺主機。
??IP地址的意義:進行路徑選擇,為了到達目的主機,幫助我們該如何選擇路徑,從而將數據送到目的主機。

??IP協議有兩個版本,IPv4和IPv6。我們整個的課程,凡是提到IP協議,沒有特殊說明的,默認都是指IPv4。

  • IP地址是在IP協議中, 用來標識網絡中不同主機的地址;
  • 對于IPv4來說,IP地址是一個4字節,32位的整數;
  • 我們通常也使用 “點分十進制” 的字符串表示IP地址,例如 192.168.0.1;用點分割的每一個數字表示一個字節,范圍是 0 - 255;

??MAC地址:

  • MAC地址用來識別數據鏈路層中相連的節點;
  • 長度為48位,及6個字節。一般用16進制數字加上冒號的形式來表示(例如: 08:00:27:03:fb:19)。
  • 在網卡出廠時就確定了,不能修改。mac地址通常是唯一的(虛擬機中的mac地址不是真實的mac地址,可能會沖突,也有些網卡支持用戶配置mac地址)。

2.6 跨網絡傳輸

在這里插入圖片描述
??上述就是一個簡單的跨網絡傳輸,在其中,保存的IP地址是不會發生變化的,但是保存的mac地址是會被不斷改變的,它保存的是上一個經過的主機/路由器的mac地址,和下一個要去的主機/路由器的mac地址。
??其中令牌環可以看作一個共享資源,在同一時間只允許一個軟件使用,它的作用可以理解成就是用來傳遞數據的,并且會進行封裝報頭。
在這里插入圖片描述
??在跨多個網絡中,就是以這樣的方式來不斷傳輸數據的。

總結

??經過對網絡的簡單講解,相信大家已經對于網絡如何傳輸數據有了大概的理解,那么接下來我將會深入講解關于每一層都在干什么等內容,也希望能與大家公共進步。
??如果大家發現有什么錯誤的地方,可以私信或者評論區指出喔。我會繼續深入學習Linux,希望能與大家共同進步,那么本期就到此結束,讓我們下期再見!!覺得不錯可以點個贊以示鼓勵!!

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

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

相關文章

【云計算】阿里云、騰訊云、華為云平臺數據庫對比

目錄 一、云數據庫關鍵信息調研對比 二、詳細功能 1、阿里云RDS 2、騰訊云RDS 3、華為云RDS 一、云數據庫關鍵信息調研對比 云平臺支持數據庫部署對比支持功能備注阿里云 Mysql、Postgresql等 特有數據庫:PolarDB,適配mysql 基礎-單節點賬號管…

實現漸變字體的方案

需要注意,這個切圖是把一整塊,都切出來做的。所以需要用span,不能是div 還有描邊的話,scale會有邊距縮放的問題,描邊就用font weight 來實現 style{{ background: "var(--Linear, linear-gradient(96deg, #fff…

【華為戰報】5月、6月HCIP考試戰報!

華為認證:HCIA-HCIP-HCIE 點擊查看: 【華為戰報】4月 HCIP考試戰報! 【華為戰報】2月、3月HCIP考試戰報! 【華為戰報】11月份HCIP考試戰報! 【HCIE喜報】HCIE備考2個月絲滑通關,考試心得分享&#xff…

Python序列化和反序列化

一.序列化和反序列化 在Python中,序列化(Serialization)和反序列化(Deserialization)是處理對象數據的過程,主要用于對象的存儲或網絡傳輸。 序列化(Serialization) 序列化是將Pyth…

7.x86游戲實戰-C++實現跨進程讀寫-跨進程寫內存

免責聲明:內容僅供學習參考,請合法利用知識,禁止進行違法犯罪活動! 本次游戲沒法給 內容參考于:微塵網絡安全 上一個內容:6.x86游戲實戰-C實現跨進程讀寫-通過基址讀取人物狀態標志位 上一個內容通過基…

深層神經網絡

深層神經網絡 深層神經網絡 深度神經網絡(Deep Neural Networks,DNN)可以理解為有很多隱藏層的神經網絡,又被稱為深度前饋網絡(DFN),多層感知機(Multi-Layer perceptron&#xff0c…

ghost恢復?電腦文件恢復如何操作?電腦數據恢復工具!5款!

在數字化時代,電腦數據的價值日益凸顯。然而,數據丟失、誤刪、系統崩潰等問題時有發生,給個人和企業帶來巨大損失。本文將為您詳細介紹Ghost恢復方法,同時推薦五款高效的電腦數據恢復工具,助您輕松應對數據丟失的困擾。…

使用歸檔實用工具怎么打不開 mac上好用的解壓軟件 歸檔實用工具打不開怎么回事 mac 歸檔實用工具 蘋果電腦好用的壓縮軟件有哪些

Mac系統自帶的 “歸檔實用工具”,集成在系統右鍵菜單中,包含了文件壓縮和壓縮包解壓功能。很多mac小伙伴會發現有些文件使用歸檔實用工具打不開。由于專利和軟件開源問題,該工具目前僅支持ZIP格式的壓縮和解壓。同時,對于一些在Wi…

深入探討數據結構:基礎理論與應用實踐

前言 數據結構是計算機科學的重要組成部分,是編程與算法設計的基礎。本文將系統地介紹數據結構的基礎概念、常見類型、具體實現及其在實際開發中的應用,幫助讀者深入理解這一核心領域。 一、數據結構的基本概念 數據結構指的是計算機中數據的組織、管…

推廣旅游卡項目,一個月創收十幾萬,為何說旅游卡項目堪稱盈利利器?

推廣旅游卡項目,一月個創收十幾萬,為何說旅游卡項目堪稱盈利利器? 其精髓恰在于那十六字真言:即時收益,高額利潤,操作簡便,粉絲友好。接下來,我將從推廣人員的視角,為您…

Microsoft SQL Server 2019安裝和設置用戶密碼

1、免費下載兩個安裝包 SQL2019-SSEI-Dev 地址:https://www.microsoft.com/en-us/sql-server/sql-server-downloads SSMS-Setup-CHS 地址:https://aka.ms/ssmsfullsetup 安裝具體不在闡述了,可以參考我這篇文章:SQL Server 2019安裝詳細教程 2、以W…

開發常見的http狀態碼.——400,401,403,404,500,501,503,狀態碼大全!

目錄 一. 1開頭的(臨時信息響應碼) 二. 2開頭的(成功信息碼) 三. 3開頭的(重定向信息碼) 四. 4開頭的(客戶端錯誤信息碼) 五. 5開頭的(服務器內部錯誤信息碼) 一. 1開頭的(臨時信息響應碼) 100:繼續請求。示意請求者應當繼續發送請求,客戶端返回此碼…

Cookie的默認存儲路徑以及后端如何設置

問題場景 最近在寫一個前后端分離的項目,需要跨域,前端開發同學遇到一個問題一直報錯,本質上就是后端返回的cookie中的sessionID在前端發送http請求時無法被請求自動攜帶,每次htttpRequest都被后端識別為一個新的session&#xf…

Spring MVC數據綁定和響應——數據回寫(二)JSON數據的回寫

項目中已經導入了Jackson依賴,可以先調用Jackson的JSON轉換的相關方法,將對象或集合轉換成JSON數據,然后通過HttpServletResponse將JSON數據寫入到輸出流中完成回寫,具體步驟如下。 1、修改文件DataController.java,在…

verilog 參數用法

參數比較運算 localparam QPLL_FBDIV_IN (QPLL_FBDIV_TOP 16) ? 10b0000100000 : (QPLL_FBDIV_TOP 20) ? 10b0000110000 :(QPLL_FBDIV_TOP 32) ? 10b0001100000 :(QPLL_FBDIV_TOP 40) ? 10b0010000000 :(QPLL_FBDIV_TOP 64) ? 10b0011100000 :(QPLL_FBDIV_TO…

昇思25天學習打卡營第04天 | 數據集 Dataset

昇思25天學習打卡營第04天 | 數據集 Dataset 文章目錄 昇思25天學習打卡營第04天 | 數據集 Dataset數據集加載數據集迭代數據集的變換shufflemapbatch 自定義數據集可隨機訪問數據集對象可迭代數據集生成器 總結打卡 數據集Dataset對原始數據進行封裝、變換,為神經網…

Linux 靜態庫 和 動態庫

在Linux系統上,庫文件用于共享和重用代碼。根據使用方式和鏈接方式的不同,庫文件可以分為靜態庫和動態庫。 靜態庫(Static Library) 靜態庫是在編譯時被嵌入到最終可執行文件中的庫。靜態庫的擴展名通常是.a。 特點 獨立性&am…

ADOP帶你了解:SFP 光模塊:構建高速網絡的關鍵技術

在數字化時代,企業運營的效率往往取決于數據傳輸的速度。因此,構建一個可靠的網絡基礎架構至關重要。本指南深入探討了小型可插拔(SFP)光收發器的關鍵作用,這些設備確保了網絡中數據的高效和安全流動。SFP光收發器的設…

【Rust入門教程】hello world程序

文章目錄 前言Hello World程序運行總結 前言 對于學習任何一種新的編程語言,我們都會從編寫一個簡單的Hello World程序開始。這是一個傳統,也是一個開始。在這篇文章中,我們將一起學習如何在Rust中編寫你的第一個程序:Hello Worl…

【C語言內存函數】

目錄 1.memcpy 使用 模擬實現 2.memmove 使用 模擬實現 3.memset 使用 4.memcmp 使用 1.memcpy 使用 void * memcpy ( void * destination, const void * source, size_t num );目的地址 源地址 字節數 destination:指向要復制內…