放学习资料的地方~~~~会有转帖,也会有原创,希望在帮到我的时候也能帮到大家~~~

结合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 為高要求
......00Not 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 封包

 

评分:0

我来说两句

Open Toolbar