為什麼乙太網最小幀是64位元組

2021-07-29 03:42:09 字數 4058 閱讀 2592

理解csma/cd,主要有三個方面:

1、多點接入:

2、載波監聽

3、碰撞檢測。

這裡值得一提的是,csma/cd 使用場景是在乙個站不能同時傳送資料和接收資料,即適用場景為 半雙工通訊。

多點接入:就是說這是匯流排型網路,許多計算機接在匯流排上。

載波監聽:傳送前先監聽。就是每個計算機在傳送資料前,先要檢測一下匯流排上是否有其他站在傳送資料。如果有,則暫時不傳送資料,等待通道變為空閒時在傳送。你可以理解為,汽車要駛入路口時,先按一下喇叭,看看道路內有沒有其他車輛。如果有人回應了,那表明狹窄道路上有車輛,暫時不用駛入。

碰撞檢測:邊傳送邊監聽。網絡卡邊傳送資料邊監聽通道上的訊號電壓的變化情況,以此來判斷自己在傳送資料時是否有其人正好也在傳送資料。如果確實傳送了,

匯流排上的訊號電壓變化幅度是會增加的(互相疊加),這是匯流排就認為產生了碰撞。傳輸的訊號會嚴重失真

匯流排的特點是

:當一台計算機傳送資料時,匯流排上的所有計算機都能監聽到這個資料。這也是常說的:廣播通訊。但現實中,我們並不總是需要一對多通訊。所以為了實現一對一通訊,專家們就使用了乙個叫做介面卡的東西,也是我們說的網絡卡,在上面進行燒錄不同的mac位址進行區分。計算機在傳送時,就在資料幀中的「

目的mac

」欄位填上接收站的位址即可。好比,現實中,我們寄快遞一樣,寫上

收件人的位址

一樣。匯流排工作有乙個特點

:匯流排上只要有乙個臺計算機在傳送資料,匯流排的傳輸資源就被占用了。所以,在同乙個時間內,只能允許一台計算機來傳送資料,否則各個計算機之間就會互相干擾,導致資料不可用。

網絡卡:

rule:當資料幀到達網絡卡時,在物理層上網絡卡要先去掉前導同步碼和幀開始定界符,然後對幀進行

crc檢驗,如果幀校驗和錯,就丟棄此幀。如果校驗和正確,就判斷幀的目的硬體位址是否符合自己的接收條件(目的位址是自己的物理硬體位址、廣播位址、可接收的多播硬體位址等),如果符合,就將幀交

「裝置驅動程式

」做進一步處理。

這時,你可能會有疑問,為什麼傳送前都已經載波監聽了,空閒時才傳送,怎麼會出現碰撞呢?

這是因為電磁波在匯流排傳播是以有限的速率傳播的。可能a機現在檢測是空閒的,b機也同時檢測是空閒的,於是他們同時傳送資料,然後的然後就傳送碰撞了。

電磁波在1km電纜的傳播時延約為5us。

我們經常把單程端到端的傳播時間記為 τ

t=0時,a傳送資料。b檢測到通道為空閒。

t=τ時(這裡τ>δ>0),a傳送資料還沒到達b時,由於b檢測到通道是空閒的(為什麼b檢測是空閒的?前面我們說了,電磁波1km的傳播時延是5us,換言之就是5us後b才能檢測到通道是忙的,5us之前,b認為是空閒的,於是開始傳送資料)。因此b傳送資料。

經過時間δ/2後,即在t=τ-δ時,a傳送的資料和b傳送的資料發生了碰撞。這時,a和b都不知道傳送了碰撞。

t=τ時,只有b先檢測到了發生碰撞,於是停止傳送資料。

在t=2τ- δ時,a才檢測到發生了碰撞,也停止傳送資料。

然後a和b就隨時選擇乙個時間,推遲,再重新傳送。

由此可知,每乙個站,在傳送資料時,在一定時間內,都存在碰撞的可能性。

傳送資料幀的a站,最多經歷2τ時間就可以知道是否遭受碰撞了。我們把這2τ稱為爭用期,也叫碰撞視窗。

經過這個爭用期時間,檢測沒有發生碰撞,就能肯定這次傳送的資料不會發生碰撞。

至此,碰撞問題還是沒有解決。專家們就發明了一種演算法,來減小發生碰撞的概率,這個演算法就是:退避演算法。

退避,意思就是推遲,傳送碰撞了,利用一種演算法,來選擇推遲多久才傳送資料。

退避演算法的思想如下:

1、確定基本退避時間。就是爭用期2τ。乙太網把爭用期2τ定為51.2us 。(至於為什麼是這個值,就沒必要去糾結了,反正當時專家這麼定,你就這麼記咯!)

對於10mb/s乙太網,在爭用期內可傳送512bit,即64位元組。

512bit怎麼來的? 就是速率乘以時間,就等於資料量。 

10mb/s*51.2us=[10*10^6b/s] * [51.2^(-6)s]=512bit 

2、從離散的整數集合隨機取出乙個數[0,1,2,3……,(2^k-1)]  ,取出來的數,記為r。重傳推遲的時間就是r倍的爭用期。t=r*2τ

上面k的引數,按照這個計算k=min[重傳次數,10]。  可見,當重傳次數不超過10時,引數k=重傳次數。如果重傳次數超過10時,k就不再增加了,一直等於10。

3、當重傳達16次,仍然會不能成功時,就丟棄該幀,向高層報告。說明傳送的人太多了,導致連續傳送碰撞。

舉例:在第一次重傳時,k=1,隨機數r從整數中選乙個數,  可得重傳的推遲時間要麼為0,要麼為1*2τ, 這兩個選擇乙個。

如果再次傳送,即第二次重傳,k=2,代入[0,1,2,3……,(2^k-1)] ,隨機數r從整數選乙個數,可得重傳推遲時間是0,2τ,4τ,6τ 這4個值隨機選擇乙個。

同理,再次傳送碰撞,以此類推。

結論到這裡,我們就可以看出,乙太網在傳送資料時,如果幀的前64位元組沒有傳送衝突,那麼後續的資料就不會傳送衝突。換句話說,就是如果傳送衝突,就一定是在傳送的前64位元組之內。因為檢測到衝突就停止傳送,這時已經傳送出去的資料一定小於64位元組。

因此乙太網規定了最短有效幀長為64位元組,只要長度小於64位元組的幀都是由於衝突而異常中止的無效幀。收到這種無效幀就立即丟棄。

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

我們來看一下,假設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。這是不正常的。

我們以前學習cisco網路的時候,cisco交換機有一種**方式叫fragment-free,叫無碎片**,他就是檢查64個位元組之內有沒有錯誤,有的話不**,這樣就排除了正常的乙太網錯誤包。

為什麼傳統乙太網最小幀長度是64位元組

這裡說的傳統乙太網是指10mbit s乙太網.下面簡述下乙太網工作原理 乙太網中各工作站 計算機 的工作方式與計算機系統中的匯流排類似,各工作站共享匯流排。假設匯流排上a傳送資料到b,則連線到匯流排上的工作站都會收到a的資料,然後通過匹配幀中的目的位址來判斷是不是傳送給自己的資料,如果是傳送給自己的...

為什麼乙太網資料幀最小為64位元組

如果把 乙太網 比作是一棟 房子 這棟房子可以算得上是人類構建的非常了不起的 建築 了,乙太網設計人員制定了一系列的標 準,這些看似有意義似乎又沒有意義的數字 標準構成了乙太網的磚瓦基石,今天我們來看一塊位於這棟 房子 底層的 磚基 乙太網最小幀長為什麼是64 位元組。首先我們先來看一下乙太網資料幀...

為什麼乙太網最短幀為64位元組

乙太網是不可靠的,這意味著它並不知道對方有沒有收到自己發出的資料報,但如果他發出的資料報發生錯誤,他會進行重傳。乙太網的錯誤主要是發生碰撞,碰撞是指兩台機器同時監聽到網路是空閒的,同時傳送資料,就會發生碰撞,碰撞對於乙太網來說是正常的。我們來看一下,假設a檢測到網路是空閒的,開始發資料報,盡力傳輸,...