基礎篇
CSMA/CD是一種爭用型的介質訪問控制協定。它起源於:偵聽、傳送、檢測、衝突處理開發的ALOHA網所採用的爭用型協定,並進行了改進,使之具有比ALOHA協定更高的介質利用率。主要套用於現場匯流排Ethernet中。另一個改進是,對於每一個站而言,一旦它檢測到有衝突,它就放棄它當前的傳送任務。換句話說,如果兩個站都檢測到信道是空閒的,並且同時開始傳送數據,則它們幾乎立刻就會檢測到有衝突發生。它們不應該再繼續傳送它們的幀,因為這樣只會產生垃圾而已;相反一旦檢測到衝突之後,它們應該立即停止傳送數據。快速地終止被損壞的幀可以節省時間和頻寬。
CSMA/CD控制方式的優點是:
原理比較簡單,技術上易實現,網路中各工作站處於平等地位 ,不需集中控制,不提供優先權控制。但在網路負載增大時,傳送時間增長,傳送效率急劇下降。
CSMA/CD套用在 OSI 的第二層數據鏈路層
它的工作原理是: 傳送數據前 先偵聽信道是否空閒 ,若空閒,則立即傳送數據。若信道忙碌,則等待一段時間至信道中的信息傳輸結束後再傳送數據;若在上一段信息傳送結束後,同時有兩個或兩個以上的節點都提出傳送請求,則判定為衝突。若偵聽到衝突,則立即停止傳送數據,等待一段隨機時間,再重新嘗試。
其原理簡單總結為:先聽後發,邊發邊聽,衝突停發,隨機延遲後重發
CSMA/CD採用IEEE 802.3標準。
它的主要目的是:提供定址和媒體存取的控制方式,使得不同設備或網路上的節點可以在多點的網路上通信而不相互衝突。
有人將CSMA/CD的工作過程形象的比喻成很多人在一間黑屋子中舉行討論會,參加會議的人都是只能聽到其他人的聲音。每個人在說話前必須先傾聽,只有等會場安靜下來後,他才能夠發言。人們將發言前監聽以確定是否已有人在發言的動作成為"載波偵聽";將在會場安靜的情況下每人都有平等機會講話成為“多路訪問”;如果有兩人或兩人以上同時說話,大家就無法聽清其中任何一人的發言,這種情況稱為發生“衝突”。發言人在發言過程中要及時發現是否發生衝突,這個動作稱為“衝突檢測”。如果發言人發現衝突已經發生,這時他需要停止講話,然後隨機後退延遲,再次重複上述過程,直至講話成功。如果失敗次數太多,他也許就放棄這次發言的想法。
進階篇
控制規程
控制規程的核心問題:解決在公共通道上以廣播方式傳送數據中可能出現的問題(主要是數據碰撞問題)
控制過程包含四個處理內容:偵聽、傳送、檢測、衝突處理
(1) 偵聽:
通過專門的檢測機構,在站點準備傳送前先偵聽一下匯流排上是否有數據正在傳送(線路是否忙)?
若“忙”則進入後述的“退避”處理程式,進而進一步反覆進行偵聽工作。
若“閒”,則一定算法原則(“X堅持”算法)決定如何傳送。
(2) 傳送:
當確定要傳送後,通過傳送機構,向匯流排傳送數據。
(3) 檢測:
數據傳送後,也可能發生數據碰撞。因此,要對數據邊傳送,邊檢測,以判斷是否衝突了。
(4)衝突處理:
當確認發生衝突後,進入衝突處理程式。有兩種衝突情況:
① 偵聽中發現線路忙
② 傳送過程中發現數據碰撞
① 若在偵聽中發現線路忙,則等待一個延時後再次偵聽,若仍然忙,則繼續延遲等待,一直到可以傳送為止。每次延時的時間不一致,由退避算法確定延時值。
② 若傳送過程中發現數據碰撞,先傳送阻塞信息,強化衝突,再進行偵聽工作,以待下次重新傳送(方法同①)CSMA/CD工作原理及性能分析(指標與影響因素) CSMA/CD是carrier sense multiple access/collision detected 的縮寫,可譯為“載波偵聽多路訪問/衝突檢測”,或“帶有衝突檢測的載波偵聽多路訪問”。所謂載波偵聽(carrier sense),意思是網路上各個工作站在傳送數據前都要偵聽匯流排上有沒有數據傳輸。若有數據傳輸 (稱匯流排為忙),則不傳送數據;若無數據傳輸(稱匯流排為空),立即傳送準備好的數據。所謂多路訪問(multiple access)意思是網路上所有工作站收發數據共同使用同一條匯流排,且傳送數據是廣播式的。所謂衝突(collision),意思是,若網上有兩個或兩個以上工作站同時傳送數據,在匯流排上就會產生信號的混合,兩個工作站都同時傳送數據,在匯流排上就會產生信號的混合,兩個工作站都辨別不出真正的數據是什麼。這種情況稱數據衝突又稱碰撞。為了減少衝突發生後的影響。工作站在傳送數據過程中還要不停地檢測自己傳送的數據,有沒有在傳輸過程中與其它工作站的數據發生衝突,這就是衝突檢測(collision detected)。
CSMA/CD媒體訪問控制方法的工作原理,可以概括如下:
先聽後說,邊聽邊說;
一旦衝突,立即停說;
等待時機,然後再說;
註:“聽”,即監聽、檢測之意;“說”,即傳送數據之意。
上面幾句話意思是在傳送數據前,先監聽匯流排是否空閒。若匯流排忙,則不傳送。若匯流排空閒,則把準備好的數據傳送到匯流排上。在傳送數據的過程中,工作站邊傳送邊檢測匯流排,是否自己傳送的數據有衝突。若無衝突則繼續傳送直到發完全部數據;若有衝突,則立即停止傳送數據,但是要傳送一個加強衝突的JAM信號,以便使網路上所有工作站都知道網上發生了衝突,然後,等待一個預定的隨機時間,且在匯流排為空閒時,再重新傳送未發完的數據。
性能指標:信道利用率、吞吐量、介質利用率
CSMA/CD的主要影響因素:傳播時延、工作站數。
①CSMA/CD對站點個數不是很敏感,對實際的輸入負載比較敏感。
②CSMA/CD對傳播時延a比較敏感。
③CSMA/CD衝突不可避免。
④CSMA/CD的介質利用率隨a的上升下降較快。
⑤CSMA/CD適合通信量不大,互動頻繁的場合
⑥對於CSMA/CD幀越長,吞吐量越太,要求幀具有最小長度,當有許多短訊息時,頻寬浪費嚴重。
⑦CSMA/CD在輕負載時提供最短延遲,但對重負載敏感。
主要參數:
時間片512比特時間
幀間間隔9.6微秒
嘗試極限16
退避極限10
人為干擾長32比特
最大幀長1518位元組
最小幀長64位元組
地址欄位長48比特
幾個概念
上述兩種衝突情況都會涉及一個共同算法——退避算法。
①退避算法:當出現線路衝突時,如果衝突的各站點都採用同樣的退避間隔時間,則很容易產生二次、三次的碰撞。因此,要求各個站點的退避間隔時間具有差異性。這要求通過退避算法來實現。
截斷的二進制指數退避算法(退避算法之一):
當一個站點發現線路忙時,要等待一個延時時間M,然後再進行偵聽工作。延時時間M以以下算法決定:
M = 0 ~ (2^k - 1) 之間的一個隨機數乘以512比特時間(例如對於10Mbps乙太網,為51.2微秒),k為衝突(碰撞)的次數,M的最大值為1023,即當k=10及以後M始終是0~1023之間的一個隨機值與51.2的乘積,當k增加到16時,就發出錯誤信息。
② 特殊阻塞信息:是一組特殊數據信息。在傳送數據後發現衝突時,立即傳送特殊阻塞信息(連續幾個位元組的全1,一般為32-48位),以強化衝突信號,使線路上站點可以儘早探測得到衝突的信號,從而減少造成新衝突的可能性。
③ 衝突檢測時間>=2α: α表示網路中最遠兩個站點的傳輸線路延遲時間。該式表示檢測時間必須保證最遠站點發出數據產生衝突後被對方感知的最短時間。在2α時間裡沒有感知衝突,則保證發出的數據沒有產生衝突。(只要保證檢測2α時間,沒有必要整個傳送過程都進行檢測)
④ X-堅持的CSMA算法:當在偵聽中發現線路空閒時,不一定馬上傳送數據,而採用X-堅持的CSMA算法決定如何進行數據傳送:
算法特點
- 非堅持的CSMA:線路忙,等待一段時間,再偵聽;不忙時,立即傳送;減少衝突,信道利用率降低:
- 1堅持的CSMA:線路忙,繼續偵聽;不忙時,立即傳送;提高信道利用率,增大衝突:
- p堅持的CSMA:線路忙,繼續偵聽;不忙時,根據p機率進行傳送,另外的1-p機率為繼續偵聽(p是一個指定機率值);有效平衡,但複雜:
(5)控制流程圖(右上角圖):
(6)CSMA控制規程的特徵
① 簡單
② 具有廣播功能
③ 平均頻寬: f = F / n
④ 絕對平等,無優先權
⑤ 低負荷高效,高負荷低效
⑥ 延時時間不可預測
⑦ 傳輸速率與傳輸距離為一定值
套用篇
CSMA/CD 曾經用於各種匯流排結構 乙太網(bus topology Ethernet)和雙絞線乙太網(twisted-pair Ethernet)的早期版本中。
CSMA/CD網路上進行傳輸時,必須按下列五個步驟來進行
(1)傳輸前偵聽
(2)如果忙則等待
(3)傳輸並檢測衝突
(4)如果衝突發生,重傳前等待
(5)重傳或夭折