放学习资料的地方~~~~会有转帖,也会有原创,希望在帮到我的时候也能帮到大家~~~
结合Ethereal了解网络协议封包结构 -- IP
上一篇 /
下一篇 2010-01-18 10:57:41
/ 个人分类:网络协议
协议部分来源于:http://www.study-area.org/network/network_ip_addr.htm
Ethereal截取的UDP包中IP协议的封包内容:
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 ....
|
IP 封包格式
在上圖中﹐括號之內的數字就是各部件的長度 (bit)﹐如果您夠細心﹐就會計算得出每一行的總長度都是 32bit。事實上,真正的封包是由連續的位元依序排列在一起的,之所以分行,完全是因為排版的關係。下面,我們分別對各部件名稱解釋一下﹕
Version版本 (VER)。表示的是 IP 規格版本﹐目前的 IP 規格多為版本 4 (version 4)﹐所以這裡的數值通常為 0x4 (注意﹕封包使用的數字通常都是十六進位的)。
Internet Header Length標 頭長度 (IHL)。我們從 IP
封包規格中看到前面的 6 行為 header ﹐如果 Options 和 Padding沒有設定的話﹐也就只有5 行的長度﹔我們知道每行有
32bit ﹐也就是 4byte﹔那麼, 5 列就是 20byte 了。20 這個數值換成 16 進位就成了
0x14﹐所以﹐當封包標頭長度為最短的時候﹐這裡數值會被換算為 0x14 。
Type of Service服務類型 (TOS)。這裡指的是 IP 封包在傳送過程中要求的服務類型﹐其中一共由 8 個 bit 組成﹐每組 bit 組合分別代表不同的意思﹕000..... | Routine | 設定 IP 順序﹐預設為 0 ﹐否則﹐數值越高越優先 |
...0.... | Delay | 延遲要求﹐ 0 是正常值﹐ 1 為低要求 |
....0... | Throughput | 通訊量要求﹐ 0 為正常值﹐ 1 為高要求 |
.....0.. | Reliability | 可靠性要求﹐0 為正常值﹐ 1 為高要求 |
......00 | Not Used | 未使用 |
Total Length封包總長 (TL)。通常以 byte 做單位來表示該封包的總長度﹐此數值包括標頭和數據的總和。
Identification識 別碼 (ID)。每一個IP封包都有一個 16bit 的唯一識別碼。我們從 OSI 和 TCP/IP 的網路層級知識裡面知道﹕當程式產生的數據要通過網路傳送時﹐都會在傳送層被拆散成封包形式發送﹐當封包要進行重組的時候﹐這個 ID 就是依據了。
Flag旗標 (FL)。這是當封包在傳輸過程中進行最佳組合時使用的 3 個 bit 的識別記號。請參考下表﹕000. | 當此值為 0 的時候﹐表示目前未被使用。 |
.0.. | 當此值為 0 的時候﹐表示封包可以被分割﹐若為 1 則不能被分割。 |
..0. | 當上一個值為 0 時﹐此值為 0 就示該封包是最後一個封包﹐如果為 1 則表示其後還有被分割的封包。 |
Fragment Offset分 割定位
(FO)。當一個大封包在經過一些傳輸單位(MTU)較小的路徑時﹐會被被切割成碎片(fragment)
再進行傳送(這個切割和傳送層的打包有所不同﹐它是由網路層決定的)。由於網路情況或其它因素影響﹐其抵達順序並不會和當初切割順序一至的。所以當封包進
行切割的時候﹐會為各片段做好定位記錄﹐所以在重組的時候﹐就能夠依號入座了。如果封包沒有被切割﹐那麼 FO 的值為“0”。
Time To Live存 活時間 (TTL)。這個
TTL 的概念﹐在許多網路協定中都會碰到。當一個封包被賦予 TTL 值(以秒或跳站數目(hop)為單位)﹐之後就會進行倒數計時。在 IP
協定中,TTL 是以 hop 為單位,每經過一個 router 就減一)﹐如果封包 TTL 值被降為 0
的時候﹐就會被丟棄。這樣﹐當封包在傳遞過程中由於某些原因而未能抵達目的地的時候﹐就可以避免其一直充斥在網路上面。有隻叫做 traceroute
的程式﹐就是一個上佳的 TTL 利用實作﹐我們會在後面的章節裡面討論。
Protocol協定(PROT)。這裡指的是該封包所使用的網路協定類型﹐例如﹕ICMP 或 TCP/UDP 等等。要注意的是﹕這裡使用的協定是網路層的協定﹐這和上層的程式協定(如﹕FTP﹑HTTP 等)是不同的。您可以從 Linux 的 /etc/protocol 這個檔案中找到這些協定和其代號﹔其內容如下------------------------------------------------------ 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 ------------------------------------------------------
|
Header Checksum標頭檢驗值(HC)。這個數值主要用來檢錯用的﹐用以確保封包被正確無誤的接收到。當封包開始進行傳送後﹐接收端主機會利用這個檢驗值會來檢驗餘下的封包﹐如果一切看來無誤﹐就會發出確認信息﹐表示接收正常。
Source IP Address來源位址(SA)。相信這個不用多解釋了﹐就是發送端的 IP 位址是也﹐長度為 32 bit。
Destination IP Address目的地位址(DA)。也就是接收端的 IP 位址﹐長度為 32 bit。
Options & Padding這兩個選項甚少使用﹐只有某些特殊的封包需要特定的控制﹐才會利用到。這裡也不作細表啦。
收藏
举报
TAG:
协议
IP
网络
protocol
封包