1. 程式人生 > >為什麽以太網上的幀最小要64字節

為什麽以太網上的幀最小要64字節

鏈路層 應用層 col 錯誤 鏈路 ofo 有關 data bit

以太網是無連接的,不可靠的服務,采用盡力傳輸的機制。以太網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最合理.

為什麽以太網上的幀最小要64字節