導航:首頁 > 網路連接 > 片偏移計算機網路

片偏移計算機網路

發布時間:2022-09-28 09:16:10

A. 網路層IP數據包的分片與重組時,片偏移長度的限制問題

TCP/IP協議中分包與重組原理介紹

分片是分組交換的思想體現,也是IP協議解決的兩個主要問題之一。在IP協議中的分片演算法主要解決不同物理網路最大傳輸單元(MTU) 的不同造成的傳輸問題。但是分組在傳輸過程中不斷地分片和重組會帶來很大的工作量還會增加一些不安全的因素。我們將在這篇小論文中討論IP分片的原因、原理、實現以及引起的安全問題。

一、什麼是IP分片

IP分片是網路上傳輸IP報文的一種技術手段。IP協議在傳輸數據包時,將數據報文分為若干分片進行傳輸,並在目標系統中進行重組。這一過程稱為分片(fragmentation)。

二、為什麼要進行IP分片

每一種物理網路都會規定鏈路層數據幀的最大長度,稱為鏈路層MTU(Maximum Transmission Unit).IP協議在傳輸數據包時,若IP數據報加上數據幀頭部後長度大於MTU,則將數據報文分為若干分片進行傳輸,並在目標系統中進行重組。比如說,在乙太網環境中可傳輸最大IP報文大小(MTU)為1500位元組。如果要傳輸的數據幀大小超過1500位元組,即IP數據報長度大於1472(1500-20-8=1472,普通數據報)位元組,則需要分片之後進行傳輸。

三、IP分片原理及分析

分片和重新組裝的過程對傳輸層是透明的,其原因是當IP數據報進行分片之後,只有當它到達目的站時,才可進行重新組裝,且它是由目的端的IP層來完成的。分片之後的數據報根據需要也可以再次進行分片。

IP分片和完整IP報文差不多擁有相同的IP頭,ID域對於每個分片都是一致的,這樣才能在重新組裝的時候識別出來自同一個IP報文的分片。在IP頭裡面,16位識別號唯一記錄了一個IP包的ID,具有同一個ID的IP分片將會重新組裝;而13位片偏移則記錄了某IP片相對整個包的位置;而這兩個表中間的3位標志則標志著該分片後面是否還有新的分片。這三個標志就組成了IP分片的所有信息(將在後面介紹),接受方就可以利用這些信息對IP數據進行重新組織。

1、標志欄位的作用

標志欄位在分片數據報中起了很大作用,在數據報分片時把它的值復制到每片中的標志欄位的其中一個比特稱作「不分片」位,用其中一個比特來表示「更多的片」。除了最後一片外,其他每個組成數據報的片都要把該比特置1。片偏移欄位指的是該片偏移原始數據報開始處的位置。另外,當數據報被分片後,每個片的總長度值要改為該片的長度值。如果將標志欄位的比特置1,則IP將不對數據報進行分片,若在某個中間路由器上需要對其分片,則僅僅把數據報丟棄並發送一個ICMP不可達差錯報文給源主機。如果不是特殊需要,則不應該置1;最右比特置1表示該報文不是最後一個IP分片。故意發送部分IP分片而不是全部,則會導致目標主機總是等待分片消耗並佔用系統資源。某些分片風暴攻擊就是這種原理。這里以乙太網為例,由於乙太網傳輸電氣方面的限制,每個乙太網幀都有最小的大小64bytes最大不能超過1518bytes,拋去乙太網幀的幀頭(DMAC目的MAC地址48bit=6Bytes+SMAC源MAC地址48bit=6Bytes+Type域2bytes)14Bytes和幀尾CRC校驗部分4Bytes,那麼剩下承載上層協議的地方也就是Data域最大就只能有1500Bytes,這就是前面所說的MTU的值。這個也是網路層協議非常關心的地方,因為網路層的IP協議會根據這個值來決定是否把上層傳達下來的數據進行分片。就好比一個盒子沒法裝下一大塊麵包,我們需要把麵包切成片,裝在多個盒子裡面一樣的道理。

下面是標志位在IP首部中的格式以及各個標志的意義:

Identification
R
DF
MF
Fragment Offset

R:保留未用;DF:Don』t Fragment,「不分片」位,如果將這一比特置1,IP 層將不對數據報進行分片;MF:More Fragment,「更多的片」,除了最後一片外,其它每個組成數據報的片都要把比特置1;Fragment Offset:該片偏移原始數據包開始處的位置。偏移的位元組數是該值乘以8。

2、MTU原理

當兩台遠程PC需要通信的時候,它們的數據需要穿過很多的路由器和各種各樣的網路媒介才能到達對端,網路中不同媒介的MTU各不相同,就好比一長段的水管,由不同粗細的水管組成(MTU不同)通過這段水管最大水量就要由中間最細的水管決定。

對於網路層的上層協議而言(這里以TCP/IP協議族為例)它們對「水管」粗細不在意,它們認為這個是網路層的事情。網路層IP協議會檢查每個從上層協議下來的數據包的大 小,並根據本機MTU的大小決定是否作「分片」處理。分片最大的壞處就是降低了傳輸性能,本來一次可以搞定的事情,分成多次搞定,所以在網路層更高一層(就是傳輸層) 的實現中往往會對此加以注意!有些高層因為某些原因就會要求我這個麵包不能切片,我要完整地麵包,所以會在IP數據包包頭裡面加上一個標簽:DF(Don『t Fragment)。這樣當這個IP數據包在一大段網路(水管裡面)傳輸的時候,如果遇到MTU小於IP數據包的情況,轉發設備就會根據要求丟棄這個數據包。然後返回一個錯誤信息給發送者。這樣往往會造成某些通訊上的問題,不過幸運的是大部分網路鏈路MTU都是1500或者大於1500(僅X.25網路的576和點對點網路的296小於1500)。

對於UDP協議而言,這個協議本身是無連接的協議,對數據包的到達順序以及是否正確到達並不關心,所以一般UDP應用對分片沒有特殊要求。

對於TCP協議而言就不一樣了,這個協議是面向連接的協議,對於TCP協議而言它非常在意數據包的到達順序以及是否傳輸中有錯誤發生。所以有些TCP應用對分片有要求---不能分片(DF)。

3、MSS的原理

MSS(Maxmum Sigmentation Size)就是TCP數據包每次能夠傳輸的最大數據分段。為了達到最佳的傳輸效能TCP協議在建立連接的時候通常要協商雙方的MSS值,這個值TCP協議在實現的時候往往用MTU值代替(需要減去IP數據包包頭的大小20位元組和TCP數據段的包頭20位元組)所以往往MSS為1460。通訊雙方會根據雙方提供的MSS值的最小值確定為這次連接的最大MSS值。

當IP數據報被分片後,每一片都成為一個分組,具有自己的IP首部,並在選擇路由時與其他分組獨立。這樣,當數據報的這些片到達目的端時有可能會失序,但是在IP首部中有足夠的信息讓接收端能正確組裝這些數據報片。

盡管IP分片過程看起來是透明的,但有一點讓人不想使用它:即使只丟失一片數據也要重傳整個數據報。因為IP層本身沒有超時重傳的機制——由更高層來負責超時和重傳(TCP有超時和重傳機制,但UDP沒有。一些UDP應用程序本身也執行超時和重傳)。當來自TCP報文段的某一片丟失後,TCP在超時後會重發整個TCP報文段,該報文段對應於一份IP數據報。沒有辦法只重傳數據報中的一個數據報片。事實上,如果對數據報分片的是中間路由器,而不是起始端系統,那麼起始端系統就無法知道數據報是如何被分片的。就這個原因,經常需要避免分片。

四、IP分片演算法的原理

分片重組是IP層一個最重要的工作,其處理的主要思想:當數據包從一個網路A進入另一個網路B時,若原網路的數據包大於另一個網路或者介面的MTU長度,則需要進行分片(若設置DF為1,則丟棄,並回送ICMP不可達差錯報文)。因而在IP數據包的報頭有若干標識域註明分片包的共同標識號、分片的偏移量、是否最後一片及是否允許分片。傳輸途中的網關利用這些標識域進可能的再行分片,目有主機把收到的分片進行重組以恢重數據。因此,分片包在經過網路監測設備、安全設備、系統管理設備時,為了獲取信息、處理數據,都必須完成數據包的分片或重組。

五、IP分片的安全問題

IP分片是在網路上傳輸IP報文時常採用的一種技術,但是其中存在一些安全隱患。Ping of Death, teardrop等攻擊可能導致某些系統在重組IP分片的過程中宕機或者重新啟動。一些IP分片攻擊除了用於進行拒絕服務攻擊之外,還常用於躲避防火牆或者網路入侵檢測系統的一種手段。部分路由器或者基於網路的入侵檢測系統(NIDS),由於IP分片重組能力的欠缺,導致無法進行正常的過濾或者檢測。

介紹一下Tiny fragment 攻擊:

所謂Tiny fragment攻擊是指通過惡意操作,發送極小的分片來繞過包過濾系統或者入侵檢測系統的一種攻擊手段。攻擊者通過惡意操作,可將TCP報頭(通常為20位元組)分布在2個分片中,這樣一來,目的埠號可以包含在第二個分片中。對於包過濾設備或者入侵檢測系統來說,首先通過判斷目的埠號來採取允許/禁止措施。但是由於通過惡意分片使目的埠號位於第二個分片中,因此包過濾設備通過判斷第一個分片,決定後續的分片是否允許通過。但是這些分片在目標主機上進行重組之後將形成各種攻擊。通過這種方法可以迂迴一些入侵檢測系統及一些安全過濾系統。目前一些智能的包過濾設備直接丟掉報頭中未包含埠信息的分片

B. 計算機網路:網路層(2)

如圖,一個IP數據報由首部和數據兩部分組成。首部的前一部分是固定長度,共20位元組,是所有IP數據報必須具有的。在首部的固定部分的後面是一些可選欄位,其長度是可變的。

(1)版本
佔4位,指IP協議的版本。通信雙方使用的IP協議的版本必須一致。目前廣泛使用的IP協議版本號為4(即IPv4)。也有使用IPv6的(即版本6的IP協議)。
(2)首部長度
佔4位,可表示的最大十進制數值是15。 這個欄位所表示數的單位是32位字(1個32位字長是4位元組),因此,當I的首部長度為1111時(即十進制的15),首部長度就達到最大值60位元組。當分組的首部長度不是4位元組的整數倍時,必須利用最後的填充欄位加以填充。 因此數據部分永遠在4位元組的整數倍時開始,這樣在實現IP協議時較為方便。首部長度限制為60位元組的缺點是有時可能不夠用。但這樣做是希望用戶盡量減少開銷。最常用的首部長度就是20位元組(即首部長度為0101),這時不使用任何選項。
(3)區分服務
佔8位,用來獲得更好的服務。這個欄位在舊標准中叫做服務類型,但實際上一直沒有被使用過。1998年ITF把這個欄位改名為區分服務DS( Differentiated Services。只有在使用區分服務時,這個欄位才起作用。在一般的情況下都不使用這個欄位。
(4)總長度
總長度指首部和數據之和的長度,單位為位元組。總長度欄位為16位,因此數據報的最大長度為216-1=65535位元組。
在IP層下面的每一種數據鏈路層都有其自己的幀格式,其中包括幀格式中的數據欄位的最大長度,這稱為最大傳送單元MTU( Maximum Transfer Unit)。當一個IP數據報封裝成鏈路層的幀時,此數據報的總長度(即首部加上數據部分)一定不能超過下面的數據鏈路層的MTU值。雖然使用盡可能長的數據報會使傳輸效率提高,但由於乙太網的普遍應用,所以實際上使用的數據報長度 很少有超過1500位元組 的。為了不使IP數據報的傳輸效率降低,有關IP的標准文檔規定,所有的主機和路由器必須能夠處理的IP數據報長度不得小於576位元組。這個數值也就是最小的IP數據報的總長度。當數據報長度超過網路所容許的最大傳送單元MTU時,就必須把過長的數據報進行分片後才能在網路上傳送。這時,數據報首部中的「總長度」欄位不是指未分片前的數據報長度,而是指分片後的每一個分片的首部長度與數據長度的總和。
(5)標識 (identification)
佔16位。軟體在存儲器中維持一個計數器,每產生一個數據報,計數器就加1,並將此值賦給標識欄位。但這個「標識」並不是序號,因為IP是無連接服務,數據報不存在按序接收的問題。當數據報由於長度超過網路的MTU而必須分片時,這個標識欄位的值就被復制到所有的數據報片的標識欄位中。相同的標識欄位的值使分片後的各數據報片最後能正確地重裝成為原來的數據報。
(6)標志(flag)
佔3位,但目前只有兩位有意義。
標志欄位中的最低位記為 MF ( More Fragment)。MF=1即表示後面「還有分片」的數據報。MF=0表示這已是若千數據報片中的最後一個。
標志欄位中間的一位記為 DF (Dont Fragment),意思是「不能分片」。只有當DF=0時才允許分片。
(7)片偏移
佔13位。片偏移指出:較長的分組在分片後,某片在原分組中的相對位置。也就是說,相對於用戶數據欄位的起點,該片從何處開始。片偏移以8個位元組為偏移單位。這就是說,每個分片的長度一定是8位元組(64位)的整數倍。
(8)生存時間
佔8位,生存時間欄位常用的英文縮寫是TTL( Time To live),表明是數據報在網路中的壽命。由發出數據報的源點設置這個欄位。其目的是防止無法交付的數據報無限制地在網際網路中兜圈子(例如從路由器R1轉發到R2,再轉發到R3,然後又轉發到R1),因而白白消耗網路資源。最初的設計是以秒作為TTL值的單位。每經過一個路由器時,就把TTL減去數據報在路由器所消耗掉的一段時間。若數據報在路由器消耗的時間小於1秒,就把TTL值減1。當TTL值減為零時,就丟棄這個數據報然而隨著技術的進步,路由器處理數據報所需的時間不斷在縮短,一般都遠遠小於1秒鍾,後來就把TTL欄位的功能改為「跳數限制」(但名稱不變)。路由器在轉發數據報之前就把TTL值減1。若TTL值減小到零,就丟棄這個數據報,不再轉發。因此,現在TTL的單位不再是秒,而是跳數。 TTL的意義是指明數據報在網際網路中至多可經過多少個路由器 。顯然,數據報能在網際網路中經過的路由器的最大數值是255。若把TTL的初始值設置為1,就表示這個數據報只能在本區域網中傳送。因為這個數據報一傳送到區域網上的某個路由器,在被轉發之前TTL值就減小到零,因而就會被這個路由器丟棄。
(9)協議
佔8位,協議欄位指出此數據報攜帶的數據是使用何種協議,以便使目的主機的IP層知道應將數據部分上交給哪個處理過程。

過程大致如下:
(1)從數據報的首部提取目的主機的IP地址D,得出目的網路地址為N。
(2)若N就是與此路由器直接相連的某個網路地址,則進行直接交付,不需要再經過其他的路由器,直接把數據報交付給目的主機(這里包括把目的主機地址D轉換為具體的硬體地址,把數據報封裝為MAC幀,再發送此幀);否則就是間接交付,執行(3)。
(3)若路由表中有目的地址為D的特定主機路由,則把數據報傳送給路由表中所指明的下一跳路由器;否則,執行(4)。
(4)若路由表中有到達網路N的路由,則把數據報傳送給路由表中所指明的下一跳路由器;否則,執行(5)
(5)若路由表中有一個默認路由,則把數據報傳送給路由表中所指明的默認路由器;否則,執行(6)。
(6)報告轉發分組出錯。

在進行更詳細的轉發解釋之前,先要了解一下子網掩碼:

上一篇說到了二級IP地址,也就是IP地址由網路號和主機號組成。

二級IP地址有以下缺點:
第一,IP地址空間的利用率有時很低每一個A類地址網路可連接的主機數超過1000萬,而每一個B類地址網路可連接的主機數也超過6萬。然而有些網路對連接在網路上的計算機數目有限制,根本達不到這樣大的數值。例如10 BASE-T乙太網規定其最大結點數只有1024個。這樣的乙太網若使用一個B類地址就浪費6萬多個IP地址,地址空間的利用率還不到2%,而其他單位的主機無法使用這些被浪費的地址。有的單位申請到了一個B類地址網路,但所連接的主機數並不多,可是又不願意申請一個足夠使用的C類地址,理由是考慮到今後可能的發展。IP地址的浪費,還會使IP地址空間的資源過早地被用完。
第二,給每一個物理網路分配一個網路號會使路由表變得太大因而使網路性能變壞。
每一個路由器都應當能夠從路由表査出應怎樣到達其他網路的下一跳路由器。因此,互聯網中的網路數越多,路由器的路由表的項目數也就越多。這樣,即使我們擁有足夠多的IP地址資源可以給每一個物理網路分配一個網路號,也會導致路由器中的路由表中的項目數過多。這不僅增加了路由器的成本(需要更多的存儲空間),而且使查找路由時耗費更多的時間,同時也使路由器之間定期交換的路由信息急劇增加,因而使路由器和整個網際網路的性能都下降了。
第三,兩級IP地址不夠靈活。
有時情況緊急,一個單位需要在新的地點馬上開通一個新的網路。但是在申請到一個新的IP地址之前,新增加的網路是不可能連接到網際網路上工作的。我們希望有一種方法,使一個單位能隨時靈活地增加本單位的網路,而不必事先到網際網路管理機構去申請新的網路號。原來的兩級IP地址無法做到這一點。

於是為解決上述問題,從1985年起在IP地址中又增加了一個「子網號欄位」,使兩級IP地址變成為三級IP地址,它能夠較好地解決上述問題,並且使用起來也很靈活。這種做法叫作劃分子網 (subnetting),或子網定址或子網路由選擇。劃分子網已成為網際網路的正式標准協議。

劃分子網的基本思路如下:
(1)一個擁有許多物理網路的單位,可將所屬的物理網路劃分為若干個子網 subnet)。劃分子網純屬一個單位內部的事情。本單位以外的網路看不見這個網路是由多少個子網組成,因為這個單位對外仍然表現為一個網路。
(2)劃分子網的方法是從網路的主機號借用若干位作為子網號 subnet-id,當然主機號也就相應減少了同樣的位數。於是兩級IP地址在本單位內部就變為三級IP地址:網路號、子網號和主機號。也可以用以下記法來表示:
IP地址:=(<網路號>,<子網號>,<主機號>}

(3)凡是從其他網路發送給本單位某個主機的IP數據報,仍然是根據IP數據報的目的網路號找到連接在本單位網路上的路由器。但此路由器在收到IP數據報後,再按目的網路號和子網號找到目的子網,把IP數據報交付給目的主機。

簡單來說就是原來的IP地址總長度不變,把原來由「網路號+主機號」組成的IP地址,變為了「網路號+子網號+主機號」,因為其他網路找當前網路的主機時,使用的還是網路號,所以外面的網看不見當前網路的子網。當本網的路由器在收到IP數據報後,按目的網路號和子網號找到目的子網,把IP數據報交付給目的主機。

現在剩下的問題就是:假定有一個數據報(其目的地址是145.133.10)已經到達了路由器R1。那麼這個路由器如何把它轉發到子網145.3.3.0呢?
我們知道,從IP數據報的首部並不知道源主機或目的主機所連接的網路是否進行了子網的劃分。這是因為32位的IP地址本身以及數據報的首部都沒有包含任何有關子網劃分的信息。因此必須另外想辦法,這就是使用子網掩碼( (subnet mask)。

子網掩碼,簡單來說就是把除了主機號設置為0,其他位置的數字都設置為1。
以B類地址為例:

把三級IP地址的網路號與子網號連起來,與子網掩碼做「與」運算,就得到了子網的網路地址。

在網際網路的標准規定:所有的網路都必須使用子網掩碼,同時在路由器的路由表中也必須有子網掩碼這一欄。如果一個網路不劃分子網,那麼該網路的子網掩碼就使用默認子網掩碼。
那麼既然沒有子網,為什麼還要使用子網掩碼?
這就是為了更便於査找路由表。
默認子網掩碼中1的位置和IP地址中的網路號欄位 net-id正好相對應。因此,若用默認子網掩碼和某個不劃分子網的IP地址逐位相「與」(AND),就應當能夠得出該IP地址的網路地址來。這樣做可以不用查找該地址的類別位就能知道這是哪一類的IP地址。顯然,

子網掩碼是一個網路或一個子網的重要屬性。在RFC950成為網際網路的正式標准後,路由器在和相鄰路由器交換路由信息時,必須把自己所在網路(或子網)的子網掩碼告訴相鄰路由器。在路由器的路由表中的每一個項目,除了要給出目的網路地址外,還必須同時給出該網路的子網掩碼。若一個路由器連接在兩個子網上就擁有兩個網路地址和兩個子網掩碼。
以一個B類地址為例,說明可以有多少種子網劃分的方法。在採用固定長度子網時,所劃分的所有子網的子網掩碼都是相同的。

表中的「子網號的位數」中沒有0,1,15和16這四種情況,因為這沒有意義。雖然根據已成為網際網路標准協議的RFC950文檔,子網號不能為全1或全0,但隨著無分類域間路由選擇CIDR的廣泛使用,現在全1和全0的子網號也可以使用了,但一定要謹慎使用,要弄清你的路由器所用的路由選擇軟體是否支持全0或全1的子網號。這種較新的用法我們可以看出,若使用較少位數的子網號,則每一個子網上可連接的主機數就較多。
反之,若使用較多位數的子網號,則子網的數目較多但每個子網上可連接的主機數就較少因此我們可根據網路的具體情況(一共需要劃分多少個子網,每個子網中最多有多少個主機)來選擇合適的子網掩碼。

所以,劃分子網增加了靈活性,但卻減少了能夠連接在網路上的主機總數。

在劃分子網的情況下,分組轉發的演算法必須做相應的改動。
使用子網劃分後,路由表必須包含以下三項內容:目的網路地址、子網掩碼和下一跳地址。
所以之前的流程變成了下面這樣:
(1)從收到的數據報的首部提取目的IP地址D。
(2)先判斷是否為直接交付。對路由器直接相連的網路逐個進行檢查:用各網路的子網掩碼和D逐位相「與」(AND操作),看結果是否和相應的網路地址匹配。若匹配,則把分組進行直接交付(當然還需要把D轉換成物理地址,把數據報封裝成幀發送出去),轉發任務結束。否則就是間接交付,執行(3)。
(3)若路由表中有目的地址為D的特定主機路由,則把數據報傳送給路由表中所指明的下一跳路由器;否則,執行(4)。
(4)對路由表中的每一行(目的網路地址,子網掩碼,下一跳地址),用其中的子網掩碼和D逐位相「與」(AND操作),其結果為N。若N與該行的目的網路地址匹配,則把數據報傳送給該行指明的下一跳路由器;否則,執行(5)。
5)若路由表中有一個默認路由,則把數據報傳送給路由表中所指明的默認路由器;否則,執行(6)
(6)報告轉發分組出錯。

C. 計算機網路

總長度減報頭2220-20=2200(Byte)
最大傳輸單元減去報頭700-20=680(Byte)
2200有幾個680?2200=3*680+160,那麼就要分4個報片

題目不是說了報頭20位元組嗎?每片報頭都是20位元組(報頭不是隱藏屬性嗎。。)
數據的長度分別是680、680、680、160

第一片式就是開始位置:0byte,值是0
第二片680Byte,值是680/8=85
第三片2*680Byte,值是2*680/8=170
第四片3*680Byte,值是3*680/8=255
(為什麼要除以8?片偏移以八個位元組為偏移單位)

MF為1時,說明後面還有數據,為0就說明傳完了
MF分別為1,1,1,0

D. 那麼應該劃分為幾個短些的數據報片各數據報片得數據欄位長度,片偏移欄位和MF標志各為何數值

首先ip數據報首部20還剩1460,最大為500,再加上除最後一分片外,其它分片長度必須為8的整數倍,所以分為3片長度分別為496,496,468,偏移量分別為0/8,4968,496•2/8。MF分別為1,1,0。

例如:

3片;

第一片:數據欄位長度1480、片偏移是0,MF是1;

第二片:數據欄位長度1480、片偏移是185,MF是1;

第三片:數據欄位長度1020、片偏移是370和MF是0。

(4)片偏移計算機網路擴展閱讀:

首部長度:佔4位,可表示的最大十進制數值是15。請注意,這個欄位所表示數的單位是32位字(1個32位字長是4位元組),因此,當IP的首部長度為1111時,首部長度就達到60位元組。當IP分組的首部長度不是4位元組的整數倍時,必須利用最後的填充欄位加以填充。

因此數據部分永遠在4位元組的整數倍開始,這樣在實現IP協議時較為方便。首部長度限制為60位元組的缺點是有時可能不夠用。但這樣做是希望用戶盡量減少開銷。最常用的首部長度就是20位元組(即首部長度為0101),這時不使用任何選項。

E. 計算機網路中IP數據報的片偏移計算

偏移量實際指的是,分片中的數據的起始位置在原來不分片的數據中的位置,不用考慮頭部長度,再有就是偏移量的單位是8個位元組,這個8位元組是規定好的,不是計算出來的。也就是一個偏移量就是8個位元組,125個偏移量就是1000位元組。回到你這個題,三個分片是1000,1000,430,根據我前面說的,那麼第一個分片中的數據的偏移量就是這個分片中的數據的起始位置在原來不分片的數據中的位置,就是0,第二個分片數據的起始位置在原來數據是第1000個,也就是偏移了125個單位,

F. 關於計算機網路

報文3200+160=3360bit
因為區域網只能傳1200bit,所以要切片,每個切片前面還要加20bit(沒記錯的話)的首部,也就是1200bit中只有1180bit能用來傳報文。
3360/1180=3片

共需傳播的數據量為3360+3*20=3420bit
第二個區域網所能傳送的最長數據幀中的數據部分只有1200bit,即每個IP數據片的數據部分<1200-160(bit),由於片偏移是以8位元組即64bit為單位的,所以IP數據片的數據部分最大不超過1024bit,這樣3200bit的報文要分4個數據片,所以第二個區域網向上傳送的比特數等於(3200+4×160),共3840bit。

G. 計算機網路工程

數據報長度為4000位元組,分組頭長度為20位元組,MTU長度為1500位元組,那麼可以分成3片,原始分組的數據編號為0~3999
第1分片:編號為0~1479的數據作為第一分片的數據,復制原分組頭(標志和片偏移值除外),原分組頭與第一分片的數據就構成了第一分片,由於是初始的分片,因此片偏移值為0
第2分片:編號為1480~2959的數據作為第2分片的數據,復制原分組頭(標志和片偏移值除外),原分組頭與第2分片的數據就構成了第2分片,由於該分片的第一個數據編碼號為1480,片偏移值是以8位元組為單位來計數的,因此片偏移值為185
第3分片:編號為2960~3999的位元組作為第3分片的數據,復制原分組頭(標志和片偏移值除外),原分組頭與第3分片的數據就構成了第3分片,由於該分片的第一個數據編碼號為2960,片偏移值是以8位元組為單位來計數的,因此第三分片的偏移值為370,第三分片的位元組長度小於MTU長度
圖就不畫了,
望才納!

H. 計算機網路(四)網路層

主要任務是把分組從源端傳到目的端,為分組交換網上的不同主機提供通信服務。網路層傳輸單位是數據報。

鏈路層數據幀可封裝數據的上限稱為最大傳送單元MTU

標識:同一數據報的分片使用同一標識。

中間位DF(Don』t Fragment):

最低位MF(More Fragment):

片偏移:指出較長分組分片後,某片在原分組中的相對位置。以8B為單位。除了最後一個分片,每個分片長度一定是8B的整數倍。

IP地址:全世界唯一的32位/4位元組標識符,標識路由器主機的介面。IP地址::={<網路號>,<主機號>}

有一些IP地址是不能用的,有其特殊的作用,如:

網路地址轉換NAT(Network Address Translation):在專用網連接到網際網路的路由器上安裝NAT軟體,安裝了NAT軟體的路由器叫NAT路由器,它至少有一個有效的外部全球IP地址。

此外,為了網路安全,劃分出了部分IP地址和私有IP地址,私有IP地址網段如下:

路由器對目的地址是私有IP地址的數據報一律不進行轉發。

分類的IP地址的弱點:

某單位劃分子網後,對外仍表現為一個網路,即本單位外的網路看不見本單位內子網的劃分。

路由器轉發分組的演算法:

無分類域間路由選擇CIDR:

CIDR記法:IP地址後加上「/」,然後寫上網路前綴(可以任意長度)的位數。e.g. 128.14.32.0/20

CIDR把網路前綴都相同的連續的IP地址組成一個「CIDR地址塊」。

使用CIDR時,查找路由表可能得到幾個匹配結果(跟網路掩碼按位相與),應選擇具有最長網路前綴的路由。前綴越長,地址塊越小,路由越具體。

將多個子網聚合成一個較大的子網,叫做構成超網,或路由聚合。方法:將網路前綴縮短(所有網路地址取交集)。

由於在實際網路的鏈路上傳送數據幀時,最終必須使用MAC地址。

ARP協議:完成主機或路由器IP地址到MAC地址的映射。

ARP協議使用過程:

ARP協議4種典型情況:

動態主機配置協議DHCP是 應用層 協議,使用 客戶/伺服器 方式,客戶端和服務端通過 廣播 方式進行交互,基於 UDP

DHCP提供即插即用聯網的機制,主機可以從伺服器動態獲取IP地址、子網掩碼、默認網關、DNS伺服器名稱與IP地址,允許地址重用,支持移動用戶加入網路,支持在用地址續租。

DHCP工作流程如下:

ICMP協議支持主機或路由器:包括差錯(或異常)報告和網路探詢,分部發送特定ICMP報文

ICMP差錯報告報文(5種):

不應發送ICMP差錯報文的情況:

ICMP詢問報文:

ICMP的應用:

32位IPv4地址空間已分配殆盡,這時,可以採用更大地址空間的新版本的IPv6,從根本上解決地址耗盡問題

IPv6數據報格式如下圖

IPv6的主要特點如下:

IPv6地址表示形式:

零壓縮:一連串連續的0可以被一對冒號取代。雙冒號表示法在一個地址中僅可出現一次。

IPv6基本地址類型:

IPv6向IPv4過渡的策略:

R1的路由表/轉發表如下:

最佳路由:「最佳」只能是相對於某一種特定要求下得出的較為合理的選擇而已。

路由演算法可分為

由於網際網路規模很大且許多單位不想讓外界知道自己的路由選擇協議,但還想連入網際網路,可以採用自治系統來解決

自治系統AS:在單一的技術管理下的一組路由器,而這些路由器使用一種AS內部的路由選擇協議和共同的度量以確定分組在該AS內的路由,同時還使用一種AS之間的路由協議以確定在AS之間的路由。

一個AS內的所有網路都屬於一個行政單位來管轄,一個自治系統的所有路由器在本自治系統內都必須連通。

路由選擇協議

RIP是一種分布式的基於距離向量的路由選擇協議,是網際網路的協議標准,最大優點是簡單。

RIP協議要求網路中每一個路由器都維護從它自己到其他每一個目的網路的唯一最佳距離 [1] 記錄(即一組距離)。 RIP協議只適用於小互聯網。

RIP是應用層協議,使用 UDP 傳送數據。一個RIP報文最多可包括25個路由,如超過,必須再用一個RIP報文傳送。

RIP協議的交換

路由器剛開始工作時,只知道直接連接的網路的距離(距離為1),接著每一個路由器也只和數目非常有限的相鄰路由器交換並更新路由信息。

經過若干次更新後,所有路由器最終都會知道到達本自治系統任何一個網路的最短距離和下一跳路由器的地址,即「收斂」。

RIP的特點:當網路出現故障時,要經過比較長的時間(例如數分鍾) 才能將此信息傳送到所有的路由器,「慢收斂」。

對地址為X的相鄰路由器發來的RIP報文,修改此報文中的所有項目:把「下一跳」欄位中的地址改為X,並把所有的「距離」欄位+1。

開放最短路徑優先OSPF協議:「開放」標明OSPF協議不是受某一家廠商控制,而是公開發表的;「最短路徑優先」是因為使用了Dijkstra提出的最短路徑演算法SPF。OSPF最主要的特徵就是使用分布式的鏈路狀態協議。 OSPF直接用IP數據報傳送。

OSPF的特點:

為了使OSPF 能夠用於規模很大的網路,OSPF 將一個自治系統再劃分為若干個更小的范圍,叫做區域。每一個區域都有一個32 位的區域標識符(用點分十進製表示)。區域也不能太大,在一個區域內的路由器最好不超過200 個。

BGP 所交換的網路可達性的信息就是要到達某個網路所要經過的一系列AS。當BGP 發言人互相交換了網路可達性的信息後,各BGP 發言人就根據所採用的策略從收到的路由信息中找出到達各AS 的較好路由。

一個BGP 發言人與其他自治系統中的BGP 發言人要交換路由信息,就要先建立TCP 連接,即通過TCP傳送,然後在此連接上交換BGP 報文以建立BGP 會話(session),利用BGP 會話交換路由信息。 BGP是應用層協議,藉助TCP傳送。

BGP協議特點:

BGP-4的四種報文

組播提高了數據傳送效率。減少了主幹網出現擁塞的可能性。組播組中的主機可以是在同一個物理網路,也可以來自不同的物理網路(如果有組播路由器的支持)。

IP組播地址讓源設備能夠將分組發送給一組設備。屬於多播組的設備將被分配一個組播組IP地址(一群共同需求主機的相同標識)。

組播地址范圍為224.0.0.0~239.255.255.255(D類地址),一個D類地址表示一個組播組。只能用作分組的目標地址。源地址總是為單播地址。

同單播地址一樣,組播IP地址也需要相應的組播MAC地址在本地網路中實際傳送幀。組播MAC地址以十六進制值01-00-5E打頭,餘下的6個十六進制位是根據IP組播組地址的最後23位轉換得到的。

TCP/IP 協議使用的乙太網多播地址的范圍是:從01-00-5E-00-00-00到01-00-5E-7F-FF-FF .

收到多播數據報的主機,還要在IP 層利用軟體進行過濾,把不是本主機要接收的數據報丟棄。

ICMP和IGMP都使用IP數據報傳遞報文。組播路由器知道的成員關系只是所連接的區域網中有無組播組的成員。

IGMP工作的兩個階段:

只要有一個主機對某個組響應,那麼組播路由器就認為這個組是活躍的;如果經過幾次探詢後沒有一個主機響應,組播路由器就認為本網路上的沒有此組播組的主機,因此就不再把這組的成員關系發給其他的組播路由器。

組播路由協議目的是找出以源主機為根節點的組播轉發樹。構造樹可以避免在路由器之間兜圈子。對不同的多播組對應於不同的多播轉發樹;同一個多播組,對不同的源點也會有不同的多播轉發樹。

組播路由選擇協議常使用的三種演算法:

移動IP技術是移動結點(計算機/伺服器等)以 固定的網路IP地址 ,實現跨越不同網段的 漫遊 功能,並保證了基於網路IP的網路許可權在漫遊過程中不發生任何改變。

路由器是一種具有多個輸入埠和多個輸出埠的專用計算機,其任務是轉發分組。

若路由器處理分組的速率趕不上分組進入隊列的速率,則隊列的存儲空間最終必定減少到零,這就使後面再進入隊列的分組由於沒有存儲空間而只能被丟棄。 路由器中的輸入或輸出隊列產生溢出是造成分組丟失的重要原因。

路由器(網路層)可以互聯兩個不同網路層協議的網段。
網橋(鏈路層)可以互聯兩個物理層和鏈路層不同的網段。
集線器(物理層)不能互聯兩個物理層不同的網段。

路由表根據路由選擇演算法得出的,主要用途是路由選擇,總用軟體來實現。

轉發表由路由表得來,可以用軟體實現,也可以用特殊的硬體來實現。轉發表必須包含完成轉發功能所必需的信息,在轉發表的每一行必須包含從要到達的目的網路到輸出埠和某些MAC地址信息的映射。

I. 計算機網路方面的計算機題,請幫忙回答,關於數據報的

題意不是很清楚.從「數據報」這一名詞,我推測你說的是IP層。

顯然,IP層的固定首部為20個位元組:
所以要發送的信息數據長度為:5000-20=4800(位元組)
分片為:4800/1600=3(^_^,太巧合了);
所以各數據片的數據長度為:1600位元組;

下面說說片偏移
首先你要明白片偏移是以8個位元組為單位的。
所以第一片的片偏移為:0;
第二片為:1600/8=200;
第三片為:1600/8+200=400;

最後說說MF標志:
MF全稱為more fragment,意思為還有分片嗎?
顯然有三個分片,所以MF分別為:
1,1,0。

最後給你補一點小知識:
IP首部還有一個叫DF的欄位,該欄位全稱為:don't fragment,意思是不能分片。如果該欄位為一,數據報就不會分片,如果出現題目超最大長度的現象,則返回的是ICMP差錯報告報文;顯然此題中數據報DF欄位為0,才能出現以上我討論的情況。

^_^,給分我吧。

J. 計算機網路中片偏移可以為小數嗎

不可以,片偏移是通過求余數算出來的,而被除數和除數都不可能是小數,都是數據塊的位元組序號

閱讀全文

與片偏移計算機網路相關的資料

熱點內容
centos網路設置代理 瀏覽:906
在哪裡可以還原網路設置 瀏覽:353
為什麼網路連一會就沒網 瀏覽:534
網安落實網路安全主體責任報告 瀏覽:344
十三團連隊可以接移動網路嗎 瀏覽:940
在房間裡面移動網路較慢 瀏覽:160
福州網路線哪裡有賣 瀏覽:118
蘋果十一雙卡為什麼網路這么卡 瀏覽:500
聯想模擬器登qq網路異常 瀏覽:911
網路盒子靜態設置 瀏覽:948
電視網路模式調tv模式沒有信號 瀏覽:578
怎樣網路連接到伺服器 瀏覽:753
車載carplay連接wifi後就沒網路 瀏覽:980
創意網路推廣哪個正規 瀏覽:63
網路圖片太慢怎麼辦 瀏覽:33
孝感網路營銷有哪些 瀏覽:402
特定的網路卡怎麼辦 瀏覽:880
無線網路名稱取什麼 瀏覽:95
路由器橋接完網路慢 瀏覽:738
網路線插座如何壓線 瀏覽:37

友情鏈接