網絡層重點協議——IP協議詳解

???????今天給大家分享的是網絡層的重點協議——IP協議。

清風的CSDN博客

🛩?🛩?🛩?希望我的文章能對你有所幫助,有不足的地方還請各位看官多多指教,大家一起學習交流!

??????動動你們發財的小手,點點關注點點贊!在此謝過啦!哈哈哈!😛😛😛

目錄

一、IP 協議格式?

?二、認識 IP 地址

2.1 概念

2.2 作用

2.3 格式

2.4 組成?

?2.5 分類?

2.6?特殊的IP地址

2.7 子網掩碼

2.7.1 格式

2.7.2 作用

2.7.3 計算方式?

三、NAT 機制?


一、IP 協議格式?

  • 4位版本號(version):指定IP協議的版本,對于IPv4來說,就是4。
  • 4位頭部長度(header length):IP頭部的長度是多少個32bit,也就是 length * 4 的字節 數。4bit表示最大的數字是15,因此IP頭部最大長度是60字節。
  • 8位服務類型(Type Of Service):3位優先權字段(已經棄用),4位TOS字段,和1位保留字段(必須置為0)。4位TOS分別表示:最小延時,最大吞吐量,最高可靠性,最小成本,這四者相互沖突,只能選擇一個。
  • 16位總長度(total length):IP數據報整體占多少個字節。
  • 16位標識(id):唯一的標識主機發送的報文。如果IP報文在數據鏈路層被分片了,那么每一個片里面的這個id都是相同的。
  • 3位標志字段:第一位保留(保留的意思是現在不用,但是還沒想好說不定以后要用到)。第二位置為1表示禁止分片,這時候如果報文長度超過MTU,IP模塊就會丟棄報文。第三位表示"更多分片",如果分片了的話,最后一個分片置為0,其他是1。類似于一個結束標記。
  • 13位分片偏移(framegament offset):是分片相對于原始IP報文開始處的偏移。其實就是在表示當前分片在原報文中處在哪個位置。實際偏移的字節數是這個值 * 8 得到的。因此,除了最后一個報文之外,其他報文的長度必須是8的整數倍(否則報文就不連續了)。
  • 8位生存時間(Time To Live,TTL):數據報到達目的地的最大報文跳數。一般是64。每次經過一個路由,TTL -?1,一直減到0還沒到達,那么就丟棄了。這個字段主要是用來防止出現路由循環。
  • 8位協議:表示上層協議的類型。
  • 16位頭部校驗和:使用CRC進行校驗,來鑒別頭部是否損壞。
  • 32位源地址和32位目標地址:表示發送端和接收端。
  • 選項字段(不定長,最多40字節):不做介紹

?二、認識 IP 地址

2.1 概念

IP 地址( Internet Protocol Address )是指互聯網協議地址,又譯為網際協議地址。

2.2 作用

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

2.3 格式

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

? ? ? ??IP協議有兩個版本,IPv4和IPv6。IPv4數量=2^32,大約43億左右,而TCP/IP協議規定,每個主機都需要有一個IP地址。對于全世界計算機來說,這個數量是不夠的,所以后來推出了IPv6(長度128位,是IPv4的4倍)。但因為目 前IPv4還廣泛的使用,且可以使用其他技術來解決IP地址不足的問題,所以IPv6也就沒有普及。

2.4 組成?

IP 地址分為兩個部分,網絡號和主機號:
  • 網絡號標識網段,保證相互連接的兩個網段具有不同的標識
  • 主機號標識主機,同一網段內,主機之間具有相同的網絡號,但是必須有不同的主機號
通過合理設置網絡號和主機號,就可以保證在相互連接的網絡中,每臺主機的 IP 地址都是唯一的。
那么,如何劃分網絡號和主機號呢?

?2.5 分類?

過去曾經提出一種劃分網絡號和主機號的方案,把所有 IP 地址分為五類,如下圖所示:

2.6?特殊的IP地址

  • 將IP地址中的主機地址全部設為0,就成為了網絡號,代表這個局域網
  • 將IP地址中的主機地址全部設為1,就成為了廣播地址,用于給同一個鏈路中相互連接的所有主機發送數據包
  • 127.*的IP地址用于本機環回(loop back)測試,通常是127.0.0.1
  • 本機環回主要用于本機到本機的網絡通信(系統內部為了性能,不會走網絡的方式傳輸),對于開發網絡通信的程序(即網絡編程)而言,常見的開發方式都是本機到本機的網絡通

在上述的分類中,存在IP地址浪費的問題:

  • 單位一般會申請B類網絡(C類連接主機數量有限),但實際網絡架設時,連接的主機數量又常遠小于65534B類連接主機數),造成IP地址浪費;同理,A類網絡的IP地址也會造成大量的浪費。
  • 當一個單位申請了一個網絡號。他想將該網絡能表示的IP地址再分給它下屬的幾個小單位時,如果在申請新的網絡就會造成浪費。
為了解決以上問題,引入子網掩碼來進行子網劃分。

2.7 子網掩碼

2.7.1 格式

子網掩碼格式和 IP 地址一樣,也是一個 32 位的二進制數。其中左邊是網絡位,用二進制數字 “1” 表示, 1 的數目等于網絡位的長度;右邊是主機位,用二進制數字“0” 表示, 0 的數目等于主機位的長度。 子網掩碼也可以使用二進制所有高位1相加的數值來表示。

2.7.2 作用

  • ?劃分A,B,C三類 IP 地址子網:
如一個 B IP 地址: 191.100.0.0 ,按 A ~ E 類分類來說,網絡號二進制數為 16 位網絡號 +16位主機號。 假設使用子網掩碼 255.255.128.0 (即 17 ) 來劃分子網,意味著劃分子網后,高 17 位都是網絡位 / 網絡 號,也就是將原來 16 位主機號,劃分為 1 位子網號 +15 位主機號。
此時, IP 地址組成為:網絡號 + 子網號 + 主機號,網絡號和子網號統一為網絡標識(劃分子網后的網絡號 / 網段)

  • 網絡通信時,子網掩碼結合IP地址,可以計算獲得網絡號(劃分子網后的網絡號)及主機號(劃分子網后的主機號)。一般用于判斷目的IP與本IP是否為同一個網段。

? ? ? ?對于網絡通信來說,發送數據報時,目的主機與發送端主機是否在同一個網段,流程是不一樣的。?

2.7.3 計算方式?

  • 將 IP 地址和子網掩碼進行“按位與”操作,得到的結果就是網絡號。
  • 將子網掩碼二進制按位取反,再與 IP 地址位與計算,得到的就是主機號。

示例:

關于IP協議還有一個重要功能——路由選擇(數據報在IP協議下如何傳輸)

路由器轉發的過程類似于問路的過程,每個路由器內部都有一個數據結構——路由表。數據報到達路由器,就查詢路由表。若查到就直接按照這個方向轉發。否則路由器給一個默認的方向,沿著默認方向走。

三、NAT 機制?

IPv4 協議中, IP 地址數量不充足,那么如何解決這個問題呢?
NAT 技術當前解決 IP 地址不夠用的主要手段,是路由器的一個重要功能:
  • NAT能夠將私有IP對外通信時轉為全局IP,也就是就是一種將私有IP和全局IP相互轉化的技術方法
  • 很多學校,家庭,公司內部采用每個終端設置私有IP,而在路由器或必要的服務器上設置全局IP
  • 全局IP要求唯一,但是私有IP不需要;在不同的局域網中出現相同的私有IP是完全不影響的

  • NAT路由器將源地址從10.0.0.10替換成全局的IP 202.244.174.37
  • NAT路由器收到外部的數據時,又會把目標IP從202.244.174.37替換回10.0.0.10
  • 在NAT路由器內部,有一張自動生成的,用于地址轉換的表
  • 當 10.0.0.10 第一次向 163.221.120.9 發送數據時就會生成表中的映射關系

NAPT 工作過程?

那么問題來了,如果局域網內,有多個主機都訪問同一個外網服務器,那么對于服務器返回的數據中,目的IP 都是相同的。那么 NAT 路由器如何判定將這個數據包轉發給哪個局域網的主機?

這時候NAPT來解決這個問題了,使用IP+port來建立這個關聯關系:

這種關聯關系也是由 NAT 路由器自動維護的。例如在 TCP 的情況下,建立連接時,就會生成這個表項,在斷開連接后,就會刪除這個表項。
NAT 技術的缺陷
  • 無法從NAT外部向內部服務器建立連接
  • 轉換表的生成和銷毀都需要額外開銷
  • 通信過程中一旦NAT設備異常,所有的TCP連接都會斷開

🌈🌈🌈好啦,今天的分享就到這里。

🌈🌈🌈希望各位看官讀完文章后,能夠有所提升!

🎉🎉🎉創作不易,還希望各位大佬支持一下!

??????點贊,你的認可是我創作的動力!

???收藏,你的青睞是我努力的方向!

??????評論:你的意見是我進步的財富

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

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

相關文章

阿里內部教程Jmeter 性能測試常用圖表、服務器資源監控

性能測試常用圖表 插件安裝 步驟 1:安裝插件管理器 在 Jmeter 官網上下載插件管理器 Plugins-manager-1.3.jar將 jar 包放入到 lib\ext 目錄下重啟 Jmeter,可以在選項下看到 Plugins Manager 選項 步驟 2:安裝指定的插件 打開 Plugins Ma…

JVM虛擬機系統性學習-運行時數據區(堆)

運行時數據區 JVM 由三部分組成:類加載系統、運行時數據區、執行引擎 下邊講一下運行時數據區中的構成 根據線程的使用情況分為兩類: 線程獨享(此區域不需要垃圾回收) 虛擬機棧、本地方法棧、程序計數器 線程共享(數…

【矩陣】73. 矩陣置零

題目 法1&#xff1a;自己想的笨蛋方法 class Solution {public void setZeroes(int[][] matrix) {Set<Integer> rowSet new HashSet<>();Set<Integer> columnSet new HashSet<>();for (int i 0; i < matrix.length; i) {for (int j 0; j <…

DataGrip常見問題

查詢語句結果沒有輸出在output中 進行如下配置 配置后查詢結果輸出在output中 左側數據庫鏈接信息導航欄被隱藏 以上導航欄被隱藏&#xff0c;按下圖操作調出

【Qt開發流程】之容器類2:使用STL風格迭代器進行遍歷

概述 對于每個容器類&#xff0c;都有兩種stl風格的迭代器類型:一種提供只讀訪問&#xff0c;另一種提供讀寫訪問。應該盡可能使用只讀迭代器&#xff0c;因為它們比讀寫迭代器快。 STL迭代器的API以數組中的指針為模型。例如&#xff0c;操作符將迭代器推進到下一項&#xf…

Java開發工具:IDEA 2023.3(WinMac)中文激活版

IntelliJ IDEA 2023是一款由JetBrains公司出品的集成開發環境&#xff08;IDE&#xff09;&#xff0c;專為程序員設計。它以智能、高效和人性化為主要特點&#xff0c;致力于提高開發人員的生產力&#xff0c;幫助程序員更快、更好地編寫代碼。 在智能功能方面&#xff0c;Int…

Panalog 日志審計系統 sprog_deletevent.php SQL 注入漏洞復現

0x01 產品簡介 Panalog大數據日志審計系統定位于將大數據產品應用于高校、 公安、 政企、 醫療、 金融、 能源等行業之中&#xff0c;針對網絡流量的信息進行日志留存&#xff0c;可對用戶上網行為進行審計&#xff0c;逐漸形成大數據采集、 大數據分析、 大數據整合的工作模式…

c語言一維數組總結詳解

目錄 介紹&#xff1a; 一維整型數組&#xff1a; 聲明&#xff1a; 初始化&#xff1a; 打印輸出&#xff1a; 輸出結果&#xff1a; 浮點型數組&#xff1a; 代碼&#xff1a; 運行結果&#xff1a; 補充&#xff1a; 一維字符數組&#xff1a; 字符數組聲明及初始…

Python軸承故障診斷 (二)連續小波變換CWT

目錄 前言 1 連續小波變換CWT原理介紹 1.1 CWT概述 1.2 CWT的原理和本質 2 基于Python的CWT實現與參數對比 2.1 代碼示例 2.2 參數介紹和選擇策略 2.2.1 尺度長度&#xff1a; 2.2.2 小波函數&#xff08;wavelet&#xff09;&#xff1a; 2.3 凱斯西儲大學軸承數據的…

《算法與數據結構》答疑

答疑 問題一問題二問題三問題四 問題一 在匹配成功時&#xff0c;在返回子串位置那里&#xff0c;為什么不是i-t的長度啊&#xff0c;為什么還要加一 問題二 問題三 問題四 問&#xff1a;如果題目讓我們構造一個哈夫曼樹&#xff0c;像我發的這個例題的話&#xff0c;我畫成我…

深度學習與計算機視覺技術的融合

深度學習與計算機視覺技術的融合 一、引言 隨著人工智能技術的不斷發展&#xff0c;深度學習已經成為了計算機視覺領域的重要支柱。計算機視覺技術能夠從圖像和視頻中提取有用的信息&#xff0c;而深度學習則能夠通過學習大量的數據來提高計算機視覺技術的性能。本文將探討深…

貪心算法和動態規劃

目錄 一、簡介 二、貪心算法案例&#xff1a;活動選擇問題 1.原理介紹 三、動態規劃案例&#xff1a;背包問題 1.原理介紹 四、貪心算法與動態規劃的區別 五、總結 作者其他文章鏈接 正則表達式-CSDN博客 深入理解HashMap&#xff1a;Java中的鍵值對存儲利器-CSDN博客…

Java Web——過濾器 監聽器

目錄 1. Filter & 過濾器 1.1. 過濾器概述 1.2. 過濾器的使用 1.3. 過濾器生命周期 1.4. 過濾器鏈的使用 1.5. 注解方式配置過濾器 2. Listener & 監聽器 2.1. 監聽器概述 2.2. Java Web的監聽器 2.2.1. 常用監聽器 2.2.1.1. ServletContextListener監聽器 …

Course3-Week1-無監督學習

Course3-Week1-無監督學習 文章目錄 Course3-Week1-無監督學習1. 歡迎1.1 Course3簡介1.2 數學符號約定 2. K-means算法2.1 K-means算法的步驟2.2 代價函數2.3 選擇聚類數量 3. 異常檢測3.1 異常檢測的直觀理解3.2 高斯分布3.3 異常檢測算法3.4 選取判斷閾值 ε \varepsilon ε…

Redis 持久化 —— 超詳細操作演示!

四、Redis 持久化 四、Redis 持久化4.1 持久化基本原理4.2 RDB持久化4.3 AOF持久化4.4 RDB與AOF對比4.5 持久化技術轉型 五、Redis 主從集群六、Redis 分布式系統七、Redis 緩存八、Lua腳本詳解九、分布式鎖 數據庫系列文章&#xff1a; 關系型數據庫: MySQL —— 基礎語法大全…

【京東服裝推薦系統 - 數據爬取、可視化和個性化推薦】

京東服裝推薦系統 - 數據爬取、可視化和個性化推薦 前言數據集與數據爬取數據分析與可視化Django搭建可視化平臺主要功能1. 數據可視化2. 我的收藏3. 商品推薦4. 登錄注冊5. 信息展示6. 信息管理7. 對數據的收藏8. 推薦 創新點結語 前言 在現今的電商市場中&#xff0c;服裝領…

鴻蒙原生應用/元服務開發-新版本端云一體化模板體驗反饋

一、前言 云端一體化模板是基于Serverless服務構建的一套模板&#xff0c;提供了應用生態常見場景需求的代碼實現&#xff0c;開發者可將所需能力快速部署和集成到自己的應用中。 二、準備 體驗最新的遠端一體化模板&#xff0c;需要將云模板替換掉。為此&#xff0c;我們需要做…

我對遷移學習的一點理解——領域適應(系列3)

文章目錄 1. 領域適應&#xff08;Domain Adaptation&#xff09;的基本概念2.領域適應&#xff08;Domain Adaptation&#xff09;的目標3.領域適應&#xff08;Domain Adaptation&#xff09;的實現方法4.領域適應&#xff08;Domain Adaptation&#xff09;的可以解決的問題…

gittee使用教學

一、git簡介 Git是一個開源的分布式版本控制系統&#xff0c;用于敏捷高效的處理任何大小項目的版本管理。 核心功能&#xff1a; 項目的版本管理 團隊協同開發 二、準備工作 1、下載 Git 2、除了選擇安裝位置以外&#xff0c;其他都無腦安裝 3、檢查一下安裝情況 win…

常用方法和調度

Thread類的方法 1、start()&#xff1a; ①啟動當前線程&#xff08;新的線程&#xff09; ②調用當前線程的run&#xff08; &#xff09;。 2. run()&#xff1a; ①通常須要進行重寫 ②將創建線程要執行的操作聲明在此方法中。 3.、currentThread()&#xff1a; ①靜態方法…