3. 具有沖突檢測的載波監(jiān)聽多路訪問CSMA/CD
在CSMA中,由于信道傳播時延的存在,即使總線上兩個站點沒有監(jiān)聽到載波信號而發(fā)送幀時,仍可能會發(fā)生沖突。由于CSMA算法沒有沖突檢測功能,即使沖突已發(fā)和,仍然將已破壞的幀發(fā)送完,使總線的利用率降低。
一種CSMA的改進方案是使發(fā)送站點傳輸過程中仍繼續(xù)監(jiān)聽媒體,以檢測是否存在沖突。如果發(fā)生沖突,信道上可以檢測到超過發(fā)送站點本身發(fā)送的載波信號的幅度,由此判斷出沖突的存在。一于檢測到?jīng)_突,就立即停止發(fā)送,并向總線上發(fā)一串阻塞信號,用以通知總線上其它各有關(guān)站點。這樣,通道容量就不致因白白傳送已受損的幀而浪費,可以提高總線的利用率。這種方案稱做載波監(jiān)聽多路訪問/沖突檢測協(xié)議,簡寫為CSMA/CD,這種協(xié)議已廣泛應(yīng)用于局域網(wǎng)中。
CSMA/CD的代價是用于檢測沖突所花費的時間。對于基帶總線而言,最壞情況下用于檢測一個沖突的時間等于任意兩個站之間傳播時延的兩倍。從一個站點開始發(fā)送數(shù)據(jù)到另一個站點開始接收數(shù)據(jù),也即載波信號從一端傳播到另一端所需的時間,稱為信號傳播時延。信號傳播時延(μs)=兩站點的距離(m)/信號傳播速度(m/μs)。假定A、B兩個站點位于總線兩端,兩站點之間的最大傳播時延為tp。當A站點發(fā)送數(shù)據(jù)后,經(jīng)過接近于最大傳播時延tp時,B站點正好也發(fā)送數(shù)據(jù),此時沖突便發(fā)生。發(fā)生沖突后,B 站點立即可檢測到該沖突,而A站點需再經(jīng)過一份最大傳播時延tp后,才能檢測出沖突。也即最壞情況下,對于基帶CSMA/CD來說,檢測出一個沖突的時間等于任意兩個站之間最大傳播時延的兩倍(2tp)。
數(shù)據(jù)幀從一個站點開始發(fā)送,到該數(shù)據(jù)幀發(fā)送完畢所需的時間和為數(shù)據(jù)傳輸時延;同理,數(shù)據(jù)傳輸時延也表示一個接收站點開始接收數(shù)據(jù)幀,到該數(shù)據(jù)幀接收完畢所需的時間。數(shù)據(jù)傳輸時延(s)=數(shù)據(jù)幀長度(bit)/數(shù)據(jù)傳輸速率(bps)。若不考慮中繼器引入的延遲,數(shù)據(jù)幀從一個站點開始發(fā)送,到該數(shù)據(jù)幀被另一個站點全部接收所需的總時間,等于數(shù)據(jù)傳輸時延與信號傳播時延之和。
由于單向傳輸?shù)脑,對于寬帶總線而言,沖突檢測時間等于任意兩個站之間最大傳播時延的4倍。所以,
對于寬帶CSMA/CD來說,要求數(shù)據(jù)幀的傳輸時延至少4倍于傳播時延。
在CSMA/CD算法中,一旦檢測到?jīng)_突并發(fā)完阻塞信號后,為了降低再次沖突的概率,需要等待一個隨機時間,然后再使用CSMA方法試圖傳輸。為了保證這種退避操作維持穩(wěn)定采用了一種稱為二進制指數(shù)退避和算法,其規(guī)則如下:
(1)對每個數(shù)據(jù)幀,當?shù)谝淮伟l(fā)生沖突時,設(shè)置一個參量L=2;
(2)退避間隔取1到L個時間片中的一個隨機數(shù),1個小時片等于兩站之間的最大傳播時延的兩倍;
(3)當數(shù)據(jù)幀再次發(fā)生沖突,由將參量L加倍;
(4)設(shè)置一個最大重傳次數(shù),超過該次數(shù),則不再重傳,并報告出錯。
二進制指數(shù)退避算法是按后進先出LIFO(List In First Out)的次序控制的,即未發(fā)生沖突或很少發(fā)生沖突的數(shù)據(jù)幀,具有優(yōu)先發(fā)送的概率;而發(fā)生過多次沖突的數(shù)據(jù)幀,發(fā)送成功的概率就更少。
IEEE 802.3就是采用二進制指數(shù)退避和1-堅持算法的CSMA/CD媒體訪問控制方法。這種方法在低負荷時,如媒體空閑時,要發(fā)送數(shù)據(jù)幀的站點能立即發(fā)送;在重負荷時,仍能保證系統(tǒng)的穩(wěn)定性。由于在媒體上傳播的信號會衰減,為確保能檢測出沖突信號,CSMA/CD總線網(wǎng)限制一段無分支電纜的最大長度為500米。
相關(guān)推薦:2010年下半年軟考試題及答案解析匯總北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |