1. 數據包的結構是怎樣的
數據包的結構非常復雜,不是三言兩語能夠說清的,在這里主要了解一下它的關鍵構成就可以了,這對於理解TCP/IP協議的通信原理是非常重要的。數據包主要由「目的IP地址」、「源IP地址」、「凈載數據」等部分構成。數據包的結構與我們平常寫信非常類似,目的IP地址是說明這個數據包是要發給誰的,相當於收信人地址;源IP地址是說明這個數據包是發自哪裡的,相當於發信人地址;而凈載數據相當於信件的內容。
正是因為數據包具有這樣的結構,安裝了TCP/IP協議的計算機之間才能相互通信。我們在使用基於TCP/IP協議的網路時,網路中其實傳遞的就是數據包。理解數據包,對於網路管理的網路安全具有至關重要的意義。
2. 數據包由什麼組成
包(packet)是tcp/ip協議通信傳輸中的數據單位,一般也稱「數據包」。包(packet):在包交換網路里,單個消息被劃分為多個數據塊,這些數據塊稱為包,它包含發送者和接收者的地址信息。這些包然後沿著不同的路徑在一個或多個網路中傳輸,並且在目的地重新組合。
3. IP數據包的定義是什麼
TCP/IP協議定義了一個在網際網路上傳輸的包,稱為IP數據包,而IP數據報(IP Datagram)是個比較抽象的內容,是對數據包的結構進行分析。 由首部和數據兩部分組成,其格式如圖所示。首部的前一部分是固定長度,共20位元組,是所有IP數據報必須具有的。在首部的固定部分的後面是一些可選欄位,其長度是可變的。首部中的源地址和目的地址都是IP協議地址。
固定部分
(1)版本佔4位,指IP協議的版本。通信雙方使用的IP協議版本必須一致。目前廣泛使用的IP協議版本號為4(即IPv4)。關於IPv6,目前還處於草案階段。
(2)首部長度佔4位,可表示的最大十進制數值是15。請注意,這個欄位所表示數的單位是32位字長(1個32位字長是4位元組),因此,當IP的首部長度為1111時(即十進制的15),首部長度就達到60位元組。當IP分組的首部長度不是4位元組的整數倍時,必須利用最後的填充欄位加以填充。因此數據部分永遠在4位元組的整數倍開始,這樣在實現IP協議時較為方便。首部長度限制為60位元組的缺點是有時可能不夠用。但這樣做是希望用戶盡量減少開銷。最常用的首部長度就是20位元組(即首部長度為0101),這時不使用任何選項。
(3)區分服務佔8位,用來獲得更好的服務。這個欄位在舊標准中叫做服務類型,但實際上一直沒有被使用過。1998年IETF把這個欄位改名為區分服務DS(Differentiated Services)。只有在使用區分服務時,這個欄位才起作用。
(4)總長度總長度指首部和數據之和的長度,單位為位元組。總長度欄位為16位,因此數據報的最大長度為2^16-1=65535位元組。
在IP層下面的每一種數據鏈路層都有自己的幀格式,其中包括幀格式中的數據欄位的最大長度,這稱為最大傳送單元MTU(Maximum Transfer Unit)。當一個數據報封裝成鏈路層的幀時,此數據報的總長度(即首部加上數據部分)一定不能超過下面的數據鏈路層的MTU值。
(5)標識(identification)佔16位。IP軟體在存儲器中維持一個計數器,每產生一個數據報,計數器就加1,並將此值賦給標識欄位。但這個「標識」並不是序號,因為IP是無連接服務,數據報不存在按序接收的問題。當數據報由於長度超過網路的MTU而必須分片時,這個標識欄位的值就被復制到所有的數據報的標識欄位中。相同的標識欄位的值使分片後的各數據報片最後能正確地重裝成為原來的數據報。
(6)標志(flag)佔3位,但目前只有2位有意義。
●標志欄位中的最低位記為MF(More Fragment)。MF=1即表示後面「還有分片」的數據報。MF=0表示這已是若干數據報片中的最後一個。
●標志欄位中間的一位記為DF(Don』t Fragment),意思是「不能分片」。只有當DF=0時才允許分片。
(7)片偏移佔13位。片偏移指出:較長的分組在分片後,某片在原分組中的相對位置。也就是說,相對用戶數據欄位的起點,該片從何處開始。片偏移以8個位元組為偏移單位。這就是說,除了最後一個分片,每個分片的長度一定是8位元組(64位)的整數倍。
(8)生存時間佔8位,生存時間欄位常用的的英文縮寫是TTL(Time To Live),表明是數據報在網路中的壽命。由發出數據報的源點設置這個欄位。其目的是防止無法交付的數據報無限制地在網際網路中兜圈子,因而白白消耗網路資源。最初的設計是以秒作為TTL的單位。每經過一個路由器時,就把TTL減去數據報在路由器消耗掉的一段時間。若數據報在路由器消耗的時間小於1秒,就把TTL值減1。當TTL值為0時,就丟棄這個數據報。後來把TTL欄位的功能改為「跳數限制」(但名稱不變)。路由器在轉發數據報之前就把TTL值減1.若TTL值減少到零,就丟棄這個數據報,不再轉發。因此,現在TTL的單位不再是秒,而是跳數。TTL的意義是指明數據報在網路中至多可經過多少個路由器。顯然,數據報在網路上經過的路由器的最大數值是255.若把TTL的初始值設為1,就表示這個數據報只能在本區域網中傳送。
(9)協議佔8位,協議欄位指出此數據報攜帶的數據是使用何種協議,以便使目的主機的IP層知道應將數據部分上交給哪個處理過程。
(10)首部檢驗和佔16位。這個欄位只檢驗數據報的首部,但不包括數據部分。這是因為數據報每經過一個路由器,路由器都要重新計算一下首部檢驗和(一些欄位,如生存時間、標志、片偏移等都可能發生變化)。不檢驗數據部分可減少計算的工作量。
(11)源地址佔32位。
(12)目的地址佔32位。
可變部分
IP首部的可變部分就是一個可選欄位。選項欄位用來支持排錯、測量以及安全等措施,內容很豐富。此欄位的長度可變,從1個位元組到40個位元組不等,取決於所選擇的項目。某些選項項目只需要1個位元組,它只包括1個位元組的選項代碼。但還有些選項需要多個位元組,這些選項一個個拼接起來,中間不需要有分隔符,最後用全0的填充欄位補齊成為4位元組的整數倍。
增加首部的可變部分是為了增加IP數據報的功能,但這同時也使得IP數據報的首部長度成為可變的。這就增加了每一個路由器處理數據報的開銷。實際上這些選項很少被使用。新的IP版本IPv6就將IP數據報的首部長度做成固定的。
目前,這些任選項定義如下:
(1)安全和處理限制(用於軍事領域)
(2)記錄路徑(讓每個路由器都記下它的IP地址)
(3)時間戳(Time Stamp)(讓每個路由器都記下IP數據報經過每一個路由器的IP地址和當地時間)
(4)寬松的源站路由(Loose Source Route)(為數據報指定一系列必須經過的IP地址)
(5)嚴格的源站路由(Strict Source Route)(與寬松的源站路由類似,但是要求只能經過指定的這些地址,不能經過其他的地址)[1]
這些選項很少被使用,並非所有主機和路由器都支持這些選項。