1. 程式人生 > >CSMA/CD協議

CSMA/CD協議

自己 總線 做的 存在 端到端 速度 單位 信息 特性

廣播信道可以一對多通
局域網的數據鏈路層
  局域網的特點:網絡為一個單位所擁有,且地理範圍和站點數目均有限。
  如何使局域網上的眾多主機能夠合理而方便的共享通信媒體資源?在技術上有兩種方法:
  ? 靜態劃分信道:在物理層進行頻分復用、時分復用、碼分復用,這種方法代價較高,不適合局域網使用。
  ? 動態媒體接入控制,又稱為多點接入,信道並非在用戶通信時固定分配。這種方法又分為兩類
  ? 隨機接入:所有連接在局域網上的用戶可以隨機的發送信息,但是如果有兩個用戶在同時發送信息,那麽就會產生碰撞,因此必須要有解決碰撞的協議
  ? 受控接入:用戶不能隨機發送信息,必須服從一定的控制,這種方法使用的較少
  嚴格的說以太網是符合DIXEthernet U2標準的局域網
  IEEE 802 委員會把局域網的數據鏈路層拆分為兩個子層:
  ? 邏輯鏈路控制層:LLC 這一層的 作用在現在已經消失了
  ? 媒體接入控制層:MAC
適配器


  計算機與外界局域網的連接是通過通信適配器來完成的,適配器上裝有處理器和存儲器(RAM/ROM)。適配器中的存儲芯片必須對數據進行緩存,因為網絡上的數據率與計算機總線上的數據率並不相同,同時計算機的操作系統中必須安裝適配器的驅動程序,驅動程序的作用是使告訴適配器應該從存儲器的什麽。位置把多長的數據發送到局域網,或者應該在存儲器的什麽位置上把局域網傳送過來的數據塊存儲下來。
  適配器要實現以太網協議,適配器包含了數據鏈路層和物理層的功能,計算機的MAC地址在適配器的ROM中,IP地址在計算機的存儲器中,適配器在發送和接受各種幀的時候,並不使用計算機的CPU,當適配器收到正確的幀時,它就使用中斷來通知計算機並交付協議棧中的網絡層,當計算機要發送IP數據報時,就由協議棧把IP數據報交付給適配器,組裝成幀後發送到局域網中。

技術分享圖片

CSMA/CD 協議
  如何在具有廣播特性的總線上實現一對一通信?
  使每一臺計算機的適配器都擁有一個與其他適配器不同的地址,也就是MAC地址。在發送數據時,在幀的首部寫明接收站的地址,廣播中的其他站點收到這個幀時,檢查目的地址是否與自己的MAC地址一致,如果一致則接收該幀,如不一致,就不接收該幀。
  如何實現通信的便捷?
  ? 以太網提供的服務是盡最大努力的交付,是不可靠的,在同一時間只允許一臺計算機發送數據
  ? 以太網發送的數據都使用曼徹斯特編碼,方便接收端提取信號。

協議的要點
  ? 多點接入,許多計算機以多點接入的方式連接在一根總線上。
  ? 載波監聽,在發送數據之前(為了獲得發送權)、發送中都要對信道不停的檢測,看信道上是否還有其他計算機在發送數據。
  ? 碰撞檢測,適配器邊發送數據邊檢測信道上的電壓的變化情況,如果電壓的幅度變化超過一定的門限值,信道上就產生了碰撞,一旦產生碰撞,適配器要立即停止發送數據。

  數據在發送之後仍存在產生碰撞的可能?
  既然在發送數據之前,已經檢測了信道上沒有計算機在發送數據,即信道為“空閑”狀態,為什麽會會產生碰撞?由於電磁波的傳播速度是有限的,所以存在這種可能性,即兩個主機同時檢測到信道為空,都想發送數據,此時就會產生發生碰撞的可能性。
  電磁波在1km的電纜上的傳播時延約為5us,  
技術分享圖片
  經過分析,一個站點最多經過兩倍的端到端的傳播時延就會知道有沒有發生碰撞,每個站點在自己發生數據的一小段時間內,存在遭遇碰撞的可能性。兩倍的τ(tao)
  註意:使用CSMA/CD協議時,站點只能進行半雙工通信,同時要邊發送數據邊檢測信道上是否發生碰撞

在發生碰撞之後如何確定重傳的時機?
  以太網使用截斷二進制指數退避算法來確定重傳的時機,算法的描述如下:
  ? 基本的退避時間為:2τ,具體為51.2us,對於10mb/s的以太網,在51.2us的時間內,可以發送512kbit的數據,即64字節,
  ? 從集合[1,2,...,(2的k次方 -1) ]中隨機選取一個整數,記為 r ,重傳後應退後的時間就是為 r 倍的爭用期,
  k = min[重傳次數,10]
  若 k >= 16,則丟棄該幀,以太網的最短幀長是64個字節,發送時間為51.2us,
  如果以太網在爭用期的時間內沒有發生碰撞,那麽 後續發送的數據都不會發生碰撞,一旦發生碰撞,就必然是子在發送的前64字節之內,由於檢測到沖突,即立即停止發送數據,那麽接收端凡是接收到小於64字節的幀,都是無效幀,應該丟棄該幀。
強化碰撞
  當發送數據的站點一旦發生了碰撞,除了立即停止發送數據外,還要繼續發送,32bit或者48bit的人為幹擾信號,以便讓所有用戶都知道發生了碰撞,以太網還規定了幀間最小間隔為9.6us,相當於96bit的時間,這樣做的目的是為了使剛剛接收到數據幀的 站點的接收緩存來得及清理,做好接收下一幀的準備。

CSMA/CD協議