(1): 什麼是IP協議?
互聯網協議IP是Internet Protocol的縮寫,中文縮寫問哦“網協”。IP協議位於OSI模型中的第三層也就是網絡層,其主要目的是使得網絡之間能夠互相通信。
(2):什麼是IP地址? IP地址是如何產生的?
互聯網協議地址(Internet Protocol Address)中文爲:網際協議地址,縮寫爲IP地址。
上一次說的ARP協議,通過分析發現它是依靠MAC地址發送數據的。但是當ARP以廣播的方式發送ARP請求時,需要確保所有的主機都要收到該數據包的。這樣不僅傳輸效率低,而且只能侷限在同一個子網中。也就是說如果兩臺主機不在一個子網,廣播報是發送不過去的。當然了這樣的設計是合理的,不然會導致全網癱瘓。所以需要一種方法來區分那些MAC地址屬於同一個子網,那些不是。同一個子網就採用廣播的發送方式。否則就採用“路由”發送。所以就必須引入一套新的地址,使得用戶能夠區分不同的計算機是否屬於同一個子網,通常人們稱問“IP”地址。這時候一臺主機就會有兩種地址。MAC地址,IP地址。但是兩者沒有太大的關係。MAC地址是綁定在網卡上的,是唯一的。而IP地址是有網絡管理員分配的。
(3)IP地址
IP地址是IP協議提供的一種統一的地址格式,它爲互聯網上的每一個網絡和每一臺主機分配分配一個邏輯地址,以此來屏蔽物理地址的差異。IP地址分爲IPv4和IPv6兩大類,其中IPv4使用最廣泛的。在IPv4中IP地址是由32個二進制組成。由於IP地址是32位的二進制,用戶記住一串32位二進制是很難的,所以IP地址採用點分四組的表示法。
(4)IP地址的構成
IP地址之所以會被分成四個單獨的部分,是因爲每個IP地址都包含兩部分,分別爲網絡地址和主機地址。網絡地址用來標識設備所連接到的局域網,主機地址用來表示這個局域網中的設備本身。
但是通常一個IP地址是無法判斷網絡部分的。所以需要引入另一個參數“子網掩碼”。子網掩碼的形式等同於IP地址,也是一個32位的二進制數字。它的網絡部分全爲1,主機部分全文0.
例如: IP爲10.10.1.22,它的子網掩碼爲11111111.11111111.00000000.00000000。這就意味着IP地址的前一半10.10是網絡地址,1.22是主機地址。
(1)什麼是IP數據報
TCP/IP協議定義了一個在局域網上傳輸的包,稱爲IP數據報(IP Datagram)。IP數據報由首部和數據兩部分組成,首部部分包括版本,長度,IP地址等信息。數據部分一般用來傳輸其他的協議,如TCP,UDP和ICMP協議等。
(2)IP數據報首部格式
版本: 指IP協議所使用的的版本。目前廣泛使用的IP協議版本號爲4
首部長度: IP首部長度,可表示的最大十進制數值是15。注意,該字段所表示的單位是32位字長(4個字節)。因此首部長度最大爲60字節
服務類型: 優先級標誌位和服務類型標誌位
總長度: 指IP首部和數據包中數據之後的長度,單位爲字節。總長度爲16位,因此最大長度爲2^16- 1 = 65536字節
標識: 一個唯一的標識數字,用來標識一個數據報或者被分片數據報的次序
標誌: 用來標識一個數據包是否是一組分片數據包的一部分。 最低位MF(More Fragment)。當MF=1表示後面“還有分片”的數據包,MF=0表示這已經是最後一個分片數據了,中間位DF(Dont Fragment)不能分片,只有當DF=0時,才允許分片
片偏移: 一個數據包其中的分片,用於重新組裝數據用
生存時間: 用來定義數據包的生存週期
協議: 用來識別在數據包序列中上層協議數據包的類型
首部檢驗和: 一個錯誤的檢測機制,確保IP頭部沒有被修改
源地址: 發送端的IP地址
目的地址:數據包目的的IP地址
可選字段:保留作額外的IP選項
數據部分:使用IP傳遞實際數據用。
(3)分析IP數據報
在本地主機上ping www.baidu.com,使用wireshark獲取數據
(4)先分析29幀,也就是請求幀
選中29幀,查看包的詳細信息
(5)分析30幀,也就是迴應幀
其中明顯的不同的是生存時間發了變化,也就是從我本地到百度之間總共經過了64-55=9個路由。當然每次可能經過的路徑是不一樣的。我們可以通過tracert命令查看。
可以看到經過了11個路由,顯然每次路徑是不一樣的。
(1)存活時間/生存時間是什麼?
存活時間Time-to-live(TTL)值定義了在該數據報丟失之前,所能經歷的時間,或者能夠經過的最大路由數目。TTL在數據報被創建時就會被定義,而且通常在每次被髮往一個路由器的時間減1.
例如: 如果一個數據包的存活時間是2,那就是說當它經過第一個路由器的時候,其TTL會被減去1,並向第二個路由發送,如果到第2個路由這是TLL時間會減去1,變爲0。如果這時候數據包還沒有到達目的地,則會丟棄該數據包。
(2)存活時間的作用的是啥?
假設在發送目地的過程中,會經過數十個路由器,在這個過程中,可能會碰到被配置錯誤的路由器,而會導致其目的地錯誤。在這種情況下,可能這個數據包就會一直髮送,在網絡中出現一個死循環,這樣就會導致整個網絡癱瘓等。所以當每次經過一個路由器TTL的值都會減去1,所以可以防止這個問題的出現。
(3)分析IP數據包中TTL值的變化
前面說過,如果在同一個網段傳輸數據,TTL的值是補變化的。如果是不同的網段TTL的值是變化 的
1. 分析同網段中TTL的值
我搭建的環境是用192.168.0.1 ping 192.168.0.2 (上圖是抓包的過程)
可以看到74幀是request幀
相應的75幀就是迴應報文(reply)
可以看到如果是相同的網段,TTL的值是相同的。
2. 分析不同網段TTL的值
分析不同網段的TTL,其實在第二節中分析中可以明顯看見TTL的值是不同的。 在這裏我通過ping新浪的官網。很明顯新浪官網地址和我本地的是屬於不同的網段
其中19幀是請求報文(request)而20幀是響應報文(reply)
分析19幀報文的詳細信息:
分析20幀的詳細信息:
(1) IP分片數據包
由於以太網數據報的“數據”部分最長只有1500字節,因此如果IP數據報超過了1500字節,就需要分割成多個以太網數據包分開發送。
在使用ping命令時,默認是不會超過1500字節的,所以如果想要獲取IP分片包,需要指定發送的ICMP包大大小。
比如: ping 192.168.0.1 -l 3000 指定獲取包的大小爲3000
(2) 分析IP分片數據包分析
在該獲取文件中,123幀和678幀是一個完整的ping包,其中123是一個請求包,678是響應包。
1. 分析 第1幀數據包
2. 分析第2幀數據包
3. 分析第3幀數據包
分析就到這裏