計算機網絡(1) 網絡通信基礎,協議介紹,通信框架

網絡結構模式

C/S-----客戶端和服務器
B/S -----瀏覽器服務器

MAC地址

每一個網卡都擁有獨一無二的48位串行號,也即MAC地址,也叫做物理地址、硬件地址或者是局域網地址
MAC地址表示為12個16進制數 如00-16-EA-AE-3C-40 (每一個數可以用四個2進制數表示)

IP地址

IP 地址是一個 32 位的二進制數,通常被分割為 4 個“ 8 位二進制數”(也就是 4 個字節)。
通常用“點分十進制”表示成(a.b.c.d)的形式每一個字母范圍是0-255
其中一般最后一個255是廣播
A類IP地址: 在 IP 地址的四段號碼中,第一段號碼為網絡號碼,剩下的三段號碼為本地計算機的號碼。

B類IP地址: 在 IP 地址的四段號碼中,前兩段號碼為網絡號碼。
C類IP地址: 在 IP 地址的四段號碼中,前三段號碼為網絡號碼,剩下的一段號碼為本地計算機的號碼。
D類IP地址: 多播地址,組播地址

特殊網址

  • 每一個字節都為 0 的地址( 0.0.0.0 )對應于當前主機

  • IP 地址中的每一個字節都為 1 的 IP 地址( 255.255.255.255 )是當前子網的廣播地址

  • IP 地址中凡是以 11110 開頭的 E 類 IP 地址都保留用于將來和實驗使用

  • IP地址中不能以十進制 127 作為開頭,該類地址中數字 127.0.0.1 ~ 127.255.255.255 用于回路測試,如:127.0.0.1可以代表本機IP地址

子網掩碼

子網掩碼只有一個作用,就是將某個 IP 地址劃分成網絡地址主機地址兩部分。通過按位與的方式。

網絡模型

OSI七層模型

在這里插入圖片描述
物數網傳會表應
MAC地址在數據鏈路層尋址
IP在網絡層

TCP/IP四層模型

目前的主流協議族
在這里插入圖片描述中間這些都是各種各樣的協議

四層介紹

  • 應用層:應用層是 TCP/IP 協議的第一層,是直接為應用進程提供服務的
    • 對不同種類的應用程序它們會根據自己的需要來使用應用層的不同協議,郵件傳輸應用使用了 SMTP 協議、萬維網應用使用了 HTTP 協議、遠程登錄服務應用使用了有 TELNET 協議
    • 應用層還能加密、解密、格式化數據
    • 應用層可以建立或解除與其他節點的聯系,這樣可以充分節省網絡資源
  • 傳輸層:作為 TCP/IP 協議的第二層,傳輸層在整個 TCP/IP 協議中起到了中流砥柱的作用。且在運輸層中, TCP 和 UDP 也同樣起到了中流砥柱的作用
  • 網絡層:網絡層在 TCP/IP 協議中的位于第三層。在 TCP/IP 協議中網絡層可以進行網絡連接的建立和終止以及 IP 地址的尋找等功能
  • 網絡接口層:在 TCP/IP 協議中,網絡接口層位于第四層。由于網絡接口層兼并了物理層和數據鏈路層所以,網絡接口層既是傳輸數據的物理媒介,也可以為網絡層提供一條準確無誤的線路

協議

  • 應用層協議
    • FTP協議(File Transfer Protocol 文件傳輸協議)
    • HTTP協議(Hyper Text Transfer Protocol 超文本傳輸協議)
    • NFS(Network File System 網絡文件系統)
  • 傳輸層協議
    • TCP協議(Transmission Control Protocol 傳輸控制協議)
    • UDP協議(User Datagram Protocol 用戶數據報協議)
  • 網絡層協議
    • IP 協議(Internet Protocol 因特網互聯協議)
    • ICMP 協議(Internet Control Message Protocol 因特網控制報文協議)
    • IGMP 協議(Internet Group Management Protocol 因特網組管理協議)。
  • 網絡接口層協議
    • ARP協議(Address Resolution Protocol 地址解析協議)
    • RARP協議(Reverse Address Resolution Protocol 反向地址解析協議)

UDP協議

在這里插入圖片描述

  • 源端口號:發送方端口號
  • 目的端口號:接收方端口號
  • 長度:UDP用戶數據報的長度,最小值是8(僅有首部)
  • 校驗和:檢測UDP用戶數據報在傳輸中是否有錯,有錯就丟棄

TCP協議

在這里插入圖片描述

  • 源端口號:發送方端口號
  • 目的端口號:接收方端口號
  • 序號:本報文段的數據的第一個字節的序號
  • 確認號:期望收到對方下一個報文段的第一個數據字節的序號
  • 頭部長度(數據偏移):TCP 報文段的數據起始處距離 TCP 報文段的起始處有多遠,即首部長度。單位:32位,即以 4 字節為計算單位???
  • 保留:占 6 位,保留為今后使用,目前應置為 0
  • 緊急 URG :此位置 1 ,表明緊急指針字段有效,它告訴系統此報文段中有緊急數據,應盡快傳送
  • 確認 ACK:僅當 ACK=1 時確認號字段才有效,TCP 規定,在連接建立后所有傳達的報文段都必須把 ACK 置1
  • 推送 PSH:當兩個應用進程進行交互式的通信時,有時在一端的應用進程希望在鍵入一個命令后立即就能夠收到對方的響應。在這種情況下,TCP 就可以使用推送(push)操作,這時,發送方TCP 把 PSH 置 1,并立即創建一個報文段發送出去,接收方收到 PSH = 1 的報文段,就盡快地(即“推送”向前)交付給接收應用進程,而不再等到整個緩存都填滿后再向上交付
  • 復位 RST:用于復位相應的 TCP 連接
  • 同步 SYN:僅在三次握手建立 TCP 連接時有效。當 SYN = 1 而 ACK = 0 時,表明這是一個連接請求報文段,對方若同意建立連接,則應在相應的報文段中使用 SYN = 1 和 ACK = 1。因此,SYN 置1 就表示這是一個連接請求或連接接受報文
  • 終止 FIN:用來釋放一個連接。當 FIN = 1 時,表明此報文段的發送方的數據已經發送完畢,并要求釋放運輸連接
  • 窗口:指發送本報文段的一方的接收窗口(而不是自己的發送窗口)
  • 校驗和:校驗和字段檢驗的范圍包括首部和數據兩部分,在計算校驗和時需要加上 12 字節的偽頭部
  • 緊急指針:僅在 URG = 1 時才有意義,它指出本報文段中的緊急數據的字節數(緊急數據結束后就是普通數據),即指出了緊急數據的末尾在報文中的位置,注意:即使窗口為零時也可發送緊急數據
  • 選項:長度可變,最長可達 40 字節,當沒有使用選項時,TCP 首部長度是 20 字節

IP協議

在這里插入圖片描述

  • 版本號:IP 協議的版本。通信雙方使用過的 IP 協議的版本必須一致,目前最廣泛使用的 IP 協議版本號為 4(即IPv4)
  • 頭部長度:單位是 32 位(4 字節)
  • 服務類型:一般不適用,取值為 0
  • 總長度:指首部加上數據的總長度,單位為字節
  • 標識(identification):IP 軟件在存儲器中維持一個計數器,每產生一個數據報,計數器就加 1,并將此值賦給標識字段
  • 標志(flag):目前只有兩位有意義
    • 標志字段中的最低位記為 MF。MF = 1 即表示后面“還有分片”的數據報。MF = 0 表示這已是若干數據報片中的最后一個
    • 標志字段中間的一位記為 DF,意思是“不能分片”,只有當 DF = 0 時才允許分片
  • 片偏移:指出較長的分組在分片后,某片在源分組中的相對位置,也就是說,相對于用戶數據段的起點,該片從何處開始。片偏移以 8 字節為偏移單位
  • 生存時間:TTL,表明是數據報在網絡中的壽命,即為跳數限制,由發出數據報的源點設置這個字段。路由器在轉發數據之前就把 TTL 值減一,當 TTL 值減為零時,就丟棄這個數據報,常見為64和128
  • 協議:指出此數據報攜帶的數據時使用何種協議,以便使目的主機的 IP 層知道應將數據部分上交給哪個處理過程,常用的 ICMP(1),IGMP(2),TCP(6),UDP(17),IPv6(41)
  • 首部校驗和:只校驗數據報的首部,不包括數據部分
  • 源地址:發送方 IP 地址
  • 目的地址:接收方 IP 地址

以太網幀協議

在這里插入圖片描述
類型:

  • 0x800表示 IP
  • 0x806表示 ARP
  • 0x835表示 RARP

ARP協議

在這里插入圖片描述

  • 硬件類型:1 表示 MAC 地址
  • 協議類型:0x800 表示 IP 地址
  • 硬件地址長度:6
  • 協議地址長度:4
  • 操作
    • 1 表示 ARP 請求
    • 2 表示 ARP 應答
    • 3 表示 RARP 請求
    • 4 表示 RARP 應答

封裝

應用程序數據在發送到物理網絡上之前,將沿著協議棧從上往下依次傳遞。每層協議都將在上層數據的基礎上加上自己的頭部信息(有時還包括尾部信息),以實現該層的功能,這個過程就稱為封裝

在這里插入圖片描述

分用

當幀到達目的主機時,將沿著協議棧自底向上依次傳遞。各層協議依次處理幀中本層負責的頭部數據,以獲取所需的信息,并最終將處理后的幀交給目標應用程序。這個過程稱為分用。
分用時靠頭部信息中的類型字段實現的
在這里插入圖片描述

封裝分用示意圖:

請添加圖片描述
圖中以QQ發消息為例,發送nihao
傳輸層以UDP協議的源端口和目的端口
然后網絡層加IP協議頭,
最后就是以太網幀協議頭和尾

需要注意的是,我們是通過IP地址尋找MAC地址的,如果本機存儲過IP地址對應的MAC地址,那么就直接可以在以太網幀頭這里寫上目的端的物理地址。但如果不知道的話,就通過ARP協議獲取MAC
通過IP獲取MAC,時ARP,通過MAC獲取IP,是RARP
在這里插入圖片描述

一開始源機器會給所有局域網的及其發一個arp請求,其他機器會根據自己的IP去對應,對上了就ARP應答,從而獲取。

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

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

相關文章

HOW - React 如何在在瀏覽器繪制之前同步執行 - useLayoutEffect

目錄 useEffect vs useLayoutEffectuseEffectuseLayoutEffect主要區別總結選擇建議注意事項 useLayoutEffect 使用示例測量 DOM 元素的尺寸和位置示例:自適應彈出框定位 同步更新樣式以避免閃爍示例:根據內容動態調整容器高度 圖像或 Canvas 繪制前的準備…

【無人機三維路徑規劃】基于CPO冠豪豬優化算法的無人機三維路徑規劃Maltab

代碼獲取基于CPO冠豪豬優化算法的無人機三維路徑規劃Maltab 基于CPO冠豪豬優化算法的無人機三維路徑規劃 一、CPO算法的基本原理與核心優勢 冠豪豬優化算法(Crested Porcupine Optimizer, CPO)是一種新型元啟發式算法,其靈感來源于冠豪豬的…

深度學習驅動的智能化革命:從技術突破到行業實踐

第一章 深度學習的技術演進與核心架構 1.1 從淺層網絡到深度學習的范式轉變 深度學習的核心在于通過多層次非線性變換自動提取數據特征,其發展歷程可劃分為三個階段:符號主義時代的規則驅動(1950s-1980s)、連接主義時代的淺層網絡(1990s-2000s)以及深度學習時代的端到端…

簡潔實用的3個免費wordpress主題

高端大氣動態炫酷的免費企業官網wordpress主題 非常簡潔的免費wordpress主題,安裝簡單、設置簡單,幾分鐘就可以搭建好一個wordpress網站。 經典風格的免費wordpress主題 免費下載 https://www.fuyefa.com/wordpress

RabbitMQ 高級特性解析:RabbitMQ 消息可靠性保障 (上)

RabbitMQ 核心功能 RabbitMQ 高級特性解析:RabbitMQ 消息可靠性保障 (上)-CSDN博客 RabbitMQ 高級特性:從 TTL 到消息分發的全面解析 (下)-CSDN博客 前言 最近再看 RabbitMQ,看了看自己之前寫…

用DeepSeek-R1-Distill-data-110k蒸餾中文數據集 微調Qwen2.5-7B-Instruct!

下載模型與數據 模型下載: huggingface: Qwen/Qwen2.5-7B-Instruct HF MirrorWe’re on a journey to advance and democratize artificial intelligence through open source and open science.https://hf-mirror.com/Qwen/Qwen2.5-7B-Instruct 魔搭&a…

在IDEA中進行git回滾操作:Reset current branch to here?或Reset HEAD

問題描述 1)在本地修改好的代碼,commit到本地倉庫,突然發覺有問題不想push推到遠程倉庫了,但它一直在push的列表中存在,那該怎么去掉push列表中的內容呢? 2)合并別的分支到當前分支&#xff0…

六十天前端強化訓練之第十一天之事件機制超詳解析

歡迎來到編程星辰海的博客講解 目錄 一、事件模型演進史 1.1 原始事件模型(DOM Level 0) 1.2 DOM Level 2事件模型 1.3 DOM Level 3事件模型 二、事件流深度剖析 2.1 捕獲與冒泡對比實驗 2.2 事件終止方法對比 三、事件委托高級應用 3.1 動態元…

Qwen架構與Llama架構的核心區別

我們在討論Deepseek不同版本之間的區別時了解到,DeepSeek-R1的蒸餾模型分為Qwen和Llama兩個系列,包括Qwen系列的0.5B、1.5B、3B、7B、14B、32B、72B和Llama系列的8B、70B。Qwen系列以阿里通義千問(Qwen)為基礎模型架構(具體是Qwen-2.5),Llama系列以Meta的Llama為基礎模型…

匿名GitHub鏈接使用教程(Anonymous GitHub)2025

Anonymous GitHub 1. 引言2. 準備3. 進入Anonymous GitHub官網4. 用GitHub登錄匿名GitHub并授權5. 進入個人中心,然后點擊? Anonymize Repo實例化6. 輸入你的GitHub鏈接7. 填寫匿名鏈接的基礎信息8. 提交9. 實例化對應匿名GitHub鏈接10. 進入個人中心管理項目11. 查…

工程化與框架系列(25)--低代碼平臺開發

低代碼平臺開發 🔧 引言 低代碼開發平臺是一種通過可視化配置和少量代碼實現應用開發的技術方案。本文將深入探討低代碼平臺的設計與實現,包括可視化編輯器、組件系統、數據流管理等關鍵主題,幫助開發者構建高效的低代碼開發平臺。 低代碼…

Redis系列之慢查詢分析與調優

Redis 慢查詢分析與優化:提升性能的實戰指南 Redis 作為一款高性能的內存數據庫,因其快速的數據讀寫能力和靈活的數據結構,被廣泛應用于緩存、消息隊列、排行榜等多種業務場景。然而,隨著業務規模的擴大和數據量的增加&#xff0…

Git系列之git tag和ReleaseMilestone

以下是關于 Git Tag、Release 和 Milestone 的深度融合內容,并補充了關于 Git Tag 的所有命令、詳細解釋和指令實例,條理清晰,結合實際使用場景和案例。 1. Git Tag 1.1 定義 ? Tag 是 Git 中用于標記特定提交(commit&#xf…

開源項目介紹:Native-LLM-for-Android

項目地址:Native-LLM-for-Android 創作活動時間:2025年 支持在 Android 設備上運行大型語言模型 (LLM) ,具體支持的模型包括: DeepSeek-R1-Distill-Qwen: 1.5B Qwen2.5-Instruct: 0.5B, 1.5B Qwen2/2.5VL:…

深入理解 Java 虛擬機內存區域

Java 虛擬機(JVM)是 Java 程序運行的核心環境,它通過內存管理為程序提供高效的執行支持。JVM 在運行時將內存劃分為多個區域,每個區域都有特定的作用和生命周期。本文將詳細介紹 JVM 的運行時數據區域及其功能,并探討與…

PDF轉JPG(并去除多余的白邊)

首先,手動下載一個軟件(poppler for Windows),下載地址:https://github.com/oschwartz10612/poppler-windows/releases/tag/v24.08.0-0 否則會出現以下錯誤: PDFInfoNotInstalledError: Unable to get pag…

深入剖析MyBatis緩存機制:原理、源碼與實戰指南

引言 MyBatis作為一款優秀的ORM框架,其緩存機制能顯著提升數據庫查詢性能。但許多開發者僅停留在“知道有緩存”的層面,對其實現原理和細節知之甚少。本文將結合可運行的代碼示例和源碼分析,手把手帶您徹底掌握MyBatis緩存機制。 一、MyBatis緩存分類 MyBatis提供兩級緩存…

Vue 使用 vue-router 時,多級嵌套路由緩存問題處理

Vue 使用 vue-router 時,多級嵌套路由緩存問題處理 對于三級菜單(或多級嵌套路由),vue 都是 通過 keep-alive 組件來實現路由組件的緩存。 有時候三級或者多級路由時,會出現失效情況。以下是三級菜單緩存的例子。 最…

QSplitter保存和讀取

官方文檔提供的方案 保存 connect(ui->splitter, &QSplitter::splitterMoved, [](){settings.setValue("splitterSizes", ui->splitter->saveState()); });讀取 ui->splitter->restoreState(settings.value("splitterSizes").toByteA…

VanillaVueSvelteReactSolidAngularPreact前端框架/庫的簡要介紹及其優勢

VanillaVueSvelteReactSolidAngularPreact前端框架/庫的簡要介紹及其優勢。以下是這些前端框架/庫的簡要介紹及其優勢: 1. Vanilla 定義:Vanilla 并不是一個框架,而是指 原生 JavaScript(即不使用任何框架或庫)。優勢…