談談以太網中何時使用CSMA/CD衝突檢測機制

    關於以太網何時使用CSMA/CD檢測機制,這個問題前兩天剛和朋友做了討論。在網絡上搜索和很久,也有一些同行們不太理解,特別是一些初學CCNA的,沒有工作經驗的同行們。在此,我把我的觀點和依據發在博客上供大家討論。
    以太網中到底何時使用CSMA/CD檢測機制來避免衝突,在於網絡處於什麼樣的工作模式(全雙工或者半雙工)下工作,網卡將自動與網絡接入設備(例如:交換機或者集線器)進行協商來判斷時候使用CSMA/CD檢測機制避免衝突的發生。
    我想,關於什麼是CSMA/CD各位網管或者網絡工程師們都應該知道,在這裏就不做太多解釋了。大家都知道,以太網工作模式有兩種,一種是全雙工工作模式,一種是半雙工工作模式。我們看分析一下這兩個模式下到底是不是用CSMA/CD衝突檢測機制。
    一. 在全雙工工作模式下的以太網使用CSMA/CD檢測機制來避免衝突嗎?
    在這一工作模式下的以太網是不需要使用CSMA/CD衝突檢測機制的。我們知道,全雙工工作模式下可以完成同時接收和發送數據。我們想想,網卡可能會在同一時刻發送兩個數據包嗎?這是不可能的。絕對不可能會出現在同一時刻網卡接收到兩個或兩個以上同時需要發送數據的請求,就連CPU也不可能同時做到在同一時刻處理兩個或兩個以上指令呀。這個時候,如果我們假設網卡啓用CSMA/CD機制來檢測衝突,請問他檢測哪一條衝突通道呢?我們可要知道,網卡在接收到需要發送的數據包後,就像排隊一樣一個一個往外發送,怎麼可能會衝突呢?
    這個時候有人可能要問了,那接收呢?它可能會和接收的衝突呀?其實這麼想就錯了。全雙工工作模式下,我們將使用雙絞線中的2對線進行工作。一對用於發送,一對用於接收。那麼既然發送和接收是分開的2條鏈路,就不存在衝突的問題了。就像在高速公路上,有一個車道是由東往西行駛車道,一個車道是由西往東行駛車道。那麼,你說兩車對開,各行駛於各自的車道,有可能會衝撞嗎?所以,全雙工工作模式下是不需要使用CSMA/CD衝突檢測機制的。
    二. 在半雙工工作模式下的以太網使用CSMA/CD檢測機制來避免衝突嗎?
    我想這個問題只要是網管或者是CCNA的工程師們都應該知道,在這一工作模式下的以太網是需要使用CSMA/CD衝突檢測機制的。我們知道,半雙工模式下雖然可以實現在同一鏈路上進行發送和接收,但不是在同一時間。這就必須使用CSMA/CD衝突檢測機制來避免衝突的發生。半雙工工作模式的典型接入設備就是集線器。至於爲什麼,請大家認真複習一下CCNA中的這一節內容。這裏就不做詳細的討論了。
    三. 我們都說交換機中有智能設備,如CPU和緩存。爲什麼工作在半雙工模式下的交換機,還會使用CSMA/CD呢?
    這個問題問得特別好。其實大家想一想就知道了。我們先明白一點:交換機確實有CPU和緩存來調節數據包的輸出和接收,是不會發生衝突的。交換機只關心它的背板速率,關心的是整個帶寬。所以,在交換機內的數據包是絕對不會發生衝突的情況。只會發生是否出現網絡擁塞。這是和衝突沒有任何關聯的。
    理解了這一點,我們再理解下一個問題:CSMA/CD偵聽包是有誰發出,什麼時候纔會發出呢?我們回憶一下CCNA的教程,其實,CSMA/CD偵聽包是由網卡發出的,並不是有交換機或者集線器發出的偵聽包。而且,網卡在發送數據前,纔會發送CSMA/CD偵聽包偵聽網絡是否暢通。
    理解了這兩點,我們就好解釋了。對於CSMA/CD衝突檢測機制而言,交換機和集線器的偵聽對象是不完全相同的。在集線器中,每一個端口都同在一個衝突域中,CSMA/CD檢測的整個同處一個衝突域每一個端口的每一種狀態。它既偵聽網絡中正在發送的數據包,也真聽網絡中正在接收的數據包。因爲,它只有1條通道。就像總線一樣,所有數據都在同一個通道內跑。CSMA/CD必須偵聽到沒人使用,它才發送數據包。而交換機則不太相同。雖然每一個端口都是一個獨立的衝突域,端口之間並不相互衝突。可如果實在半雙工工作模式下,一個端口中的接收和發送就產生衝突了。這個時候,CSMA/CD衝突檢測機制將偵聽在這個端口上是否有數據正在被接收而佔用。所以,交換機在半雙工工作模式下工作,網卡同樣會啓用CSMA/CD衝突檢測機制來避免衝突的發生。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章