當前位置:學問谷 >

生活範例 >生活範例常識 >

數據包是什麼-數據包的實例

數據包是什麼-數據包的實例

當時為蘭德公司工作的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,剛才已經説過了。

數據包是什麼

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

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

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

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

標籤: 數據包 實例
  • 文章版權屬於文章作者所有,轉載請註明 https://xuewengu.com/flsh/changshi/30jj1.html