資料包是什麼-資料包的例項

來源:果殼範文吧 2.03W

當時為蘭德公司工作的Paul Baran總結出,如果資料被分解成塊,而不是採用連續流的形式,它就可以支援更加穩定的系統,通過通用網路連線更遠更多的裝置。下面是本站小編為您整理關於資料包,歡迎閱讀!

資料包是什麼-資料包的例項
資料包的例項

到了傳輸層,也會有一個最大值的限制,當然,對於只管發,其它都不管的UDP來說,不在我們討論之列。這裡說的是TCP協議。說到大小,或許會讓人想到TCP著名的滑動視窗的視窗大小,它跟收發兩端的快取有關,這裡討論的是傳輸的最大資料包大小,所以,它也不在討論之列。

TCP的選項欄位中,有一個最大報文段長度(MSS),表示了TCP傳往另一端的最大資料的長度,當一個連線建立時,連線的雙方都要通告各自的MSS,也就是說,它是與TCP的SYN標誌在一起的。當然,對於傳輸來講,總是希望MSS越大越好,超載這麼嚴重,誰家不希望多拉點貨……但是,MSS總是有個限制的,也就是它的值=MTU-IP頭長度-TCP頭長度,對於乙太網來講它通常是1500-20-20=1460,雖然總是希望它能很大(如1460),但是大多數BSD實現,它都是512的倍數,如1024……

回到分片上來,例如,在Win2000下執行如下命令:

"ping -l 1473

按剛才的'說法,1473+20(ip頭)+8(icmp頭)=1501,剛好大於1500,它會被分片,但是,我們關心的是:

這個資料包會被怎麼樣分法?

可以猜想,第一個包是

以太頭+IP頭+ICMP頭+1472的資料;

那第二個分片包呢?

它可以是:

以太頭+IP頭+ICMP頭+1個位元組的資料

或者是:

以太頭+IP頭+1個位元組的資料"(引號內的內容可否在這裡不詳細闡述,對於1473的資料如何被分為1472和1不是很清楚2010.01.15 13:50)也就是省去ICMP頭的封裝,當然,IP頭是不可以省的,否則怎麼傳輸了……

事實上,TCP/IP協議採用的是後一種封裝方式,這樣,一次可以節約8個位元組的空間。IP包頭中,用了三個標誌來描述一個分片包:

1、分片標誌:如果一個包被分片了,分片標誌這個欄位被置於1,最後一個分片除外;——這樣,對於接收端來講,可以根據這個標誌位做為重組的重要依據之一;

2、分片偏移標誌:光有一個標誌位說明“自己是不是分片包”是不夠的,偏移標誌位說明了自己這個分片位於原始資料報的什麼位置。很明顯,這兩個標誌一結合,就很容易重組分片包了。

3、不允許分片標誌:如果資料包強行設定了這個標誌,那麼在應該分片的時候,…… err,剛才已經說過了。

資料包是什麼

讓我們回到流水的比喻,如果不是採用水管,而是把水裝到瓶子裡,你就可以把它送到任何地方。我們還可以把資料包比作信件,信寫在紙上裝在信封裡然後送到郵局。

資料包就是一個具有特殊尺寸和結構的框架。它在開始和結尾的地方有抬頭和尾註,用來識別是誰傳送的資料、傳送到哪裡等等。中間是訊息本身,或者載荷。對於給定型別的網路,載荷會有一個長度限制,因此太長的訊息必須要分割成幾個資料包。如果訊息很短,那麼資料包的其他部分也並不會因此縮短。不同的網路協議在細節處理方面會有所不同,但是基本的概念都是一致的。從傳送到接收的傳遞過程中資料被壓縮在資料包當中,到達之後再解壓縮。

聯網協議可以按照效率進行排名,或者也可以按照資訊載荷量與總體資料包大小的比例。如果包含抬頭、尾註和其他管理字元的資料包尺寸太大,這種協議就會被認為是無效的。有些人對乙太網現場儀表通訊持有異議,就是因為管理字元太多,而裝置生成的資料量又很少。

將較大資料分割成較小單元的一個好處,就是可以使用錯誤檢查協議(例如迴圈冗餘校驗)來驗證訊息的準確性。基本上,給定資料包中訊息內的所有資訊都擁有附帶的數值。協議將所有這些值相加,再除以另外一個數值的和,將計算的餘數賦給這個訊息。接收者會進行同樣的計算,確認得到相同的餘數值。如果沒有,就可以知道資料包中包含訊息的一部分數據遭到了破壞,然後將該資料包標註出來。

熱門標籤