# CSMA

## 載波偵測、多重存取

工作在 OSI 參考模型的資料鏈結層的媒體存取控制層。

### non-persistent CSMA

傳送端偵測到線路忙或發生碰撞時，會隨機等待一段時間再進行偵測；若發現不忙則立即傳送。此策略可以減少碰撞，但會導致線路利用率降低及較長的延遲。

### 1-persistent CSMA

傳送端偵測到線路忙或發生碰撞時，會持續偵測；若發現不忙則立即傳送。當傳播延遲較長或多個裝置同時傳送影格的可能性較大時，此策略會導致較多的碰撞，導致效能降低。

### p-persistent CSMA

當要傳送影格的裝置偵聽到線路忙或發生碰撞時，會持續偵聽；若發現不忙，則根據一個事先指定的機率 p 來決定是傳送影格還是繼續偵聽（以 p 的機率傳送，1-p 的機率繼續偵聽）；此種策略可以達到一定的平衡，但對於參數 p 的配置會涉及比較複雜的考量。

## CSMA/CD 碰撞偵測

此方案要求裝置在傳送影格的同時要對信道進行偵聽，以確定是否發生碰撞，若在傳送資料過程中檢測到碰撞，則進行如下碰撞處理操作：

1. 傳送特殊阻塞資訊並立即停止傳送資料：特殊阻塞資訊是連續幾個位元組的全1訊號，此舉意在強化碰撞，以使得其它裝置能儘快檢測到碰撞發生。
2. 在固定時間（一開始是1 contention period times）內等待隨機的時間，再次傳送。
3. 若依舊碰撞，則採用**二進位指數後退演算法**進行傳送。即十次之內停止前一次「固定時間」的兩倍時間內隨機再發送，十次後則停止前一次「固定時間」內隨機再發送。嘗試 16 次之後仍然失敗則放棄傳送。

&#x20;此方案應用於乙太網路(Ethernet)。

## CSMA/CA 碰撞避免

此種方案採用主動避免碰撞而非被動偵測的方式來解決碰撞問題。可以滿足那些不易準確偵測是否有碰撞發生的需求， 若在傳送資料過程中檢測到碰撞，則進行如下碰撞處理操作：

1. 裝置欲發送訊框（Frame），且訊框聽到通道空閒時，維持一段時間後，再等待一段隨機的時間依然空閒時，才送出資料。由於各個裝置的等待時間是分別隨機產生的，因此很大可能有所區別，由此可以減少碰撞的可能性。
2. RTS-CTS三向握手（英語：handshake）：裝置欲發送訊框前，先發送一個很小的RTS（Request to Send）訊框給最近的接入點（Access Point），等待目標端回應CTS（Clear to Send）影格後，才開始傳送。此方式可以確保接下來傳送資料時，不會發生碰撞。同時由於RTS影格與CTS影格都很小，讓傳送的無效開銷變小。

&#x20;此方案應用於無線網路。
