百科解釋
封包
英文名稱:Packet
數(shù)據(jù)要在通訊系統(tǒng)中必須要先經(jīng)過某些處理,才能在網(wǎng)絡(luò)當中傳遞,例如將數(shù)據(jù)切割為數(shù)個區(qū)塊之后,才能在網(wǎng)絡(luò)上依照某種通訊協(xié)議來傳送,這種過程就好像將包裹打包一樣,稱為分封。
另外的一種意義:
在中國的大部分農(nóng)村地區(qū)傳承著農(nóng)歷七月十四鬼節(jié)這樣的一種說法。
在這個節(jié)日里面,人民都要舉行隆重的祭祀儀式。以起到懷念祖先,為祖先銷災(zāi)積福的作用。最為重要的就是,人們在這一天要火化很多的封包(由草紙折疊而成),據(jù)說是為了死去的人在陰間有錢用。封包也就是陰間的一種貨幣單位了。
在后來越來越多的人們開始火化印刷的陰間貨幣(這不同于封包,但是其意義仍然與封包一致),和紙做的汽車,沙發(fā),椅子,電視,電腦…………
IP封包分析2006-03-09 20:05從一直以來討論至今我們都不斷地接觸到“封包”這個詞相信您也很有興趣想知道這個“封包”究竟是個什么樣的東東吧下面就讓我們一起看看一個IP封包究竟包含了那些內(nèi)容。 擷取IP封包 如果您的機器上面裝有 netxray 等封包擷取軟體或使用NT的“網(wǎng)路監(jiān)視器”我們就可以擷取那些進出本機的封包了。 當我們打開擷取功能之后然后使用ping命令隨便ping一個地址如www.hinet.net。我們可以擷取到如下這些封包
正如我們所見到的我們擷取到DNS和ICMP的封包了因為www.hinet.net需要到DNS解釋而ping是一個ICMP協(xié)定。您或許知道ICMP封包的type為“Echo Request”和“Echo Reply”分別代表什么意思吧 讓我們再深入一點看看DNS封包里面有些什么東東
如果您往上卷回有關(guān)“DNS”的文章看看我們用 nslookup 的 debug 模式查找 www.hinet.ne t這個網(wǎng)址時候引一下那里的內(nèi)容您就知道這個封包說些什么了。 下面讓我們再看看ICMP封包里面的內(nèi)容
其實我們真正擷取到的封包內(nèi)容應(yīng)該是紅圈的圍在上面和右邊的欄目里面的資料是經(jīng)過程式整理出來的結(jié)果。在第一行里面我們看到“00 80 c7 47 8c 9a 48 54 e8 27 75 77”這串數(shù)字所代表的分別是目的地和來源地的MAC地址然后“08 00”代表的是一個Ethernet II的IP協(xié)定類型。Ethernet II可以說是IEEE802.3的改進版本。(還記得“網(wǎng)路概論”里面關(guān)于“邏輯形態(tài)”的敘述么)。這里可以說是Datalink網(wǎng)路層所要追蹤的資料。 然后接下來的是屬于IP封包的內(nèi)容
請先記著上圖的內(nèi)容我打算在下一節(jié)里面在詳細討論每一行的意思。 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
.... 在上圖中括號之內(nèi)的數(shù)字就是各部件的長度(bit)如果您夠細心就會計算得出每一列的總長度都是32bit。下面我們分別對各部件名稱解釋一下 Version
版本(VER)。表示的是IP規(guī)格版本目前的IP規(guī)格多為版本4(version 4)所以這里的數(shù)值通常為 0x4 (注意封包使用的數(shù)字通常都是十六進位的)。
Internet Header Length
標頭長度(IHL)。我們從IP封包規(guī)格中看到前面的6列為header如果Options和Padding沒有設(shè)定的話也就只有5列的長度所以這里的長度為“5”我們知道每列有32bit也就是4byte那么5列就是20byte了20這個數(shù)值換成16進位就成了0x14所以當封包標頭長度為最短的時候這里數(shù)值最終會被換算為 0x14 。 讓我們看看我們擷取的ICMP封包其中屬于IP部份的開頭 在這里我們看到的數(shù)值是“45”前面的“4”就是版本號數(shù)而后面的“5”則是標頭長度。 Type of Service
服務(wù)類型(TOS)。這里指的是IP封包在傳送過程中要求的服務(wù)類型其中一共由8個bit組成其中每個bit的組合分別代表不同的意思 000..... Routine 設(shè)定IP順序預(yù)設(shè)為0否則數(shù)值越高越優(yōu)先
...0.... Delay 延遲要求0是正常值1為低要求
....0... Throughput 通訊量要求0為正常值1為高要求
.....0.. Reliability 可靠性要求0為正常值1為高要求
......00 Not Used 未使用
在下例中我們可以看到TOS的值為0也就是全部設(shè)置為正常值
Total Length
封包總長(TL)。通常以byte做單位來表示該封包的總長度此數(shù)值包括標頭和數(shù)據(jù)的總和。
從上圖我們看到的十六進位數(shù)值是“003C”換成十進位就是“60”了。 Identification
識別碼(ID)。每一個IP封包都有一個16bit的唯一識別碼。我們從OSI的網(wǎng)路層級知識里面知道當程式產(chǎn)生的數(shù)據(jù)要通過網(wǎng)路傳送時都會被拆散成封包形式發(fā)送當封包要進行重組的時候這個ID就是依據(jù)了。
從上圖我們可以看到此封包的ID為40973 (將 a00d 換成十進制就知道了)。 Flag
標記(FL)。這是當封包在傳輸過程中進行最佳組合時使用的3個bit的識別記號。請參考下表 000. 當此值為0的時候表示目前未被使用。
.0.. 當此值為0的時候表示封包可以被分割如果為1則不能被分割。
..0. 當上一個值為0時此值為0就示該封包是最后一個封包如果為1則表示其后還有被分割的封包。 在下例中我們看到這個封包的標記為“0”也就是目前并未使用。
Fragment Offset
分割定位(FO)。當封包被切開之后由于網(wǎng)路情況或其它因素影響其抵達順序并不會和當初切割順序一至的。所以當封包進行切割的時候會為各片段做好定位記錄所以在重組的時候就能夠依號入座了。 因為我們剛才擷取到的封包并沒有被切割所以暫時找不到例子參考在上例中我們看到的FO為“0”。
Time To Live
延續(xù)時間(TTL)。這個TTL我們在許多網(wǎng)路設(shè)定上都會碰到當一個物件被賦予TTL值(以秒為單位)之后就會進行計時如果物件在到達TTL值的時候還沒被處理的話就會被遺棄。 不過并不是所有的 TTL 都以時間為單位例如 ICMP 協(xié)定的 TTL則以封包路由過程中的跳站數(shù)目(Hop Count)做單位。TTL 值每經(jīng)過一個跳站(或被一個 router 處理)之后就會被減低一個數(shù)值 。這樣當封包在傳遞過程中由于某些原因而未能抵達目的地的時候就可以避免其一直充斥在網(wǎng)路上面。
上圖中我們看到的數(shù)值可不是 20 哦因為這是個十六進位數(shù)字要換成十進位才知道 TTL 原來是 32 個跳站。 Protocol
協(xié)定(PROT)。這里指的是該封包所使用的網(wǎng)路協(xié)定類型例如ICMPDNS等。要注意的是這里使用的協(xié)定是網(wǎng)路層的協(xié)定這和上層的程式協(xié)定(如FTPPOP等)是不同的。您可以從Linux的/etc/protocol這個檔案中找到這些協(xié)定和其代號此檔案也存放于NT的winntsystem32driversetc目錄里面。其內(nèi)容如下
------------------------------------------------------
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協(xié)定。 Header Checksum
標頭檢驗值(HC)。這個數(shù)值主要用來檢錯用的用以確保封包被正確無誤的接收到。當封包開始進行傳送后接收端主機會利用這個檢驗值會來檢驗馀下的封包如果一切看來無誤就會發(fā)出確認信息表示接收正常。
上圖中我們看到的封包之HC為“9049”。 Source IP Address
來源地址(SA)。相信這個不用多解釋了就是發(fā)送端的IP地址是也。
我們將“c0.a8.00.0f”換成十進位就可以得出“192.168.0.15”這個地址了。 Destination IP Address
目的地址(DA)。也就是接收端的IP地址啦。
看看你能不能將“a8.5f.01.54”換成“168.95.1.84” Options &; Padding