當前位置:編程學習大全網 - 源碼下載 - 封包的IP封包

封包的IP封包

正如我們所見到的我們擷取到DNS和ICMP的封包了因為網址t需要到DNS解釋而ping是壹個ICMP協定。您或許知道ICMP封包的type為“Echo Request”和“Echo Reply”分別代表什麽意思吧 讓我們再深入壹點看看DNS封包裏面有些什麽東東

如果您往上卷回有關“DNS”的文章看看我們用 nslookup 的 debug 模式查找 這個網址時候引壹下那裏的內容您就知道這個封包說些什麽了。 下面讓我們再看看ICMP封包裏面的內容

在第壹行裏面我們看到“00 80 c7 47 8c 9a 48 54 e8 27 75 77”這串數字所代表的分別是目的地和來源地的MAC地址然後“08 00”代表的是壹個Ethernet II的IP協定類型。Ethernet II可以說是IEEE802.3的改進版本。(還記得“網路概論”裏面關於“邏輯形態”的敘述麽)。這裏可以說是Datalink網路層所要追蹤的資料。 然後接下來的是屬於IP封包的內容

請先記著上圖的內容我打算在下壹節裏面在詳細討論每壹行的意思。 首先讓我們看看IP封包的格式是怎樣的和其組成部份以及各部份的長度如何 Version (4) Internet Header Length (4) Type of Service (8) Total Length (16)

Identification (16) Flags (3) Fragment Offset (13)

Time To Live (8) Protocol (8) Header checksum (16)

Source Address (32)

Destination Address (32)

Options (Variable) Padding (0-24) Data

.... 在上圖中括號之內的數字就是各部件的長度(bit)如果您夠細心就會計算得出每壹列的總長度都是32bit。下面我們分別對各部件名稱解釋壹下 這裏指的是IP封包在傳送過程中要求的服務類型其中壹***由8個bit組成其中每個bit的組合分別代表不同的意思 000..... Routine 設定IP順序預設為0否則數值越高越優先

...0.... Delay 延遲要求0是正常值1為低要求

....0... Throughput 通訊量要求0為正常值1為高要求

.....0.. Reliability 可靠性要求0為正常值1為高要求

......00 Not Used 未使用

在下例中我們可以看到TOS的值為0也就是全部設置為正常值 通常以byte做單位來表示該封包的總長度此數值包括標頭和數據的總和。

從上圖我們看到的十六進位數值是“003C”換成十進位就是“60”了。 每壹個IP封包都有壹個16bit的唯壹識別碼。我們從OSI的網路層級知識裏面知道當程式產生的數據要通過網路傳送時都會被拆散成封包形式發送當封包要進行重組的時候這個ID就是依據了。

從上圖我們可以看到此封包的ID為40973 (將 a00d 換成十進制就知道了)。 這是當封包在傳輸過程中進行最佳組合時使用的3個bit的識別記號。請參考下表 000. 當此值為0的時候表示目前未被使用。

.0.. 當此值為0的時候表示封包可以被分割如果為1則不能被分割。

..0. 當上壹個值為0時此值為0就示該封包是最後壹個封包如果為1則表示其後還有被分割的封包。 在下例中我們看到這個封包的標記為“0”也就是目前並未使用。 這個TTL我們在許多網路設定上都會碰到當壹個物件被賦予TTL值(以秒為單位)之後就會進行計時如果物件在到達TTL值的時候還沒被處理的話就會被遺棄。 不過並不是所有的 TTL 都以時間為單位例如 ICMP 協定的 TTL則以封包路由過程中的跳站數目(Hop Count)做單位。TTL 值每經過壹個跳站(或被壹個 router 處理)之後就會被減低壹個數值 。這樣當封包在傳遞過程中由於某些原因而未能抵達目的地的時候就可以避免其壹直充斥在網路上面。

上圖中我們看到的數值可不是 20 哦因為這是個十六進位數字要換成十進位才知道 TTL 原來是 32 個跳站。 這裏指的是該封包所使用的網路協定類型例如ICMPDNS等。要註意的是這裏使用的協定是網路層的協定這和上層的程式協定(如FTPPOP等)是不同的。您可以從Linux的/etc/protocol這個檔案中找到這些協定和其代號此檔案也存放於NT的\winnt\system32\drivers\etc目錄裏面。其內容如下

------------------------------------------------------

ip 0 IP # internet protocol, pseudo protocol number

icmp 1 ICMP # internet control message protocol

igmp 2 IGMP # Internet Group Management

ggp3 GGP # gateway-gateway protocol

ipencap 4 IP-ENCAP # IP encapsulated in IP (officially ``IP')

st 5 ST # ST datagram mode

tcp 6 TCP # transmission control protocol

egp 8 EGP # exterior gateway protocol

pup 12 PUP # PARC universal packet protocol

udp 17 UDP # user datagram protocol

hmp 20HMP# host monitoring protocol

xns-idp 22 XNS-IDP # Xerox NS IDP

rdp 27 RDP # “reliable datagram” protocol

iso-tp4 29 ISO-TP4 # ISO Transport Protocol class 4

xtp 36 XTP # Xpress Tranfer Protocol

ddp 37 DDP # Datagram Delivery Protocol

idpr-cmtp 39 IDPR-CMTP # IDPR Control Message Transport

rspf 73 RSPF #Radio Shortest Path First.

vmtp 81 VMTP # Versatile Message Transport

ospf 89 OSPFIGP # Open Shortest Path First IGP

ipip 94 IPIP # Yet Another IP encapsulation

encap 98 ENCAP # Yet Another IP encapsulation

------------------------------------------------------ 在我們這個例子中可以看得出PROT的號碼為“01”對照/etc/protocol檔案我們可以知道這是壹個ICMP協定。 Header Checksum

標頭檢驗值(HC)。這個數值主要用來檢錯用的用以確保封包被正確無誤的接收到。當封包開始進行傳送後接收端主機會利用這個檢驗值會來檢驗餘下的封包如果壹切看來無誤就會發出確認信息表示接收正常。

上圖中我們看到的封包之HC為“9049”。 相信這個不用多解釋了就是發送端的IP地址是也。

我們將“c0.a8.00.0f”換成十進位就可以得出“192.168.0.15”這個地址了。 也就是接收端的IP地址啦。

看看妳能不能將“a8.5f.01.54”換成“168.95.1.84” Options & Padding

  • 上一篇:建築工地安全標語大全
  • 下一篇:常用網絡入侵手段
  • copyright 2024編程學習大全網