【Linux網絡與網絡編程】01.初識網絡

一、計算機網絡的發展歷史

計算機是人的工具,人要協同工作,注定了網絡的產生是必然的。

二、協議

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

那么只要通信的兩臺主機約定好協議就可以了嗎??定好協議,但是你用頻率表示 01,我用強弱表示 01,就好比我用中國話,你用葡萄牙語一樣,雖然大家可能遵守的一套通信規則,但是語言不同,即是訂好了基本的協議,也是無法正常通信的。

所以,完善的協議,需要更多更細致的規定,并讓參與的人(計算機生產廠商;計算機操作系統;計算機網絡硬件設備)都要遵守。

如何讓這些不同廠商之間生產的計算機能夠相互順暢的通信? 就需要有人站出來,約定一個共同的標準讓大家都來遵守,這就是 網絡協議。

2.1? 對協議的宏觀認識

2.1.1?協議分層

在上面這個例子中我們可以看到分成了兩層:語言層和設備通信層。

我們從今后看待協議要有兩種視角:

視角1(小白視角):同層協議是直接通信

視角2(工程視角):同層協議不是直接通信

2.1.2 OSI七層模型

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

其實在網絡角度,OSI 定的協議 7 層模型其實非常完善,但是在實際操作的過程中,會話層、表示層是不可能接入到操作系統中的,所以在工程實踐中最終落地的是 5 層協議。?

2.1.3 TCP/IP五層模型

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

2.2 對TCP/IP協議簇的認識

2.2.1 為什么要有TCP/IP協議?

? 首先,即便是單機,你的計算機內部其實都是存在協議的,比如:其他設備和內存通信會有內存協議。其他設備和磁盤通信會有磁盤相關的協議,比如: SATA,IDE,SCSI 等。只不過我們感知不到罷了。而且這些協議都在本地主機各自的硬件中,通信的成本、問題比較少。

? 其次,網絡通信最大的特點就是主機之間變遠了。任何通信特征的變化,一定會帶來新的問題,有問題就得解決問題,所以需要新的協議

所以,為什么要有 TCP/IP 協議?本質就是通信主機距離變遠了,會產生各種的問題,而這些問題的解決方案就是TCP/IP協議。

2.2.2 為什么TCP/IP協議會分層?

從上圖中提出的4個問題可以看出:問題1對應的是鏈路傳輸層,問題2對應的是網絡層,問題3對應的是傳輸層,問題4對應的是應用層。所以TCP/IP協議能分層的前提是這些問題本身是能分層的。

2.3 對協議的深層次理解

2.3.1 網絡與操作系統的關系

網卡是硬件的一部分,操作系統要對它進行管理,所以相應的操作系統要實現網絡的相關功能。可以理解為網絡是操作系統內部的一個模塊,但是這個模塊在所有的操作系統上是相同的。

2.3.2 協議到底是什么?

由2.3.1可知,操作系統內部可能存在著大量的協議,操作系統自然要對這些協議通過先描述后組織進行管理,故而協議就是兩個操作系統直接為了通信而約定出來的結構體。操作系統是C語言寫的,所以TCP/IP網絡協議也是用C語言寫的。

三、網絡傳輸的基本流程

3.1 局域網(以以太網為例)網絡的傳輸流程

3.1.1 局域網通信原理

首先要明確一點:兩臺主機在同一個局域網,是能夠直接通信的。?(原理類似上課)

以太網中,任何時刻都只允許一臺機器向網絡中發送數據,如果有多臺同時發送的話,會發生數據干擾,我們稱之為數據碰撞。所有發送數據的主機要進行碰撞檢測和碰撞避免。在沒有交換機的情況下,一個以太網就是一個碰撞域。局域網通信的過程中,主機對收到的報文確認是否是發給自己的,是通過目標MAC地址判定。

3.1.2 認識MAC地址

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

查看MAC地址:

Linux? ? ? ?下使用 ifconfig

Windows 下使用 ipconfig /all

3.1.3 局域網網絡傳輸流程圖

而其中每層都有協議,所以當我進行進行上述傳輸流程的時候,要進行封裝和解包與分用。

明確一下概念:

1. 報文

? 報頭就是對應協議層的結構體字段。除了報頭,剩下的叫做有效載荷

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

2. 封裝和分用

3.2 跨網絡傳輸流程

跨網段的主機的數據傳輸過程中,數據從一臺計算機到另一臺計算機傳輸過程中要經過一個或多個路由器。

3.2.1 認識IP地址

IP 協議有兩個版本:IPv4 和 IPv6。

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

MAC地址 VS IP地址

MAC地址是局域網中的唯一標識符,而IP地址是網絡邏輯層的通信標識。在數據傳輸過程中,是根據目的IP進行路由的,MAC地址是會變化的,而IP地址是一直不變的。

為了加深我們的理解,請看這張示意圖:?

為什么要去目標主機,先要走路由器?

在任何主機看來,路由器也是一臺主機。當主機間進行跨網絡通信時,源主機會將數據交給路由器,再由路由器將數據交給目標主機,這可以使得每臺主機都是在局域網中工作的。

因此我們可以斷定路由器上一定是存在著不同局域網的驅動程序的。

這樣的話我們就可以理解了MAC地址和IP地址了。目的 IP 是一種長遠目標,Mac 是下一階段目標,目的 IP 是路徑選擇的重要依 據,mac 地址是局域網轉發的重要依據。

3.2.2 跨網絡傳輸流程圖

示意圖:

?網絡通信的宏觀流程:

每臺主機都有網絡層,故而都有路由的功能,發送數據的地址經由自己的判斷時局域網內路由還是教育路由器進行跨網傳輸。?

IP 網絡層存在的意義:提供網絡虛擬層,讓世界的所有網絡都是 IP 網絡,屏蔽最底層網絡的差異。

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

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

相關文章

使用 Python 進行鏈上數據監控:讓區塊鏈數據觸手可及

使用 Python 進行鏈上數據監控:讓區塊鏈數據觸手可及 區塊鏈技術正以前所未有的速度改變著各行各業,特別是在金融、供應鏈、物聯網和智能合約等領域的應用,已經成為了一種新常態。然而,隨著區塊鏈網絡的快速擴展和去中心化特性的不斷強化,數據的可視化與監控變得愈發重要…

【SMBIOS數據塊類型列表】

SMBIOS數據塊類型列表 SMBIOS數據塊類型列表**SMBIOS 數據塊類型列表****如何查看實際的 SMBIOS 數據塊?****總結** SMBIOS數據塊類型列表 在 SMBIOS(System Management BIOS)中,Type 是用來標識不同類型的數據塊的。每種類型對應…

【測試】每日3道面試題 3/30

每日更新,建議關注收藏點贊。 白盒測試邏輯覆蓋標準?哪種覆蓋標準覆蓋率最高? 5種。語句覆蓋、分支/判定覆蓋、條件覆蓋、條件組合覆蓋【覆蓋率最高,所有可能條件組合都驗證】、路徑覆蓋【理論上最高,但實際很難實現】…

NFS掛載異常排查記錄

互相PING服務器看是否通;在ubuntu下看下服務器是否正常運行。導出目錄是否導出了。最后發現在掛載目錄的地方目錄路徑和后面沒有加空格。

1--當「窮舉」成為藝術:CTF暴力破解漏洞技術從入門到入刑指南(知識點講解版)

當「窮舉」成為藝術:CTF暴力破解漏洞技術從入門到入刑指南 引言:論暴力破解的哲學意義 “世界上本沒有漏洞,密碼設得簡單了,便成了漏洞。” —— 魯迅(并沒有說過) 想象你是個不會撬鎖的小偷,面…

Java實戰:實現用戶的登錄注冊功能

系列文章目錄 Java文件 I/O流的操作實戰和高級UI組件和事件監聽的綜合 文章目錄 系列文章目錄前言一、大致流程思路分析:二、定義用戶類:三、服務層的實現: 1.保護用戶數據功能的實現2.登錄操作的實現 四、實現用戶的注冊界面: 大…

SQLAlchemy 支持特殊字符

postgresql 實踐 pydantic 實踐(一)基礎 pydantic 實踐(二)數據校驗 SQLAlchemy 介紹與實踐 SQLAlchemy 支持特殊字符 SQLAlchemy 支持特殊字符 1. 字符集介紹分析2. MySQL 支持特殊字符2.1. 更新 MySQL 字符集為 utf8mb42.2 更新…

如何看待職場中的“向上管理”

向上管理的本質,是提供一份更精確的人力產品說明書, 利用市場的邏輯,引導領導,按照你的心意,使用你這款產品。 公司獲得更高的產出,領導獲得更多的成果,你獲得了自由支配的時間, 這是一場正和博弈。 ? 圖片來源:網絡 (1)具體案例: 把自己當成一款產品,使用者…

AIOHTTP

文章目錄 AIOHTTP主要特點庫安裝在一個命令中安裝所有加速 入門客戶端示例服務器示例: 開發模式aiohttp 3 有什么新功能?依賴關系 客戶端快速入門發起請求在 URL 中傳遞參數響應內容和狀態碼二進制響應內容JSON 請求 注意JSON 響應內容流式響應內容更復雜…

JavaFX基礎- Button 的基本使用

說明 本文記錄一下對Button的基本使用,包括但不限于 樣式的設置,事件的監聽等。 按鈕樣式的設置 方式一 : Java代碼的方式 // 創建一個按鈕Button button new Button("按鈕");// 設置按鈕的位置button.setLayoutX(50);button.set…

DeepSeek-R1國產大模型實戰:從私有化部署到內網穿透遠程使用全攻略

文章目錄 前言1. 安裝Ollama2. 安裝DeepSeek-r1模型3. 安裝圖形化界面3.1 Windows系統安裝Docker3.2 Docker部署Open WebUI3.3 添加Deepseek模型 4. 安裝內網穿透工具5. 配置固定公網地址 前言 最近,國產AI界的黑馬——Deepseek,簡直火得一塌糊涂。不過…

openwrt24.10.0版本上安裝istoreOS的屏幕監控插件

lcdsimple 插件支持在軟路由下面顯示統計信息到 HDMI 或者 VGA 上。 手動安裝方法: 保證 quickstart 版本大于 0.9.7 安裝 lcdsimple 具體方法: opkg update opkg install quickstart opkg install lcdsimple 手動下載 QUICKSTART 跟 LCD SIMPLE&…

卷積神經網絡 - ResNet(殘差網絡)

殘差網絡(Residual Network,ResNet)通過給非線性的卷積層增加直連邊 (Shortcut Connection)(也稱為殘差連接(Residual Connection))的方式來提高信息的傳播效率。 這是一種特殊的深度神經網絡結構,由 Kaiming He 等人在 2015 年提出,目的是解…

質因數個數--歐拉函數中統計純素數

和互質數不同&#xff0c;這里統計的是純素數部分 就是x/i那一部分 #include<bits/stdc.h> using namespace std; #define N 100011 typedef long long ll; typedef pair<ll,int> PII; int n,m,k; ll eular(ll x) { ll an0;ll px;for(ll i2;i*i<x;i){if(x%i…

2025年3月電子學會c++五級真題

結繩 #include <bits/stdc.h> using namespace std;int n,a[10010];int main() {cin>>n;for(int i 0;i<n;i){cin>>a[i];}sort(a0,an);//將a數組從小到大排序double sum 0;for(int i 0;i<n;i){sum (suma[i])/2;}cout<<(int)sum;return 0; } 最…

用Nginx實現負載均衡與高可用架構(整合Keepalived)

前言 在分布式架構中&#xff0c;負載均衡和高可用是保障系統穩定性的兩大核心能力。本文將深入講解如何通過Nginx實現七層負載均衡&#xff0c;并結合Keepalived構建無單點故障的高可用架構。文末附完整配置模板&#xff01; 一、Nginx負載均衡實現方案 1. 核心原理 Nginx通…

springBoot與ElementUI配合上傳文件

以下是使用Vue CLI創建的Vue項目&#xff0c;結合Element UI來實現文件上傳功能的完整示例。 步驟 創建Vue項目&#xff1a;確保你已經安裝了Vue CLI&#xff0c;若未安裝&#xff0c;可使用以下命令安裝&#xff1a; npm install -g vue/cli然后創建一個新的Vue項目&#x…

黑盒測試的測試用例構成的八點要素

測試用例: 是為測試項目而設計的執行文檔 作用&#xff1a; 防止漏測實施測試的標準 編寫格式&#xff1a; 用例編號:項目 模塊 編號用例標題:預期結果(測試點)模塊/項目:所屬項目或模塊優先級:表示用例的重要程度或者影響力P0~p4(P0最高)前置條件:要執行此條用例&#xf…

藍橋刷題note11(好數)

1&#xff0c;好數 一個整數如果按從低位到高位的順序&#xff0c;奇數位 (個位、百位、萬位 ?? ) 上的數字是奇數&#xff0c;偶數位 (十位、千位、十萬位 ?? ) 上的數字是偶數&#xff0c;我們就稱之為 “好數”。 給定一個正整數 NN&#xff0c;請計算從 1 到 NN 一共…

Keil編譯生成的axf文件的介紹

在 Keil 開發環境&#xff08;如 Keil MDK&#xff09;中&#xff0c;.axf 文件是一種 可執行文件格式&#xff0c;主要用于 ARM 處理器的嵌入式開發。它的作用類似于 ELF&#xff08;Executable and Linkable Format&#xff09;格式&#xff0c;包含了可執行代碼、調試信息、…