最大幀長和最小幀長詳解

2021-08-18 00:22:05 字數 3248 閱讀 5901

文章出處:

在傳統乙太網中,為什麼要有最小幀長度和最大幀長度的限制?

乙太網(ieee 802.3)幀格式:

1.前導碼:7位元組0x55,一串1、0間隔,用於訊號同步;

2.幀起始定界符:1位元組0xd5( 10101011 ),表示一幀開始;

3.da ( 目的mac ):6位元組;

4.sa ( 源mac ):6位元組;

5.型別 / 長度:2位元組,0~1500保留為長度域值,1536~65535保留為型別域值(0x0600~0xffff);

6.資料:46-1500位元組;

7.幀校驗序列(fcs):4位元組,使用crc計算從目的mac到資料域這部分內容而得到的校驗和。

以csma / cd作為mac演算法的一類lan稱為乙太網

csma / cd衝突避免的方法:先聽後發、邊聽邊發、隨機延遲後重發。一旦發生衝突,必須讓每台主機都能檢測到。關於最小傳送間隙和最小幀長的規定也是為了避免衝突。

考慮如下的情況,主機傳送的幀很小,而兩台衝突主機相距很遠,在主機a傳送的幀傳輸到b的前一刻,b開始傳送幀。這樣,當a的幀到達b時,b檢測到衝突,於是傳送衝突訊號。假如在b的衝突訊號傳輸到a之前,a的幀已經傳送完畢,那麼a將檢測不到衝突而誤以為已傳送成功。由於訊號傳播是有時延的,因此檢測衝突也需要一定的時間。這也是為什麼必須有個最小幀長的限制

按照標準,10mbps乙太網採用中繼器時,連線的最大長度是2500公尺,最多經過4個中繼器,因此規定對10mbps乙太網一幀的最小傳送時間為51.2微秒。這段時間所能傳輸的資料為512位,因此也稱該時間為512位時。這個時間定義為乙太網時隙,或衝突時槽。512位=64位元組,這就是乙太網幀最小64位元組的原因。

512位時是主機捕獲通道的時間。如果某主機傳送乙個幀的64位元組仍無衝突,以後就不會再發生衝突了,稱此主機捕獲了通道

由於通道是所有主機共享的,如果資料幀太長就會出現有的主機長時間不能傳送資料,而且有的傳送資料可能超出接收端的緩衝區大小,造成緩衝溢位。為避免單一主機占用通道時間過長,規定了乙太網幀的最大幀長為1500。

100mbps乙太網的時隙仍為512位時,乙太網規定一幀的最小傳送時間必須為5.12μs。

1000mbps的乙太網的時隙增至512位元組,即4096位時,4.096μs。

熟悉了最小幀長,可以說就明白了為什麼基於csma/cd協議的乙太網有網段長度限制,同時也掌握了乙太網的精髓。

在這之前,我們應該先了解一下csma/cd協議。

什麼是csma/cd協議(載波偵聽多路訪問/衝突檢測協議)?乙個房間有很多人,如果同時說話,就誰也聽不清楚別人說什麼,於是大家約定了乙個機制:每個人在說話之前先聽一下有沒有其他人說話(載波偵聽),如果有,自己就先不說話,如果沒有,就說話。如果大家同時發現房間裡沒有人說話,則同時開口,此時就產生衝突(衝突檢測),產生衝突後大家都閉嘴,每個人心裡都隨機的選乙個時間開口說話,這樣隨機時間時間最短的那個人就可以說話了,而其他人聽著。在這乙個大房間裡,大家在同乙個空間(共享同乙個介質)裡可以彼此說話(多路訪問。而不僅是只能和某個人說話)。乙太網就是遵循這種方式通訊,鏈結在同一條網線上的多個裝置必須在傳送資料前先偵聽線上有無其他機器在傳輸,如果沒有就傳送,如果遇到衝突就等乙個隨機的時間再傳送。

關鍵的一點是:傳送和接受端如何感知衝突?

假設:a、b兩地間通過乙個傳送帶鏈起來,傳送帶的滾動速度是c(c代表光速),也就是20.3cm/ns(每納秒20.3厘公尺),a點有個人叫a1,他要把一車蘋果分成一小堆一小堆的傳送給b點的那個人b1,現則a1需要抉擇的是:我在傳送蘋果給b1的時,如果b1同時也有蘋果傳給我,這個時候就會產生衝突,而衝突會把傳送中的蘋果撞碎,破碎的蘋果渣會通過傳送帶反送給我,我很想知道是哪一小堆蘋果被撞碎了,如何實現?乙個辦法就是:在我收到蘋果碎片的時候,我仍舊在傳著這堆蘋果!比如有很多堆蘋果,第1堆,第2堆等,當我傳送第3堆蘋果的過程中,收了蘋果碎片,那肯定是第3堆裡先發出的蘋果出現了碰撞,而不是第2堆或第1堆中的蘋果發生碰撞。

為了實現這一點,假如a到b點的距離是2500公尺(250000厘公尺),傳送帶上的蘋果每納秒20.3厘公尺,那麼一堆蘋果中的第乙個蘋果到達b點的用時就是250000除以20.3=12500納秒,在加上碎片返回的時間是12500納秒,等於25000納秒,這個時間就是一堆蘋果必須持續的時間。

體力稍好的人,往傳送帶上放蘋果的時候快,體力不好的就慢。體力稍好的人每秒可以往傳送帶上放100mbit個蘋果,換算一下,也就是說放乙個蘋果用10納秒。體力不好的人每秒鐘只能往傳送帶上放10mbit個,也就是說放乙個蘋果用100納秒。

因為一堆蘋果必須持續的時間25000納秒,那麼對於體力不好的人,25000除以100=250個蘋果,這個結果就是一堆蘋果的數量。所以,理論上乙個10mbit/s的乙太網,最小幀長應該是250bit。但為了確保碰撞切實的被檢測到,最小幀長被定義為512bit(64位元組)。

因為一堆蘋果必須持續的時間25000納秒,對於體力好的人,25000除以10=2500個蘋果,這個結果就是一堆蘋果的數量。所以,理論上乙個100mbit/s的乙太網,最小幀長應該是2500bit。但乙個2500bit的幀又太大了,上層來的資料報不可能這麼大。所以我們只能縮短a點到b點的距離為250公尺,乙個蘋果在傳送帶上往返的時間也變成了2500納秒。這時用2500除以10=250個蘋果,這個結果就是一堆蘋果的數量。所以,理論上乙個100mbit/s的乙太網,最小幀長應該是250bit,網路最大有效距離是250公尺。但為了確保碰撞切實的被檢測到,最小幀長被定義為512bit(64位元組)。

以下動畫演示了傳送端a在把資料傳輸給b時,在將要到達b點的地方出現了碰撞,於是碰撞碎片傳回了a,a就知道正在傳輸的資料出現衝突了。

由此可見,mac層傳送的速度越快,乙太網的最大有效距離就越短。但對於1000mb/s的吉位元乙太網,mac層有兩種選擇,要麼保留csma/cd,要麼不用它。若保留csma/cd協議,必須面臨碰撞檢測問題,這就要再一次減小網路的最大有效傳輸距離到25公尺。當然您可以不縮短網路的距離,而是增加乙個幀的程度,就如我們開始分析100mb/s乙太網那樣,讓乙個幀持續足夠長的時間。但因為上層來的資料沒有這麼多,所以就需要在mac層進行一些無用資料的填充來滿足這個要求。

最後,我們推導出以下比例關係:

最小幀長/傳輸速率

正比於

網路最大傳輸距離/光速

乙個網路的最大傳輸距離也稱為衝突域,傳輸乙個最小幀所用的時間(最小幀長/傳輸速率)正比於1位資訊穿越衝突域的時間。

乙太網幀最小幀長與最大幀長

討論乙太網的幀長,就不得不先提一下乙太網的大名鼎鼎的csma cd協議。1.1 csma cd協議 csma cd是英文carrier sense multiple access collision detected 的縮寫,可把它翻成 載波監聽多路訪問 衝突檢測 或 帶有衝突檢測的載波偵聽多路訪問...

乙太網 突破最大幀長 乙太網幀最小幀長與最大幀長

討論乙太網的幀長,就不得不先提一下乙太網的大名鼎鼎的csma cd協議。1.1 csma cd協議 csma cd是英文carrier sense multiple access collision detected 的縮寫,可把它翻成 載波監聽多路訪問 衝突檢測 或 帶有衝突檢測的載波偵聽多路訪問...

乙太網的最小幀和最大幀長的意義

乙太網是無連線的,不可靠的服務,採用盡力傳輸的機制。乙太網csma cd我就不多講了,我相信大家都了解這個原理。乙太網是不可靠的,這意味著它並不知道對方有沒有收到自己發出的資料報,但如果他發出的資料報發生錯誤,他會進行重傳。乙太網的錯誤主要是發生碰撞,碰撞是指兩台機器同時監聽到網路是空閒的,同時傳送...