有關數據鏈路層的學習,看了謝希仁的計算機網絡,感覺就是很雜,腦子里面沒有頭緒,所以總結一下。
數據鏈路層主要兩種協議,一種是點對點的PPP協議,另外一種是一對多的CSMA/CD協議。
點對點的PPP協議前面已經總結過了,今天抽時間再總結一下CSMA/CD協議:
需要注意的是:在局域網中,由於集線器的出現,星型網在局域網中得到了廣泛的應用。
在網絡剛開始的時候,主要使用的是總線型網絡結構,因此,CSMA/CD協議是在總線型網絡的基礎上發展起來的,但是隨着技術的發展和集線器的出現,在現在的大多數局域網中已經不再進行CSMA/CD協議了。
CSMA/CD協議:
這個協議所要解決的核心問題就是多點接入時,只能有一個主機占用總線,所以協議的實質就是“載波監聽”和“碰撞檢測”
我們先來解釋一下,什么叫“載波監聽”和“碰撞檢測”???
載波監聽:就是在多點接入時,由於網絡時總線型的,所以同一時刻只能有一台主機發送,其他主機只能接受,其他主機想要發送數據,只能等到該主機發送完畢后才能進行。所以我們需要監聽總線,是不是能夠發送數據,這稱之為:“載波監聽”。
碰撞檢測:就是在同時又兩台主機在總線發送數據時,我們需要知道總線上的數據發生了沖突,這種行為稱之為“碰撞檢測”;
有些同學就會問,既然我們不允許同時發,那么為什么還會發生碰撞呢???
這是因為當總線閑下來之后,可能會被幾台主機同時檢測到,那么此時就會發生碰撞,這時,我們要能夠檢測到總線數據發生了數據碰撞,發生數據碰撞的主機都要停止發送數據,那么我們怎么樣來確定數據發送沒有發生碰撞呢,那就是等待,假設數據從主機A發送到B的所用的時間為T,我們可以發現,當等待時間大於2T時還沒有檢測到數據碰撞,那么此次數據發送沒有發生碰撞。這段時間稱為爭用期。
協議中規定,爭用期為51.2us,這個時間是怎么來的呢???
協議規定,每一幀發送數據的最短字節為64,也就是512bit,假設是10Mbps,那么時間就是51.2us,當然,如果速率提高的話,時間也就相應變短。
停止之后,我們使用截斷二進制指數退避算法來確定重新傳的數據,也就是等待一段時間,這段時間是爭用期時間的整數倍,具體是多少倍是隨機的,還和已經重新傳數據的次數有關,比如已經傳了5次,那么這次的整數是0-5中隨機的一個整數,如果是6次,就是0-6的隨機整數。
如此,這就是CSMA/CD協議。
這就是我對CSMA/CD協議的理解,歡迎大家批評指正
