如果妳滾回關於“DNS”的文章,看看我們用nslookup的調試模式找到這個網站時的內容,妳就知道這個數據包說的是什麽了。讓我們再看壹下ICMP數據包的內容。
在第壹行中,我們看到數字“00 80 c7 47 8c 9a 48 54 e8 27 75 77”分別表示目的地和源的MAC地址,然後“08 00”表示以太網II的IP協議類型。以太網II可以說是IEEE802.3的改進版,還記得《網絡概論》中對“邏輯形式”的描述嗎?這可以說是數據鏈網絡層要跟蹤的數據。接下來是IP包的內容。
請先記住上圖,我打算在下壹節詳細討論每壹行的意思。首先,我們來看看IP包的格式,它的組成部分以及每壹部分的長度。版本(4)互聯網報頭長度(4)服務類型(8)總長度(16)。
標識(16)標誌(3)片段偏移量(13)
生存時間(8)協議(8)報頭校驗和(16)
源地址(32)
目的地址(32)
選項(變量)填充(0-24)數據
.....上圖中括號內的數字是每個組件的長度(位)。如果妳足夠細心,妳會計算出每壹列的總長度是32bit。先分別解釋壹下各個組件的名稱,指的是IP包在傳輸過程中所要求的服務類型。其中壹個* * *由8位組成,每壹位的組合代表不同的含義。000.....例程默認將IP順序設置為0,否則值越高,優先級越高。
...0....延遲要求0正常,1低。
.....0...吞吐量流量要求0為正常,1為高。
.....0 0..可靠性可靠性要求0正常,1高。
.....00未使用未使用
在下面的例子中,我們可以看到TOS的值為0,也就是全部設置為正常值。通常,數據包的總長度以字節表示,包括報頭和數據的總和。
從上圖可以看出,十六進制值是“003C”,十進制值是“60”。每個IP數據包都有壹個16位的唯壹標識符。我們從OSI的網絡級知識中知道,當程序生成的數據要通過網絡傳輸時,會被拆分成數據包的形式發送,而這個ID就是要重組數據包時的依據。
從上圖我們可以看到,這個數據包的ID是40973(把a00d改成十進制就行了)。這是在傳輸過程中最佳組合數據包時使用的3位識別標記。請參考下表000。當該值為0時,表示當前未使用。
.0 ..當該值為0時,表示該數據包可以被分割;如果是1,就不能分。
..0.當前壹個值為0時,該值表示該數據包是最後壹個數據包。如果是1,說明還有分包。在下面的例子中,我們看到這個數據包被標記為“0”,這意味著它目前沒有被使用。我們會在很多網絡設置中遇到這個TTL。當壹個對象被賦予壹個TTL值(以秒為單位)時,它將被計時。如果對象在達到TTL值時還沒有被處理,它將被放棄。然而,並非所有的TTL都是基於時間的。例如,ICMP協議的TTL是基於數據包路由過程中的跳數。每跳壹次(或由路由器處理壹次),TTL值將減少壹個值。這樣,當數據包在傳輸過程中由於某種原因未能到達目的地時,就可以防止其壹直在網絡中泛濫。
上圖我們看到的數值不是20,因為是十六進制數,要改成十進制才能知道TTL原來是32跳。這是指數據包使用的網絡協議類型,如ICMPDNS。需要註意的是,這裏使用的協議是網絡層協議,不同於上層程序協議(如FTPPOP)。您可以在Linux的/etc/protocol文件中找到這些協議及其代碼,該文件也存儲在nt的\winnt\system32\drivers\etc目錄中。其內容如下
-
ip 0 IP #互聯網協議,偽協議號
icmp 1 ICMP # internet控制消息協議
igmp 2 IGMP #互聯網群組管理
GGP #網關-網關協議
ipencap 4 IP-ENCAP # IP封裝在IP中(官方稱為“IP”)
st 5 ST # ST數據報模式
tcp 6 TCP #傳輸控制協議
egp 8 EGP #外部網關協議
PARC通用分組協議
udp 17 UDP #用戶數據包協議
hmp 20HMP#主機監控協議
xns-idp 22 XNS-IDP #施樂NS IDP
rdp 27 RDP #“可靠數據報”協議
iso-tp4 29 ISO-TP4 # ISO傳輸協議類別4
xtp 36 XTP # Xpress傳輸協議
ddp 37 DDP #數據報傳送協議
idpr-cmtp 39 IDPR-CMTP # IDPR控制消息傳輸
rspf 73 RSPF #無線電最短路徑優先。
vmtp 81 VMTP #多功能消息傳輸
ospf 89 OSPFIGP #開放最短路徑優先IGP
ipip 94 ipIP #又壹個IP封裝
encap 98 ENCAP #又壹個IP封裝
——在我們的例子中,我們可以看到PROT的數字是“060”。標題校驗和
標題檢查值(HC)。該值主要用於錯誤檢測,以確保數據包被正確接收。當數據包開始發送時,接收主機將使用該檢查值來檢查剩余的數據包,如果壹切似乎都正確,它將發送確認消息以指示接收正常。
上圖我們看到的數據包的HC是“9049”。這個相信不用解釋了,就是發件人的IP地址也是。
將“c0.a8.00.0f”改為十進制,我們可以得到地址“192.168.0.15”。即接收端的IP地址。
看看能不能把“a8.5f.01.54”換成“168.95.1.84”選項&;amp填料