1. 程式人生 > 實用技巧 >網際協議IP

網際協議IP

一、概述

1、什麼是IP

​ IP是Internet Protocol(網際協議)的縮寫。是TCP/IP中的網路層協議。IP協議只提供了無連線,不可靠,盡力而為的資料傳輸方式

IP主要包含三方面內容:IP編址方案、分組封裝格式及分組轉發規則。

​ IP設計出來是為了提高網路的可擴充套件性

1、解決網際網路問題:實現大規模網路互聯

2、解耦:讓各層協議互不影響,獨立發展

2、網路層協議有哪些

0、網際協議IP(Internet Protocol) ==》資料轉發

1、地址解析協議 ARP (Address Resolution Protocol) ==》IP地址轉換成MAC地址

2、逆地址解析協議 RARP (Reverse Address Resolution Protocol) ==》MAC地址轉換成IP地址

3、網際控制報文協議 ICMP (Internet Control Message Protocol) ==》檢測網路報錯

4、網際組管理協議 IGMP(Internet Group Management Protocol) ==》路由選擇

二、IP地址

1、IP地址組成

IP地址是一種分等級的地址結構。每一類地址都由兩個固定長度的欄位組成(一共32位)。

​ 其中一個欄位是網路號 net-id,它標誌主機(或路由器)所連線到的網路。

​ 而另一個欄位則是主機號 host-id,它標誌該主機(或路由器)。

  • 分等級的好處

    1、方便IP地址的管理。只用分配網路號,主機號自己分配
    2、方便路由器進行轉發。 只用根據網路號進行轉發,減少路由表的儲存量
    

2、IP地址分類

​ A類地址有8位網路號,以0開頭。可以容納2的24次方臺計算機

​ B類地址有16位網路號,以10開頭。可以容納2的16次方臺計算機

​ C類地址有24位網路號,以110開頭。可以容納2的8次方臺計算機

​ D類地址以1110開頭。多播使用

​ E類地址以1111開頭。儲存為今後使用

3、IP地址使用範圍

4、特殊的IP地址

127.0.0.1 		本地環回地址
169.254.0.0   	window自動分配的ip地址


--- 保留的私網地址(內網),在公網上訪問不到
10.0.0.0
172.16.0.0 -- 172.31.0.0      B類地址
192.168.0.0 -- 192.168.255.0  C類地址

三、劃分子網

需求:將一個c類地址劃分成多個子網

1、子網掩碼

子網掩碼:遮蔽一個IP地址的網路部分的“全1”位元模式。 ==》即把網路部分全部變為1,主機位全部為0。就得到了子網掩碼

​ 對於A類地址來說,預設的子網掩碼是255.0.0.0;

​ 對於B類地址來說預設的子網掩碼是255.255.0.0;

​ 對於C類地址來說預設的子網掩碼是255.255.255.0。

  • ​ 作用

    1、 區分網路號和主機號
    2、 劃分子網
    3、 判斷是不是在一個網段裡
    	比如ip地址為192.168.0.1  子網掩碼為255.255.255.0 --》 做與運算。網路號為192.168.0 
           ip地址為192.168.1.1  ==》網路號為192.168.1 所以不在同一網段
    

  • ​ 案例:利用子網數量計運算元網掩碼

    前提: 192.168.0.0 劃分成兩個子網(2的二進位制位10)
    
    1、計算主機位需要變成網路位的位數:1  ==》 如果二進位制中只有一個1,那麼就減一位。否則保持原狀 (如10和11000 分別為1和5位)
    
    2、得到最終的子網掩碼 ==》 原子網掩碼為255.255.255.0==>那麼現在的子網掩碼為:255.255.255.128
    

2、子網劃分步驟

1、確定子網掩碼

2、確定主機號和網路號

3、確定各子網可用ip地址範圍(主機位不全為0或1

網段除一次2,子網掩碼右移1位

3、子網劃分案例

​ 假設將192.168.0.1 、255.255.255.0(子網掩碼) 這個C類地址劃分成四個子網 :

​ 如圖: 劃分四個子網,子網掩碼需要右移兩位。可知 子網掩碼為: 255.255.255.192

網路位 主機位 子網地址 可用ip地址範圍
00 000000 192.168.0.0 192.168.0.1 -- 192.168.0.62
01 000000 192.168.0.64 192.168.0.65 -- 192.168.0.126
10 000000 192.168.0.128 192.168.0.129 -- 192.168.0.190
11 000000 192.168.0.192 192.168.0.193 -- 192.168.0.253

小技巧: 當畫出上述圖時,可以通過 子網開始+1 ---- 子網結束-2 得到可用ip地址範圍 ==》 比如 0+1 ---- 64-2

4、子網劃分的意義

1、減少網路風暴帶來的危害 ==》 當網路風暴產生時,隻影響本網段的計算機

2、節省IP地址 ==》比如:學校裡有四間教室,如果每個教室(各有10臺主機)都分配一個C類ip地址的話,那麼就會浪費很多ip地址(每個網段只有10臺主機,但原本可以容納254臺)。但是如果只分配一個ip地址,在這基礎上劃分四個子網,就會減少ip地址的浪費

四、子網合併:構造超網

​ 需求:將多個子網合併到一個子網中,可以互相通訊

前提:將200臺機器接到交換機C下,分配ip:192.168.0.1

​ 將200臺機器接到交換機D下,分配ip:192.168.1.1

​ 子網掩碼都是255.255.255.0 經過和ip地址進行與運算得出網路號分別為 192.168.0和192.168.1。 所以不在同一網段下,不能互相通訊

​ 為了讓兩網段可以互相通訊,有以下解決方案:

  • 方案一

    讓路由器作為兩個網段的閘道器,這樣A傳送的資料可以通過路由器再轉向B。效率慢
    

  • 方案二:構造超網

    將192.168.0.1和192.168.1.1兩個c類網絡合並 
    

    1、子網掩碼前移一位。 這樣網路位就變為23位,子網掩碼變成255.255.254 (原來最後一位變為主機位)
    2、總網段在192.168.0下面(主機號歸零)
    

五、IP地址與MAC硬體地址

​ 以下為資料通訊的原理圖:

傳送資料時,資料從高層到底層逐層封裝,到資料鏈路層時,將ip資料報封裝成MAC幀,並帶上源地址和目標地址的硬體地址

  • 計算機通訊過程

1、ip地址決定最終要到哪臺計算機,MAC地址決定下一跳是哪

2、交換機基於資料幀的MAC地址轉發資料幀,路由器基於資料包的IP地址轉發資料包;

六、IP資料報

1、格式

一個 IP 資料報由首部和資料兩部分組成。(資料報也可以說是資料包)

首部的前一部分是固定長度,共 20 位元組,是所有 IP 資料報必須具有的。

在首部的固定部分的後面是一些可選欄位,其長度是可變的。

2、IP 資料報首部

資料報首部可分為固定部分和可變部分,固定部分為了五行,每行32位即4個位元組。

  • 版本——佔 4 位(第一行四個位元組中0~3位),指 IP 協議的版本該 IP 協議的版本號為 4 (即 IPv4);

  • 首部長度——佔 4 位(第一行四個位元組中4~7位),表示首部總的長度(固定+可變部分);可表示的最大數值是 15 個單位(一個單位為 4 位元組)因此 IP 的首部長度的最大值是 60 位元組。

  • 區分服務——佔 8 位(第一行四個位元組中8~15位),區分服務。即該段設定了資料報的優先程度,若要想實現資料報優先傳輸還需要在路由器端配置相應的區分服務設定。只有在使用區分服務(DiffServ)時,這個欄位才起作用。在一般的情況下都不使用這個欄位 。

  • 總長度——佔 16 位(第一行四個位元組中16~31位),指首部和資料之和的長度,單位為位元組,因此資料報的最大長度為 65535 位元組。總長度必須不超過最大傳送單元 MTU。

  • 標識(identification)——佔 16 位(第二行四個位元組中1~15位),它是一個計數器,用來產生資料報的標識,即每產生一個數據報貼上一個標識。

  • 標誌(flag)——佔 3 位(第二行四個位元組中16~18位),目前只有前兩位有意義。

    ​ 標誌欄位的最低位是 MF (More Fragment)。MF = 1 表示後面“還有分片”。MF = 0 表示最後一個分片。

    ​ 標誌欄位中間的一位是 DF (Don't Fragment) 。只有當 DF = 0 時才允許分片。即標誌表示該資料報是否分片了?是第幾個分片?

  • 片偏移——佔12 位(第二行四個位元組19~31位)指出:較長的分組在分片後某片在原分組中的相對位置。片偏移以 8 個位元組為偏移單位。

    ​ 由於最多隻能傳輸1500位元組的資料,所以會先把大位元組資料分片傳輸,如下所示:

  • 生存時間——佔 8 位(第三行四個位元組中0~7位)記為 TTL (Time To Live)資料報在網路中可通過的路由器數的最大值。即計算機發出資料時會附帶一個TTL值,該值在資料報每經過一個路由器就自減1,等到某路由器接收到該資料報發現其TTL值變為0時不在中轉該資料報,而是將其丟棄並向最初發送者返回一個ICMP報文。TTL的設定可以防止資料報無限迴圈傳輸

​ 如上,得到TTL為52,說明中間經過(128-52)=76個路由器。通過加引數 ping www.baidu.com -i 1 可以追蹤資料報傳輸過程

  • 協議——佔 8 位(第三行四個位元組8~15位)欄位指出此資料報攜帶的資料使用何種協議。比如4:IP協議 17:UDP協議等

  • 首部校驗和——佔 16 位(第三行四個位元組16~31位)欄位只檢驗資料報的首部不檢驗資料部分,目的是驗證資料報的首部有無錯誤。

3、抓包演示

​ 下載Wireshark https://www.wireshark.org/#download

過濾ip:   ip.addr == 180.101.49.12 and icmp

七、IP資料報轉發分組的流程

1、 流程

資料路由: 路由器在不同網段轉發資料包;

網路暢通的條件:資料包能去能回;(路由器要知道到目標網路 下一跳應該給哪個介面)

當計算機PC0 ping PC1時,網路要想通。

就要求Router0、 Router1、 Router2和Router3都有到192.168.1.0/24網路的路由

同時,當資料從PC1 返回給PC0時,也需要Router0、 Router1、 Router2和Router3都有到192.168.0.0/24網路的路由

注意:路由器知道直連網路的網段。即Router0知道192.168.0.0 和172.16.0.0網段的資訊

2、 資料包轉發:案例分析

前提:沒有配置靜態路由

  • PC0是否可以ping通Router1的2介面
不可以。 Router1的2介面在172.16.0.0網段,和PC0不在同一網段。        
	去的時候: 由於不在同一網段,PC0先把資料包給Router0的左邊埠(閘道器),Router0直連172.16.0.0網段,所以可以去Router1的2介面        
	回的時候:Router1直連的是172.16.0.0和172.16.1.0網段,與192.168.0.0網段非直連,所以如果不給Router1手動輸入關於網段192.168.0.0的相關路徑資訊,Router1將無法把資料傳回PC0,資料包能去不能回,造成通訊失敗。

3、windows路由設定

windows的預設閘道器就是預設路由

  • 檢視路由表
route print

  • 測試:沒有配置閘道器的情況

    使用自配置ip,但是沒有配置閘道器(即沒有路由)

ip route ==> 檢視路由表==》沒有預設路由了,無法訪問其他網段

ping 其他網段,無法訪問

  • 解決方法:自己配置路由表或配置閘道器

    route add 0.0.0.0 mask 0.0.0.0 172.16.24.129
    

    三個地址分別是網路目標IP地址、 網路掩碼和閘道器。

4、多網絡卡轉發:案例分析

前提: PC-PT 有兩張網絡卡,所以有兩個閘道器,即兩個預設路由。

​ 172.16.0.0 為內網

  • 問題

    當Clou-PT-Cloud0使用者訪問PC-PT時,去的時候可以訪問到PC-PT。但是當PC-PT返回資料時,由於有兩個路由(可以選擇任意路徑傳送),所以並不一定能把資料包準確傳送給使用者(可能會由網絡卡2的路由轉到內網,內網發現自己沒有這個ip地址,就丟棄)

  • 解決方法

    刪除網絡卡2的預設路由,配置靜態路由

route add 172.16.0.0 mask 255.255.255.0 172.16.0.1  ==>去172.16.0.0網段走路由172.16.0.1

這樣設定之後,網絡卡1通過預設路由訪問Internet, 網絡卡2通過指定路由訪問內網

參考連結:

https://baike.baidu.com/item/IP/224599


如果本篇部落格有任何錯誤和建議,歡迎大佬們批評指正

我是知逆,我們下期見

Peace