天天看點

為什麼802.3MAC幀最小是64位元組

看下圖:

| Pre | SFD | DA | SA | Length Type | Data unit + pad | FCS |

|__7__|__1__|__6_|__6_|______2______|______46-1500____|__4__|

前導碼字段(Pre):由7個位元組組成。其功能是使接收器建立比特同步。編碼形式為多個“1”或“0”交替構成的二進制序列,最後一比特為“0”。

幀首定界符(SFD):是MAN幀的第2個字段,其編碼形式為“10101011”序列,長度剛好為一個位元組。該字段的功能是訓示一幀的開始。

目的位址字段(DA):為第3個字段,長度為6個位元組。該字段用來指出幀要發住的工作站。

源點位址(SA)處于終點位址字段之後,其長度也為6個位元組。該字段功能是訓示發送該幀的工作站位址。

長度訓示符字段為第5個字段,其長度為2個位元組,用來訓示緊随其後的邏輯鍊路控制(LLC)資料位元組的長度,長度機關為位元組數。

LLC資料字段是幀要載攜的使用者資料,該資料由LLC子層提供或接收。

填充(PAD)字段緊接的LLC之後,用來對LLC資料進行填加,以保證幀有足夠長度,适應前面所述的碰撞檢測的需要。

幀檢驗序列(FCS)處于幀的最後,其長度為32比特,用于檢驗幀在傳輸過程中有無差錯。

幀總值最小為64位元組。這是因為:

A.當站點正在發送資料時,發生了沖突,就将未發送的部分丢棄,這樣導緻了實體線路上的殘餘幀的LEN可能為0,若MAC的LEN為0是合法的将無法差別。

B.另一個原因是為了防止一個站點發送短幀時,在第一比特還未到達線纜的最遠端就已完成發送,這時它會認為已成功的發送完資料;如果最遠端也同時發送一幀資料,它檢測到了沖突即發送一沖突幀,這樣發送方必須在發送完資料之前接收到最遠端的沖突幀,否則将生産沖突而檢測不到的現象。在一個最大長度為2500米,擁有4個中繼器的10Mb/s的區域網路中,允許的最小發送時間為51.2us,這個時間等于64位元組的發送時間,64位元組就是是以而來。

以太網是無連接配接的,不可靠的服務,采用盡力傳輸的機制。以太網CSMA/CD我就不多講了,我相信大家都了解這個原理。

以太網是不可靠的,這意味着它并不知道對方有沒有收到自己發出的資料包,但如果他發出的資料包發生錯誤,他會進行重傳。以太網的錯誤主要是發生碰撞,碰撞是指兩台機器同時監聽到網絡是空閑的,同時發送資料,就會發生碰撞,碰撞對于以太網來說是正常的。

我們來看一下,假設A檢測到網絡是空閑的,開始發資料包,盡力傳輸,當資料包還沒有到達B時,B也監測到網絡是空閑的,開始發資料包,這時就會發生碰撞,B首先發現發生碰撞,開始發送碰撞信号,所謂碰撞信号,就是連續的01010101或者10101010,十六進制就是55或AA。這個碰撞信号會傳回到A,如果碰撞信号到達A時,A還沒有發完這個資料包,A就知道這個資料包發生了錯誤,就會重傳這個資料包。但如果碰撞信号會傳回到A時,資料包已經發完,則A不會重傳這個資料包。

我們先看一下,以太網為什麼要設計這樣的重傳機制。首先,以太網不想采用連接配接機制,因為會降低效率,但他又想有一定的重傳機制,因為以太網的重傳是微秒級,而傳輸層的重傳,如TCP的重傳達到毫秒級,應用層的重傳更達到秒級,我們可以看到越底層的重傳,速度越快,是以對于以太網錯誤,以太網必須有重傳機制。

要保證以太網的重傳,必須保證A收到碰撞信号的時候,資料包沒有傳完,要實作這一要求,A和B之間的距離很關鍵,也就是說信号在A和B之間傳輸的來回時間必須控制在一定範圍之内。IEEE定義了這個标準,一個碰撞域内,最遠的兩台機器之間的round-trip time 要小于512bit time.(來回時間小于512位時,所謂位時就是傳輸一個比特需要的時間)。這也是我們常說的一個碰撞域的直徑。

512個位時,也就是64位元組的傳輸時間,如果以太網資料包大于或等于64個位元組,就能保證碰撞信号到達A的時候,資料包還沒有傳完。

這就是為什麼以太網要最小64個位元組,同樣,在正常的情況下,碰撞信号應該出現在64個位元組之内,這是正常的以太網碰撞,如果碰撞信号出現在64個位元組之後,叫 late collision。這是不正常的。

總結:最小資料幀的設計原因和以太網電纜長度有關,為的是讓兩個相距最遠的站點能夠感覺到雙方的資料發生了碰撞;最遠兩端資料的往返時間就是争用期,以太網的争用期是51.2微妙,正好發送64byte資料;最長資料幀應該和資料鍊路層信道使用率有關,隻有1514最合理.

1,關于最小位元組的由來

2.碰撞槽時間

假設公共總線媒體長度為S,幀在媒體上的傳播速度為0.7C(光速),網絡的傳輸率為R(bps),

幀長為L(bps),tPHY為某站的實體層時延;

則有:

碰撞槽時間=2S/0.7C+2tPHY

因為Lmin/R=碰撞槽時間

是以:Lmin =(2S/0.7C+2tPHY )×R

Lmin 稱為最小幀長度。

碰撞槽時間在以太網中是一個極為重要的參數,有如下特點:

(1)它是檢測一次碰撞所需的最長時間。

(2)要求幀長度有個下限。(即最短幀長)

(3)産生碰撞,就會出現幀碎片。

(4)如發生碰撞,要等待一定的時間。t=rT。(T為碰撞槽時間)

2.下面我們來估計在最壞情況下,檢測到沖突所需的時間

(1)A和B是網上相距最遠的兩個主機,設信号在A和B之間傳播時延為τ,假定A在t時

刻開始發送一幀,則這個幀在t+τ時刻到達B,若B在t+τ-ε時刻開始發送一幀,則B在t+τ時就

會檢測到沖突,并發出阻塞信号。

(2)阻塞信号将在t+2τ時到達A。是以A必須在t+2τ時仍在發送才可以檢測到沖突,是以一幀的

發送時間必須大于2τ。

(3)按照标準,10Mbps以太網采用中繼器時,連接配接最大長度為2500米,最多經過4個中繼器,因

此規定對于10Mbps以太網規定一幀的最小發送時間必須為51.2μs。

(3)51.2μs也就是512位資料在10Mbps以太網速率下的傳播時間,常稱為512位時。這個時間定

義為以太網時隙。512位時=64位元組,是以以太網幀的最小長度為512位時=64位元組。

繼續閱讀