| ||||||||||||||||||||||||||||||||||||
從一直以來討論至今﹐我們都不斷地接觸到“封包”這個詞﹐相信您也很有興趣想知道這個“封包”究竟是個什麼樣的東東吧﹗下面就讓我們一起看看一個IP封包究竟包含了那些內容。 擷取IP封包 如果您的機器上面裝有 netxray 等封包擷取軟體﹐或使用NT的“網路監視器”﹐我們就可以擷取那些進出本機的封包了。 當我們打開擷取功能之後﹐然後使用ping命令隨便ping一個地址﹐如﹕www.hinet.net。我們可以擷取到如下這些封包﹕ 正如我們所見到的﹐我們擷取到DNS和ICMP的封包了﹐因為www.hinet.net需要到DNS解釋﹐而ping是一個ICMP協定。您或許知道ICMP封包的type為“Echo Request”和“Echo Reply”分別代表什麼意思吧﹖ 讓我們再深入一點﹐看看DNS封包裡面有些什麼東東﹕ 如果您往上卷回有關“DNS”的文章﹐看看我們用 nslookup 的 debug 模式查找 www.hinet.ne t這個網址時候﹐引證一下那裡的內容﹐您就知道這個封包說些什麼了。 下面讓我們再看看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封包格式 首先﹐讓我們看看IP封包的格式是怎樣的﹐和其組成部份﹐以及各部份的長度如何﹕
在上圖中﹐括號之內的數字就是各部件的長度(bit)﹐如果您夠細心﹐就會計算得出每一列的總長度都是32bit。下面我們分別對各部件名稱解釋一下﹕
讓我們看看我們擷取的ICMP封包﹐其中屬於IP部份的開頭﹕ 在這裡﹕我們看到的數值是“45”﹐前面的“4”就是版本號數﹐而後面的“5”則是標頭長度。
從上圖我們看到的十六進位數值是“003C”﹐換成十進位就是“60”了。
從上圖我們可以看到此封包的ID為﹕40973 (將 a00d 換成十進制就知道了)。
在下例中﹐我們看到這個封包的標記為“0”﹐也就是目前並未使用。
上圖中我們看到的數值﹐可不是 20 哦﹐因為這是個十六進位數字﹐要換成十進位才知道 TTL 原來是 32 個跳站。
------------------------------------------------------ ip 0 IP # internet protocol, pseudo protocol number icmp 1 ICMP # internet control message protocol igmp 2 IGMP # Internet Group Management ggp 3 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 20 HMP # 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協定。
上圖中我們看到的封包之HC為﹕“9049”。
我們將“c0.a8.00.0f”換成十進位﹐就可以得出“192.168.0.15”這個地址了。
看看﹐你能不能將“a8.5f.01.54”換成“168.95.1.84”﹖
www.study-area.org © 2001 Netman 網中人 |