Linux網絡編程——網絡基礎

Linux網絡編程——網絡基礎

    • 1. 網絡結構模式
      • 1.1 C/S 結構
      • 1.2 B/S 結構
    • 2. MAC 地址
    • 3. IP地址
      • 3.1 簡介
      • 3.2 IP 地址編址方式
    • 4. 端口
      • 4.1 簡介
      • 4.2 端口類型
    • 5. 網絡模型
      • 5.1 OSI 七層參考模型
      • 5.2 TCP/IP 四層模型
    • 6. 協議
      • 6.1 簡介
      • 6.2 常見協議
      • 6.3 UDP 協議
      • 6.4 TCP 協議
      • 6.5 IP 協議
      • 6.6 以太網幀協議
      • 6.7 ARP 協議
      • 6.8 封裝
      • 6.9 分用 / 解封裝
    • 7. 網絡通信的過程

1. 網絡結構模式

1.1 C/S 結構

(1)簡介
????客戶機 - 服務器 ,即 Client - ServerC/S)結構。C/S 結構通常采取 兩層結構服務器負責數據的管理客戶機負責完成與用戶的交互任務客戶機是因特網上訪問別人信息的機器,服務器則是提供信息供人訪問的計算機。

????客戶機 通過 局域網服務器 相連,接受 用戶 的請求,并通過網絡向服務器提出請求,對數據庫進行操作。服務器接受客戶機的請求,將數據提交給客戶機客戶機 將數據進行計算 并將結果呈現給 用戶 。服務器還要提供完善安全保護及對數據完整性的處理等操作,并允許多個客戶機同時訪問服務器,這就對服務器的硬件處理數據能力提出了很高的要求。

????在C/S結構中,應用程序分為兩部分:服務器部分客戶機部分服務器部分是多個用戶共享的信息與功能,執行后臺服務,如控制共享數據庫的操作等;客戶機部分為用戶所專有,負責執行前臺功能,在出錯提示、在線幫助等方面都有強大的功能,并且可以在子程序間自由切換。

(2)優點

  1. 能充分發揮客戶端 PC 的處理能力,很多工作可以在 客戶端處理 后再提交給服務器,所以 C/S 結構客戶端響應速度快
  2. 操作界面漂亮、形式多樣,可以充分滿足客戶自身的個性化要求
  3. C/S 結構的管理信息系統具有較強的事務處理能力,能實現復雜的業務流程
  4. 安全性較高,C/S 一般面向相對固定的用戶群,程序更加注重流程,它可以對權限進行多層次校驗,提供了更安全的存取模式,對信息安全的控制能力很強,一般 高度機密 的信息系統 采用 C/S 結構適宜。

(3)缺點

  1. 客戶端需要安裝專用的客戶端軟件。首先涉及到安裝的工作量,其次任何一臺電腦出問題,如病毒、硬件損壞,都需要進行安裝或維護。系統軟件升級時,每一臺客戶機需要重新安裝,其維護和升級成本非常高;
  2. 對客戶端的操作系統一般也會有限制,不能夠跨平臺

1.2 B/S 結構

(1)簡介
????B/S 結構Browser/Server瀏覽器/服務器模式),是 WEB 興起后的一種 網絡結構模式,WEB瀏覽器是客戶端最主要的應用軟件。這種模式 統一了客戶端,將系統 功能實現的核心 部分集中到 服務器上,簡化了系統的開發維護使用。客戶機上只要安裝一個瀏覽器,如 FirefoxInternet Explorer,服務器安裝 SQL ServerOracleMySQL 等數據庫。瀏覽器通過 Web Server數據庫 進行 數據交互

(2)優點
????B/S 架構最大的優點是總體 擁有成本低、維護方便、 分布性強、開發簡單,可以不用安裝任何專門的軟件就能實現在任何地方進行操作,客戶端零維護,系統的擴展非常容易,只要有一臺能上網的電腦就能使用

(3)缺點

  1. 通信開銷大、系統和數據的安全性較難保障;
  2. 個性特點明顯降低,無法實現具有個性化的功能要求;
  3. 協議一般是固定的:http/https (無法傳輸大數量的數據)
  4. 客戶端服務器端的交互是 請求-響應模式,通常動態刷新頁面,響應速度明顯降低

2. MAC 地址

????網卡是一塊被設計用來允許計算機在計算機網絡上進行通訊的計算機硬件,又稱為網絡適配器網絡接口卡NIC。其擁有 MAC 地址,屬于 OSI 模型的 第 2 層,它使得用戶可以通過 電纜無線 相互連接。每一個網卡都有一個被稱為 MAC 地址 的獨一無二的 48 位串行號。網卡的主要功能:

  1. 數據的封裝解封裝
  2. 鏈路管理
  3. 數據編碼譯碼
    以太網卡

????MAC 地址Media Access Control Address),直譯為 媒體存取控制位址,也稱為 局域網地址以太網地址物理地址硬件地址,它是一個用來確認網絡設備位置的位址,由網絡設備制造商生產時燒錄在網卡中。在 OSI 模型中,第三層網絡層負責 IP 地址第二層數據鏈路層則負責 MAC 位址MAC 地址 用于在網絡中唯一標識一個網卡一臺設備若有一或多個網卡,則每個網卡都需要并會有一個唯一的 MAC 地址

????MAC 地址的長度為 48 位(6個字節),通常表示為 1216 進制數,如:00-16-EA-AE-3C-40 就是一個 MAC 地址,其中 前 3 個字節,16 進制數 00-16-EA 代表 網絡硬件制造商的編號,它由IEEE(電氣與電子工程師協會)分配,而 后 3 個字節,16進制數 AE-3C-40 代表 該制造商 所制造的某個 網絡產品(如網卡)的系列號。只要不更改自己的 MAC 地址,MAC 地址在世界是唯一。形象地說,MAC 地址就如同身份證上的身份證號碼,具有 唯一性

3. IP地址

3.1 簡介

????IP 協議是為計算機網絡相互連接進行通信而設計的協議。在因特網中,它是能使連接到網上的所有計算機網絡實現相互通信的一套規則,規定了計算機在因特網上進行通信時應當遵守的規則。任何廠家生產的計算機系統,只要遵守 IP 協議就可以 與因特網互連互通。各個廠家生產的網絡系統和設備,如以太網分組交換網等,它們 相互之間不能互通,不能互通的主要原因是因為它們所傳送數據的基本單元(技術上稱之為 “” )的格式不同。IP 協議實際上是一套由軟件程序組成的協議軟件,它把各種不同“統一轉換成IP 數據報 ”格式,這種轉換是因特網的一個最重要的特點,使所有各種計算機都能在因特網上實現互通,即具有“開放性”的特點。正是因為有了 IP 協議,因特網才得以迅速發展成為世界上最大的、開放的計算機通信網絡。因此,IP 協議 也可以叫做“ 因特網協議 ”。

????IP 地址Internet Protocol Address)是指 互聯網協議地址,又譯為 網際協議地址。IP 地址是 IP協議 提供的一種統一的地址格式,它為互聯網上的每一個網絡和每一臺主機分配一個 邏輯地址,以此來屏蔽物理地址的差異

????IP 地址是一個 32 位 的二進制數,通常被分割為 4 個“ 8 位二進制數”(也就是 4 個字節)。IP 地址通常用“ 點分十進制 ”表示成(a.b.c.d)的形式,其中,a,b,c,d 都是 0~255 之間的 十進制整數

  • 例:點分十進IP地址(100.4.5.6),實際上是 32 位二進制數(01100100.00000100.00000101.00000110)。

3.2 IP 地址編址方式

????最初設計互聯網絡時,為了便于尋址以及層次化構造網絡,每個 IP 地址包括兩個標識碼(ID),即 網絡ID主機 ID。同一個物理網絡上的所有主機都使用同一個 網絡 ID,網絡上的一個主機(包括網絡上工作站服務器路由器等)有一個 主機 ID 與其對應。Internet 委員會定義了 5 種 IP 地址類型以適合不
同容量的網絡,即 A 類~ E 類。其中 ABC 3類(如下表格)由 InternetNIC 在全球范圍內統一分配DE 類為特殊地址。
在這里插入圖片描述
(1)A類IP地址
????一個 A 類 IP 地址是指, 在 IP 地址的四段號碼中,第一段號碼網絡號碼,剩下的三段號碼為 本地計算機的號碼。如果用二進制表示 IP 地址的話,A 類 IP 地址 就由 1 字節的網絡地址3 字節主機地址 組成,網絡地址的 最高位 必須是 “0”。A 類 IP 地址中網絡的標識長度8 位,主機標識的長度24 位,A類網絡地址數量較少,有 126 個網絡每個網絡可以容納主機數達 1600 多萬臺。

  • A 類 IP 地址 地址范圍 1.0.0.1 - 126.255.255.254(二進制表示為:00000001 00000000 00000000 00000001 - 01111110 11111111 11111111 11111110)。最后一個(*.255.255.255)是廣播地址
  • A 類 IP 地址子網掩碼255.0.0.0每個網絡支持的最大主機數為: 256 3 ? 2 = 16777214 臺 {256}^3 - 2 = 16777214 臺 2563?2=16777214

(2)B類IP地址
????一個 B 類 IP 地址 是指,在 IP 地址的四段號碼中,前兩段號碼網絡號碼。如果用二進制表示 IP 地址的話,B 類 IP 地址就由 2 字節的網絡地址2 字節主機地址 組成,網絡地址的 最高位 必須是“ 10 ”。B 類 IP地址網絡的標識長度16 位,主機標識的長度16 位,B 類網絡地址 適用于中等規模的網絡,有 16384個網絡,每個網絡所能容納的計算機數為 6 萬多臺

  • B 類 IP 地址 地址范圍 128.0.0.1 - 191.255.255.254 (二進制表示為:10000000 00000000 00000000 00000001 - 10111111 11111111 11111111 11111110)。 最后一個(*.*.255.255)是廣播地址
  • B 類 IP 地址 的子網掩碼為 255.255.0.0每個網絡 支持的 最大主機數 為: 256 2 ? 2 = 65534 臺 {256}^2 - 2 = 65534 臺 2562?2=65534

(3)C類IP地址
????一個 C 類 IP 地址是指,在 IP 地址的四段號碼中,前三段號碼網絡號碼,剩下的一段號碼為 本地計算機的號碼。如果用二進制表示 IP 地址的話,C 類 IP 地址就由 3 字節的網絡地址1 字節主機地址 組成,網絡地址的 最高位 必須是“110”。C 類 IP 地址網絡的標識長度24 位,主機標識的長度8 位,C 類網絡地址數量較多,有 209 萬余個網絡。適用于小規模的局域網絡,每個網絡最多只能包含254 臺計算機。

  • C 類 IP 地址 范圍 192.0.0.1- 223.255.255.254 (二進制表示為: 11000000 00000000 00000000 00000001 - 11011111 11111111 11111111 11111110)。
  • C類IP地址的子網掩碼為 255.255.255.0每個網絡 支持的 最大主機數 為: 256 ? 2 = 254 臺 256 - 2 = 254 臺 256?2=254

(4)D類IP地址
????D 類 IP 地址 在歷史上被叫做 多播地址multicast address),即 組播地址。在 以太網中,多播地址命名了一組應該在這個網絡中應用接收到一個分組的站點。多播地址的 最高位 必須是 “1110”,范圍從224.0.0.0 - 239.255.255.255

(5)特殊的網址
????每一個字節都為 0 的地址( “0.0.0.0” )對應于 當前主機
????IP 地址中的每一個字節都為 1 的 IP 地址( “255.255.255.255” )是 當前子網 的廣播地址
????IP 地址中凡是以 “11110” 開頭的 E 類 IP 地址保留 用于將來和實驗使用。
????IP地址中不能以十進制 “127” 作為開頭,該類地址中數字 127.0.0.1127.255.255.255 用于回路測試,如:127.0.0.1 可以代表 本機IP地址

子網掩碼

  • 子網掩碼subnet mask)又叫網絡掩碼地址掩碼子網絡遮罩,它是一種用來指明一個 IP 地址哪些位 標識的是 主機所在的子網,以及 哪些位 標識的是主機的 位掩碼。子網掩碼不能單獨存在,它必須結合 IP 地址一起使用。子網掩碼只有一個作用,就是將某個 IP 地址 劃分成 網絡地址主機地址 兩部分。
  • 子網掩碼是一個 32 位地址,用于屏蔽 IP 地址的一部分以區別 網絡標識主機標識 ,并說明該 IP地址是在局域網上,還是在 廣域網 上。

????子網掩碼是在 IPv4 地址資源緊缺的背景下為了解決 lP 地址分配而產生的 虛擬 lP 技術,通過子網掩碼ABC 三類地址劃分為若干子網,從而顯著提高了 IP 地址的分配效率,有效解決了 IP 地址資源緊張的局面。另一方面,在企業內網中為了更好地管理網絡,網管人員也利用子網掩碼的作用,人為地將一個較大的企業內部網絡劃分為更多個小規模的子網,再利用 三層交換機路由功能實現子網互聯,從而有效解決了網絡廣播風暴和網絡病毒等諸多網絡管理方面的問題。

????在大多數的網絡教科書中,一般都將子網掩碼的作用描述為通過邏輯運算,將 IP 地址劃分為網絡標識(Net.ID) 和主機標識(Host.ID),只有網絡標識相同的兩臺主機在無路由的情況下才能相互通信

????根據 RFC950 定義,子網掩碼 是一個 32 位的 2 進制數, 其對應 網絡地址 的所有位都置為 1,對應于 主機地址 的所有位置都為 0子網掩碼 告知 路由器,地址的哪一部分是網絡地址,哪一部分是主機地址使路由器正確判斷任意 IP 地址是否是本網段的,從而正確地進行路由。網絡上,數據從一個地方傳到另外一個地方,是依靠 IP 尋址。從邏輯上來講,是兩步的。

  • 第一步,從 IP 中找到所屬的網絡,好比是去找這個人是哪個小區的;
  • 第二步,再從 IP 中找到主機在這個網絡中的位置,好比是在小區里面找到這個人。

????子網掩碼的設定必須遵循一定的規則。與二進制 IP 地址相同,子網掩碼由 10 組成,且 1 0 分別連續。子網掩碼的長度也是 32 位,左邊是網絡位,用二進制數字 “1” 表示,1 的數目等于網絡位的長度;右邊是主機位,用二進制數字 “0” 表示,0 的數目等于主機位的長度。這樣做的目的是為了讓掩碼與 IP 地址做 按位與運算 時用 0 遮住原主機數,而不改變原網絡段數字,而且很容易通過 0 的位數確定子網的主機數2 的主機位數次方 - 2因為主機號全為 1 時表示該網絡廣播地址,全為 0 時表示該網絡的網絡號,這是兩個特殊地址)。通過子網掩碼,才能表明一臺主機所在的子網與其他子網的關系,使網絡正常工作。

4. 端口

4.1 簡介

????“端口” 是英文 port 的意譯,可以認為是 設備外界通訊 交流的出口。端口可分為 虛擬端口物理端口:

  • 虛擬端口計算機內部交換機路由器內端口不可見,是特指 TCP/IP協議中的端口,是 邏輯意義 上的端口。例如計算機中的 80 端口、21 端口、23 端口等。(也可以理解為:內存緩沖區)
  • 物理端口 又稱為 接口,是 可見端口,計算機背板的 RJ45 網口交換機路由器集線器RJ45 端口。電話使用 RJ11 插口也屬于 物理端口 的范疇。

????如果把 IP 地址 比作一間房子,端口 就是出入這間房子的 。真正的房子只有幾個門,但是一個 IP 地址的端口可以有 65536(即: 2 16 2^{16} 216)個之多!端口是通過 端口號 來標記的,端口號只有整數,范圍是從 065535 2 16 ? 1 2^{16} - 1 216?1)。

4.2 端口類型

(1)周知端口(Well Known Ports)
????周知端口是眾所周知的端口號,也叫知名端口公認端口 或者 常用端口,范圍從 01023它們緊密綁定于一些特定的服務

  • 例如 80 端口分配給 WWW 服務,21 端口分配給 FTP 服務,23 端口分配給 Telnet 服務等等。
  • 我們在 IE 的地址欄里輸入一個網址的時候是不必指定端口號的,因為在默認情況WWW 服務的端口是 “80”。

????網絡服務 是可以使用其他端口號的,如果不是默認的端口號則應該在地址欄上指定端口號,方法是在地址后面加上冒號: ”(半角),再加上 端口號。比如使用 “8080” 作為 WWW 服務的端口,則需要在地址欄里輸入“網址:8080”。但是有些系統協議使用固定的端口號,它是不能被改變的,比如 139 端口專門用于 NetBIOSTCP/IP 之間的通信,不能手動改變。

(2)注冊端口(Registered Ports)
????端口號102449151,它們松散地綁定于一些服務,分配給 用戶進程應用程序,這些進程主要是用戶選擇安裝的一些應用程序,而不是已經分配好了公認端口的常用程序。這些端口在沒有被服務器資源占用的時候,可以用用戶端 動態選用為源端口

(3)動態端口 / 私有端口(Dynamic Ports / Private Ports)
????動態端口 的范圍是從 4915265535。之所以稱為 動態端口,是因為它 一般不固定分配某種服務,而是動態分配

5. 網絡模型

5.1 OSI 七層參考模型

????七層模型,亦稱 OSIOpen System Interconnection)參考模型,即 開放式系統互聯。參考模型是 國際標準化組織ISO)制定的一個用于 計算機通信系統間互聯標準體系,一般稱為 OSI 參考模型七層模型。它是一個七層的、抽象的模型體,不僅包括一系列抽象的術語或概念,也包括具體的協議。

在這里插入圖片描述

記憶物數網傳會表應

  1. 應用層網絡服務最終用戶一個接口 。這一層為用戶的應用程序(例如電子郵件、文件傳輸和終端仿真)提供網絡服務。
  2. 表示層:數據的表示安全壓縮。主要是進行對接收的數據進行解釋、加密與解密、壓縮與解壓縮等(也就是把計算機能夠識別的東西轉換成人能夠能識別的東西(如圖片、聲音等))。
  3. 會話層:通過傳輸層(端口號傳輸端口接收端口建立數據傳輸的通路。主要在你的系統之間 發起會話 或者 接受會話請求
  4. 傳輸層:定義了一些傳輸數據的 協議端口號WWW 端口 80 等),如:TCP傳輸控制協議,傳輸效率低,可靠性強,用于傳輸可靠性要求高,數據量大的數據),UDP用戶數據報協議,與 TCP 特性恰恰相反,用于傳輸可靠性要求不高,數據量小的數據,如 QQ 聊天數據就是通過這種方式傳輸的)。 主要是將從下層接收的數據進行 分段傳輸,到達目的地址后再進行 重組。常常把這一層數據叫做
  5. 網絡層:進行 邏輯地址尋址,在位于不同地理位置的網絡中的兩個主機系統之間 提供連接路徑選擇。Internet 的發展使得從世界各站點訪問信息的用戶數大大增加,而網絡層正是管理這種連接的層。
  6. 數據鏈路層建立邏輯連接、進行 硬件地址尋址差錯校驗 等功能。定義了如何讓 格式化數據 為單位進行傳輸,以及如何讓控制對物理介質的訪問。網卡將 比特 組合成 字節 進而組合成 ,用MAC地址訪問介質。
  7. 物理層:主要定義 物理設備標準,如網線的接口類型光纖的接口類型各種傳輸介質的傳輸速率等。它的主要作用是傳輸比特流(就是由10 轉化為 電流強弱 來進行傳輸,到達目的地后再轉化為10,也就是我們常說的 數模轉換模數轉換)。這一層的數據叫做 比特

5.2 TCP/IP 四層模型

簡介
????現在 Internet(因特網)使用的主流協議族是 TCP/IP 協議族,它是一個分層多協議的通信體系。 TCP/IP協議族 是一個 四層協議系統自底而上 分別是 數據鏈路層網絡層傳輸層應用層。每一層完成不同的功能,且通過若干協議來實現,上層協議 使用 下層協議提供的服務

在這里插入圖片描述
????TCP/IP 協議 在一定程度上參考了 OSI 的體系結構。OSI 模型共有七層,從下到上分別是 物理層數據鏈路層網絡層傳輸層會話層表示層應用層。但是這顯然是有些復雜的,所以在 TCP/IP 協議中,它們被簡化為了四個層次
(1)應用層表示層會話層 三個層次提供的服務相差不是很大,所以在 TCP/IP 協議中,它們被合并為 應用層 一個層次。
(2)由于 傳輸層網絡層 在網絡協議中的地位十分重要,所以在 TCP/IP 協議中它們被作為獨立的兩個層次。
(3)因為 數據鏈路層物理層 的內容相差不多,所以在 TCP/IP 協議中它們被歸并在 網絡接口層 / 數據鏈路層 一個層次里。只有四層體系結構的 TCP/IP 協議,與有七層體系結構的 OSI 相比要簡單了不少,也正是這樣,TCP/IP 協議在實際的應用中效率更高,成本更低

在這里插入圖片描述

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

6. 協議

6.1 簡介

????協議網絡協議 的簡稱,網絡協議是通信計算機雙方必須 共同遵從的一組約定。如怎么樣建立連接怎么樣互相識別等。只有遵守這個約定,計算機之間才能相互通信交流。它的三要素是:語法語義時序

????為了使數據在網絡上從源到達目的,網絡通信的參與方必須 遵循相同的規則,這套規則稱為 協議protocol),它最終體現為在網絡上傳輸的 數據包的格式。協議往往分成幾個層次進行定義,分層定義是為了使某一層協議的改變不影響其他層次的協議。

6.2 常見協議

????應用層 常見的協議有:FTP協議(File Transfer Protocol 文件傳輸協議)、HTTP 協議(Hyper Text Transfer Protocol 超文本傳輸協議)、NFSNetwork 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 地址解析協議)(ip -> mac)、RARP協議(Reverse Address Resolution Protocol 反向地址解析協議)(mac -> ip)。

6.3 UDP 協議

在這里插入圖片描述

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

6.4 TCP 協議

在這里插入圖片描述

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

6.5 IP 協議

在這里插入圖片描述

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

6.6 以太網幀協議

在這里插入圖片描述

  • 類型:使 目的主機數據鏈路層 知道應將數據部分 上交給哪個處理0x800 表示 IP0x806 表示 ARP0x835 表示 RARP

6.7 ARP 協議

  • ARP協議:通過 IP 地址查找 MAC 地址;
  • RARP協議:通過 MAC 地址查找 IP 地址;

在這里插入圖片描述

  1. 硬件類型1 表示 MAC 地址
  2. 協議類型0x800 表示 IP 地址
  3. 硬件地址長度6 字節
  4. 協議地址長度4字節(ip)
  5. 操作1 表示 ARP 請求2 表示 ARP 應答3 表示 RARP 請求4 表示 RARP 應答

在這里插入圖片描述

例如:在win 的 cmd 輸入: arp -a

在這里插入圖片描述

6.8 封裝

????上層協議如何使用 下層協議提供的服務的呢?

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

6.9 分用 / 解封裝

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

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

7. 網絡通信的過程

????舉例:QQ 聊天,發送:nihao

在這里插入圖片描述

注:僅供學習參考,如有不足,歡迎指正!

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

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

相關文章

【兔子機器人】根據自身機器人參數修改simulink模型

關節電機 機體初始高度 !!!接下來嘗試修改各腿的坐標朝向

LeetCode54題:螺旋矩陣(python3)

路徑的長度即為矩陣中的元素數量,當路徑的長度達到矩陣中的元素數量時即為完整路徑,將該路徑返回。 循環打印: “從左向右、從上向下、從右向左、從下向上” 四個方向循環打印。 class Solution:def spiralOrder(self, matrix: List[List[i…

怎么對App進行功能測試

測試人員常被看作是bug的尋找者,但你曾想過他們實際是如何開展測試的嗎?你是否好奇他們究竟都做些什么,以及他們如何在一個典型的技術項目中體現價值?本文將帶你經歷測試人員的思維過程,探討他們測試app時的各種考慮. …

Android和Linux的嵌入式開發差異

最近開始投入Android的懷抱。說來慚愧,08年就聽說這東西,當時也有同事投入去看,因為惡心Java,始終對這玩意無感,沒想到現在不會這個嵌入式都快要沒法搞了。為了不中年失業,所以只能回過頭又來學。 首先還是…

虛擬內存與mmap,brk

虛擬內存與mmap,brk 基本概念及相關術語 1.1 基本概念 虛擬內存使得應用程序認為它擁有連續的可用的內存(一個連續完整的地址空間),而實際上,它通常是被分隔成多個物理內存碎片,還有部分暫時存儲在外部磁盤存儲器上&…

【C語言】linux內核generic_xdp_tx

一、中文注釋 /* 在執行通用XDP時,我們必須繞過qdisc層和網絡挖掘點,* 以匹配驅動內XDP的行為。*/ void generic_xdp_tx(struct sk_buff *skb, struct bpf_prog *xdp_prog) {struct net_device *dev skb->dev; // 獲取skb對應的網絡設備struct netd…

面試高頻率問答題目

索引: 主鍵索引:表的id (唯一 且 不能為空) 唯一索引:表User 假設有account 字段 ,用戶名不重復 (唯一 可以為空) 復合索引:where() 的條件 用戶名,密碼 …

MySQL:函數

提醒: 設定下面的語句是在數據庫名為 db_book里執行的。 創建user_info表 注意:pwd為密碼字段,這里使用了VARCHAR(128)類型,為了后面方便對比,開發項目里一般使用char(32),SQL語句里使用MD5加密函數 USE db…

【博圖TIA-Api】通過Excel自動新建文件夾和導入FB塊

【博圖TIA-Api】通過Excel自動新建文件夾和導入FB塊 說明思路準備獲取Excel表格內文件名和FB塊名等信息新建文件夾部分篩分獲取的文件夾數據,去掉重復內容創建文件夾 導入FB塊導出FB塊的xml文件查找需要放置的文件夾導入塊 說明 續上一篇文章,這次是根據…

多線程 --- [ 線程池、線程安全、其他常見的鎖 ]

目錄 1. 線程池 模塊一:線程的封裝 模塊二:線程池的封裝 模塊三:互斥量的封裝 (RAII風格) 模塊四:任務的封裝 模塊五:日志的封裝 模塊六:時間的封裝 模塊六:主函數 模塊七&#xff1a…

備戰藍橋杯---狀態壓縮DP進階題1

我們來看一看一道比較難的問題(十分十分的巧妙): 顯然我們應該一行一行放,又豎的會對下一行產生影響,我們令橫著放為0,豎著放的上方為1. 對于下一行,前一行放1的下面為0,但是會出現…

【Redis | 第九篇】一篇文章看懂Redis持久化機制

文章目錄 9.一篇文章看懂Redis持久化機制9.1Redis的兩種持久化機制9.1.1為什么有持久化? 9.2RDB機制9.2.1介紹9.2.2觸發機制(1)save命令觸發(2)bgsave命令觸發(3)自動觸發 9.2.3執行流程9.2.4優…

C++知識點總結(22):模擬算法真題 ★★★★☆《卡牌游戲》《移動距離》

一、卡牌游戲 1. 審題 題目描述 A , B , C A,B,C A,B,C 三人在玩一個卡牌游戲,規則如下: 游戲開始時, 3 3 3 人分別會得到若干張手牌, 每張牌上寫著 a,b,c 中某一個字母。手牌的順序嚴格按照輸入順序排列&#xff0c…

前端【技術類】資源學習網站整理(那些年的小網站)

學習網站整理 值得分享的視頻博主:學習網站鏈接 百度首頁的資源收藏里的截圖(排列順序沒有任何意義,隨性而已~),可根據我標注的關鍵詞百度搜索到這些網站呀,本篇末尾會一一列出來,供大家學習呀 …

徹底搞懂回溯算法(例題詳解)

目錄 什么是回溯算法: 子集問題: 子集問題II(元素可重復但不可復選): 組合問題: 組合問題II(元素可重復但不可復選): 排列問題: 排列問題II(元素可重復但不可復選): 什么是回溯算法: 「回溯是遞歸的副產品&…

最小生成樹---Kruskal算法

最小生成樹定義: 給定一張邊帶權的無向圖 G(V,E),其中 V 表示圖中點的集合,E 表示圖中邊的集合。 由 V 中的全部 n 個頂點和 E 中 n?1 條邊構成的無向連通子圖被稱為 G 的一棵生成樹,其中邊的權值之和最小的生成樹被稱為無向圖 G…

leetcode hot100 每日溫度

在本題中,我們是通過單調棧來解決的,因為我們采用了棧的數據結構,并且,棧內存儲的元素是單調的。 本題我們考慮,將氣溫數組元素的下標存入棧中,首先初始化要把0放入,0是下標的意思。然后我們拿…

華為HCIP Datacom H12-821 卷4

1.單選題 下面哪些策略或工具不能夠應用于 OSPF: A、access-list B、prefix-list C、route- Policy D、as-path filter 正確答案: D 解析: as-path-filter命令用來創建AS路徑過濾器,OSPF屬于IGP協議,不涉及到AS號。 2.單選題…

【python基礎學習05課_for循環以及雙重for循環】

FOR循環 一、認識循環-while 1、循環條件不能超出列表長度 當i 1&#xff0c;while i < len(lst1) 時&#xff0c;i 3后, 打印print&#xff08;lst[3]&#xff09;小宋老師&#xff0c; 繼續1, i 4, 4不小于 len(lst1)&#xff0c;打破循環。 2、循環條件超出列表長度報錯…

JMeter元件和采樣器一覽

Apache JMeter是一個強大的開源負載測試工具&#xff0c;用于性能和功能測試。JMeter提供了豐富的元件和采樣器&#xff0c;使得它能夠模擬復雜的測試場景和高并發的用戶請求。以下是JMeter中常用的一些元件和采樣器的介紹和講解&#xff1a; 測試計劃元件 測試計劃&#xff0…