網絡層IP協議知識大梳理

全是通俗易懂的講解,如果你本節之前的知識都掌握清楚,那就速速來看我的IP協議筆記吧~

????????自己寫自己的八股!讓未來的自己看懂! (全文手敲,受益良多)

?

網路基礎3


? ?網路層
? ?

????????TCP并沒有把數據發到網路里面,只是提供了可靠性策略。而IP協議的本質工作才是,提供一種能力,將數據跨網路從A主機送到B主機!用戶需要的是:提供一種能力,將數據可靠地跨網路從A主機送到B主機。所以TCP提供策略,IP提供能力!

1.前置知識

????????我們要傳輸數據,前提要對所有的主機進行標識,源IP和目的IP來標識源主機和目的
主機。IP地址=目標網路+目標主機。從A主機到B主機要經過許多路由器轉發,根據IP地址先到達目標網路,然后再交給目標主機。構建網路的時候,為我們將來高速定位一臺主機提供基礎保證!!

2.IP協議的報頭

? ? ??寬度為0~31,4個字節,標準長度為20個字節。與TCP類似。
????????如何理解IP報頭呢?本質就是結構體,填字段

問題1:報頭和載荷如何分離?
? ?

????????報頭標準長度有20字節,數據包括有http的報頭,TCP的報頭和用戶數據,通過固定報頭+自描述字段(4位首部長度(如果超過20字節就是選項的了),總長度(總長度-4位首部長度=數據))。?
TCP協議段格式:


? TCP協議也有4位首部長度
????????都代表著:如果該位置的值是x,那么x*4就是真實報頭。4位首部長度范圍在【0000,1111】即0到15,因為至少有20字節,所以在【5,15】,所以真實報頭大小為【20,60】
?
????????IP地址有2^32個,對于IP地址不足,有NAT,IPv6。

????????IP有自己總長度,而TCP沒有。說明UDP,TCP最后都要把數據交給IP層,字節流服務也好,面向數據報也罷,將來在IP層發的都是數據報。所以TCP的字節流的概念,是TCP提供給應用層,應用層所關注到的概念。
????????8位生存時間:當把IP報文轉發出去(路由器之間的轉發)的時候,因為有一些原因(網絡有bug之類),導致IP報文被一直轉發?


問題2:如何將有效載荷交付給上層?

答:8位協議:我們要把IP的有效載荷交給上層的哪個協議(TCP/UDP)

16位首部校驗和:IP要對首部做校驗,校驗失敗的首部直接丟棄,由發送方TCP直接傳送。校驗成功才可以向上交付

????????結論:socket: IP + port。端口號是給TCP去用的,IP 是給IP層去用的。 有目的IP地址和目的端口號,就可以向目標位置發送報文了。用源端口和目的端口填充TCP報頭,用源IP地址和目的IP地址填充IP報頭。

????????為什么要把點分十進制IP轉為4字節IP?
????????因為IP報頭的源IP地址和目的IP地址是4個字節,在真正路由的時候,根據目的IP地址來進行路徑選擇。在通信的時候,只工作在網絡層,沒有傳輸層?
?

網段劃分(重要)

? ? ?


?????????網絡號和主機號很好理解

1.?? ?路由器本質上也是特定一個子網的主機,也要配置IP地址
2.?? ?路由器可以實現跨網段傳發,至少要連接2個子網,相當于同時在2個子網。所以路由器一定要配置多個IP.(認為路由器有多張網卡就行了)
3.?? ?路由器一般是一個子網中的第一個設備,一般它的IP地址都是:網絡號. 1
4.?? ?路由器的功能,IP報文的轉發,但不僅僅如此~,還可以構建子網(局域網)?

一開始因為ip地址只有32位,大概42億多,是不夠用的。?

?,分類劃分法這種方法會存在IP地址嚴重浪費的問題。
針對這種情況提出了新的劃分方案,稱為CIDR(Classless Interdomain Routing):
?
?

子網掩碼的特點:


? ?子網掩碼左側為1,右側為0.將IP地址與網絡掩碼 & 就可以得到網絡號。因此我們可以提供調整子網掩碼1的個數來調整網絡IP中主機號的多少~
????????子網掩碼在路由器里面配置的。

?140.252.20.0 為網絡號,140.252.20.255 為廣播。這兩個主機不用

????????子網掩碼可以對IP 32位任意劃分。?
??
子網掩碼的書寫: ?

特殊的IP地址

IP地址的數量限制
?
?


動態內存分配IP地址,用的時候給你,不用的時候釋放給別人用。相當于共享機制。
真正變革的技術IPv6:128位,即:2^128個IP地址


私有IP地址和公網IP地址
?

IP地址被劃分為:公網IP 和 私有IP。

理解運營商和全球網絡理解

?

?????????我們是怎么上網的?

????????運營商的工作人員先讓光纖入戶,然后要有2個設備,一個是調制解調器(貓),第二個是家用路由器。路由器有倆套賬號和密碼,一套是交錢提供上網服務的(給運營商);一套是給路由器加密的(給自己),防止別人蹭網。國家 大力 發展互聯網,加大了網絡基礎設施建設。之前流量費非常貴,現在流量費非常便宜了。目的是讓更多的人入網,

全球互聯網:
????????IP地址是一份很大的資源,從大區域進入小區域,最后到達目的主機。我們的網絡被精心設計過的。

公網和私網有什么關系的?
? ?

????????當目的IP不在當前網時要通過路由器進行尋找,直到找到目的主機。然后該主機會將源IP地址和目的IP地址轉換,導致原來的私有IP變成了目的IP地址。因為私有IP不能出現在公網上的,所以該數據就回不來了!!!?
?

?我們應該怎么解決這樣的問題呢?

????????所以當IP地址要經歷路由器的時候,將源IP地址替換成每一個路由器的WAN口IP,即報文的替換。所以私有IP地址不斷被替換的過程,我們叫做NAT技術(主要解決IP地址不足的問題)

我們為什么要使用私有IP而不直接使用公用IP呢?
?

???????? ?原因是到達底層的區域的時候,IP地址已經嚴重不足了,不能夠滿足如此多的數量。
所以公網IP用在龐大的路由器里面,例如:國家,省份,城市。而私網IP地址用在小區域里面,例如:西安內部的網絡 全都用私網。

所以:互聯網=公網+私網~
?


路由器可以構建子網,路由器有Lan口IP和WAN口IP。家用路由器理解上和運營商的路由器性質是類似的。

為什么私網有那么多的類型呢??

????????如果子網覆蓋得比較大,我們可以用第一種:10.*的可以有更多地址,其次是第二種,第三種。根據不同的情況選擇不同的類型。

我們可以通過IP地址前幾位,區分是在哪個區域,通過前面的數字就可以找到該IP的具體區域了。

大公司的IP是這樣的(私有IP+公網IP)嗎?
? ?也是類似的

為什么要這樣呢?原因是IP地址不足


路由

?本地的主機也可以工作在網絡層,也有掩碼。查路由表的方式:拿著目標主機的IP & 掩碼,如果結果等于目標網絡,就通過該接口發出去。如果不等于就找下一個?

查路由表的結果:

1.?? ?給你具體的下一跳
2.?? ?路由器不清楚是去哪一跳,但是傳入默認路由(告訴你別的可能知道的)一般是同網段的另一臺路由器,所以目標IP不在目前內網中。默認路由是出口路由器,即通向另一個更大的網段。
3.?? ?到達入口路由器

結論:因為IP=目標網絡+目標主機,我們在進行轉發的時候,我們先到達目標網絡。
?

?
????????我們轉發的目的地址為192.168.56.3,先拿其與掩碼&,得到192.168.56.0,與第一行地址作對比,不同下一個。發現與第二個相同,就會跳向0 eth1.所以IP路由的過程,就是逐個查路由表的過程。


我們再來看看IP協議的報文

????????實際上,在一臺主機中,報文并沒有通過網絡層直接發出去,而是繼續交給了下一層協議(數據鏈路層)
?,數據鏈路層(屬于網卡的驅動層),不能一次發送過大的報文!所以要求上層不能給我交付過大的報文!這就是為什么TCP要發一個一個的報文,而不是全部都發過去。假如IP報文就是很大,就要求IP成進行分片轉發。

IP不光要考慮分片,未來也要組裝。 這行報頭維護 IP的分片和組裝字段。

16位標識:
? ? ?不同的IP報文有不同的標識
?

3位標識(更多分片):?
?
13位片偏移:目的要把之前發的片組裝在一起

如何組裝呢?
?
1.?? ?確保將分片全部都聚在一起(相同的標識)
2.?? ?通過片偏移進行排序(完成排序)

前置問題:你怎么知道一個IP是被分片了呢?
????????如果沒有分片,片偏移=0,更多分片=0。當我們發現 片偏移!=0 或 更多分片==1 (就分片一個)就說明分片了!

如果分片丟失了呢?

1.?? ?丟第一個 ?收到的眾多被分片的報文中,沒有一個片偏移為0,就說明是丟第一個
2.?? ?丟中間 ?讓報文的長度與報文的片偏移做比較,如果差了超過一個報文的長度就說明丟中間了
3.?? ?丟最后一個 ?所有的報文中,在3位標記的第三個都標記為1,就說明是最后一個


我們不建議分片!可能增加丟包概率,在IP中如果任何分片丟失,都要進行重發。


分片過程用數據舉例:
? ?假如報文有3000字節,報頭有20字節。我們要對它進行分片,前提:每個分片必須要帶報頭,因為報頭有標識,更多分片,片偏移的字段,少了這些無法組裝。我們先分1500,然后把20字節的報頭和后面的1480數據組成新的1500字節的分片,最后還剩20字節,再和20字節結合,形成40字節的分片。
?,然后再進行組裝

請你幫我解釋一下:
? 一個http請求,從服務器發出到你拿到響應的整個過程

? ?從應用層request和response 談,request和response都是數據要交給TCP,交給TCP就會面臨可靠性,擁塞控制,流量控制,面向連接,丟包重傳的問題,如果再想談,TCP報文向下傳到IP,又會涉及路由問題,分片問題。細節談的越多越說明你越厲害~

下篇文章我將更新——數據鏈路層~期待你的關注👉【A charmer】

?

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

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

相關文章

數據結構與算法學習導航

目錄 指導思想資料總結代碼隨想錄hello-algoOI-WIKI 一名麻瓜的刷leetcode的簡單概述。 在這里對過去的自己說: 如果你相信算法有用你就刷刷leetcode,如果不相信面試會讓你相信。 當然,現在我確實認為算法和數據結構有用,leetcode也有用。 …

【網絡安全】誰入侵了我的調制解調器?(二)

文章目錄 針對 TR-069 協議 REST API 的攻擊思路攻擊百萬臺調制解調器意外發現 Cox 后端 API 的授權繞過漏洞確認我們能夠進入任何人的設備訪問和更新任何Cox商業客戶賬戶通過泄露的加密密鑰覆蓋任何人的設備設置執行對任何調制解調器的命令影響最后想說閱讀本文前,請先行瀏覽…

大模型在急性單純性闌尾炎預測及治療方案制定中的應用研究

目錄 一、引言 1.1 研究背景與意義 1.2 研究目的 1.3 研究方法與創新點 二、急性單純性闌尾炎概述 2.1 定義與發病機制 2.2 臨床表現 2.3 傳統診斷方法 三、大模型在急性單純性闌尾炎預測中的應用 3.1 大模型簡介 3.2 數據收集與處理 3.3 模型訓練與優化 3.4 預測…

Linux 上安裝和配置 VNC 遠程桌面

在 Linux 上安裝和配置 VNC(Virtual Network Computing)可以讓你遠程訪問圖形化桌面環境。以下是詳細的安裝和配置步驟,適用于主流 Linux 發行版(如 Ubuntu、CentOS、Debian 等)。 1. 安裝 VNC 服務器 Ubuntu/Debian …

《AI大模型應知應會100篇》第22篇:系統提示詞(System Prompt)設計與優化

第22篇:系統提示詞(System Prompt)設計與優化 摘要 在大語言模型(LLM)應用中,系統提示詞(System Prompt)是控制模型行為的核心工具之一。它不僅定義了模型的身份、角色和行為規范,還直接影響輸…

其他網頁正常進入,但是CSDN進入之后排版混亂

顯示不正常,排版混亂 解決方法: ①打開網絡設置 ②更改適配器 ③所連接的網絡 --右鍵 屬性 然后就可以正常訪問了。

Qwen2.5-VL視覺大語言模型復現過程,沒碰到什么坑

視頻講解:Qwen2.5-VL視覺大語言模型復現過程,沒碰到什么坑_嗶哩嗶哩_bilibili Qwen2.5-VL視覺大語言模型復現過程,沒碰到什么坑 今天復現下Qwen2.5-VL玩玩 https://github.com/QwenLM/Qwen2.5-VL 創建conda環境,實測22.04&#x…

宮庭海:跨界融合與家國情懷的影視開拓者

從音樂經紀人到影視多面手的創業之路 近日,國內娛樂產業領軍人物、著名音樂經紀人、制片人、影視投資人宮庭海先生再次受到廣泛關注。憑借其卓越的成就和貢獻,宮庭海先生在業界樹立了良好的口碑和廣泛的影響力。 宮庭海, 遼寧省大連市人&…

LeetCode算法題(Go語言實現)_51

題目 給你兩個下標從 0 開始的整數數組 nums1 和 nums2 ,兩者長度都是 n ,再給你一個正整數 k 。你必須從 nums1 中選一個長度為 k 的 子序列 對應的下標。 對于選擇的下標 i0 ,i1 ,…, ik - 1 ,你的 分數 …

并查集(力扣2316)

這種涉及不同連通分量的,看上去就可以用并查集。并查集的模板請參見上一篇內容。并查集(力扣1971)-CSDN博客 現在我們要求的是無法互相到達的點對。根據觀察易得,我們只需要求出每個并查集的元素數量,然后遍歷每個點&…

Python在生成藝術中的創新應用

Python在生成藝術中的創新應用 在數字藝術的浪潮中,Python以其強大的庫支持和簡潔的語法,成為了生成藝術領域的一顆璀璨明珠。今天,就讓我們一起踏上這段充滿創意與驚喜的旅程,探索Python如何在生成藝術中大放異彩。 一、引言 生成藝術,是一種通過算法自動生成藝術作品的…

ROS ROS2 機器人深度相機激光雷達多傳感器標定工具箱入門教程(一)

系列文章目錄 目錄 系列文章目錄 前言 一、安裝 1.1 ROS 2 官方軟件包 二、教程 2.1 標定配置器 2.1.1 機器人選項 2.1.2.1 外參相機-激光雷達標定 2.1.2.2 外參激光雷達-激光雷達標定 2.1.2.3 外參相機參照標定 2.1.2.4 外參激光雷達-參考標定 2.2 外參照相機-激…

Ubuntu利用docker搭建Java相關環境問題記錄

Docker拉取鏡像超時 報錯 Unable to find image dpanel/dpanel:latest locally docker: Error response from daemon: Get "https://registry-1.docker.io/v2/ ": context deadline exceeded (Client.Timeout exceeded while awaiting headers)解決方式 在etc/do…

list的模擬實現和反向迭代器的底層

1&#xff1a;list的模擬實現 1&#xff1a;鏈表的節點 對于list的模擬實現&#xff0c;我們需要先定義一個節點的類可以使用&#xff08;class也可以使用struct&#xff09; // List的節點類 template<class T> struct ListNode {ListNode(const T& val T()){_p…

數據加載與保存

通用方式? SparkSQL提供了通用的數據加載方式&#xff0c;使用spark.read.loa方法&#xff0c;并可通過format指定數據類型&#xff08;如csv、jdbc、json、orc、parquet、textFile&#xff09;。 load方法后需傳入數據路徑&#xff08;針對csv、jdbc、json、orc、parquet、…

7 編譯型語言、解釋型語言與混合型語言的深度解析:以 C、Java、Python 為例

在編程領域&#xff0c;語言的執行方式是其設計哲學的核心體現&#xff0c;直接影響著性能、可移植性和開發效率。本文將深入剖析編譯型語言&#xff08;以 C 語言為例&#xff09;、解釋型語言&#xff08;以 Python 為例&#xff09;和混合型語言&#xff08;以 Java 為例&am…

Edge瀏覽器安卓版流暢度與廣告攔截功能評測【不卡還凈】

安卓設備上使用瀏覽器的體驗&#xff0c;很大程度取決于兩個方面。一個是滑動和頁面切換時的反應速度&#xff0c;另一個是廣告干擾的多少。Edge瀏覽器的安卓版本在這兩方面的表現比較穩定&#xff0c;適合日常使用和內容瀏覽。 先看流暢度。Edge在中端和高端機型上啟動速度快&…

智能云圖庫-12-DDD重構

本節重點? 之前我們已經完成了本項目的功能開發。由于本項目功能豐富、代碼量大&#xff0c;如果是在企業中維護開發的項目&#xff0c;傳統的 MVC 架構可能會讓后續的開發協作越來越困難。所以本節魚皮要從 0 帶大家學習一種新的架構設計模式 —— DDD 領域驅動設計。 大綱…

量子安全郵件系統 —— 郵件回溯密鑰銷毀機制

這里寫目錄標題 量子安全郵件系統 —— 郵件回溯密鑰銷毀機制一、項目背景與簡介二、理論基礎2.1 密鑰銷毀的重要性2.2 時間衰減與回溯銷毀2.3 安全日志與報警機制三、系統架構設計3.1 模塊劃分3.2 系統架構圖(Mermaid示意圖)四、關鍵算法與實現流程4.1 密鑰生成與存儲4.2 郵…

個人博客系統后端 - 用戶信息管理功能實現指南(上)

本文記錄了如何實現用獲取戶信息&#xff0c;用戶信息更新&#xff0c;用戶頭像上傳三大基礎功能 先上接口實現截圖&#xff1a; 一、項目結構概覽 先介紹一下 個人博客系統采用了標準的 Spring Boot 項目結構&#xff0c;用戶功能相關的文件主要分布在以下幾個目錄&#xff1a…