[轉載]Ethernet,Half-Duplex/Full-Duplex,CSMA

CSMA/CD(Carrier Sense Multiple Access/Collision Detect)

全雙工以太網是在同一個時刻能夠同時收發的以太網。
全雙工模式:傳輸數據是雙向同步進行的,即同時接收和發送數據。
半雙工模式:同一時刻只能單向傳輸數據,即要麼是接收數據,要麼是發送數據。
自適應模式:即自動協商雙工模式。在狀態顯示時,顯示的是協商後的實際工做模式。

      咱們知道:以太網訪問控制用的是CSMA/CD,即載波偵聽多點接入/ 衝突檢測,是以廣播的方式將數據發送到全部端口;咱們還知道:交換機能主動學習端口所接設備的MAC地址,在獲知該端口的MAC 地址後,就會把傳送給目標設備的直接發送到該端口而不是廣播出去。
      那麼,以太網交換機是如何工做的呢?交換機和以太網的工做機理豈不是要相沖突嗎
      回答:之因此有CSMA/CD的存在,是由於在早期的共享式以太網中,雙向的傳輸是在同一線路上進行的,而以太網是一種共享介質的廣播技術,因此同一時間 只能有一面的信號在線路上,即要麼A往B發,要麼B往A發,若是AB同時發送數據或者線路上已有信號,那麼信號就會發生碰撞,繼而影響數據有效傳輸,爲了 解決此一問題,纔有了CSMA/CD的技術。
      隨着技術的發展,CSMA/CD在最初的以太網中具備的歷史和實踐的重要性在慢慢減弱,如今交換式以太網取代了共享式以太網,甚至於共享式以太網消失。這主要是由於介質和交換技術的發展而形成的.
      介質方面:使用4對線的UTP,傳輸和接收各自使用一對,能夠全雙工方式工做,這樣,一邊只管發,一邊只管收,所以就可以避免碰撞了,光纖方面也可如此。
      交換技術方面:當兩個工做站須要通訊時,交換技術在兩個站之間創建了一個點到點的虛鏈路,也叫作微分段,所以一樣也避免了碰撞了,這就是交換機使用的技術.
因此,從上面能夠看出,以太網訪問控制機制和交換機工做原理並無相沖突的地方,只是隨着技術的發展,一些沒必要要的機制就慢慢不要了。
------------------------------------------------------------------------
全雙工,半雙工與CSMA/CD的關係:
      以太網中到底什麼時候使用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衝突檢測機制來避免衝突的發生。
------------------------------------------------------------------------
自協商~~
case:
鏈接好的A、B兩個端口。當A端口打開自協商,B端口關閉自協商且配置爲100M全雙工時,在A口獲得的協商結果是100M半雙工。而咱們通常但願A口也協商成B端口的最大能力,即100M全雙工。

自協商是經過一種叫作快速鏈接脈衝(Fast Link Pulse)的信號實現的,簡稱FLP。自協商的雙方經過FLP來交換數據。

在具有自協商能力的端口沒有Link的狀況下,端口一直髮送FLP,在FLP中包含着本身的鏈接能力信息,包括支持的速率能力、雙工能力、流控能力等。這 個鏈接能力是從自協商能力寄存器中獲得的(Auto-Negotiation Advertisement Register ,PHY標準寄存器地址4 )。FLP中的編碼方式如圖。依靠脈衝位置編碼攜帶數據。一個FLP突發包含33個脈衝位置。17個奇數位置脈衝爲時鐘脈衝,時鐘脈衝老是存在的;16個 偶數位置脈衝用來表示數據:此位置有脈衝表示1,此位置沒有脈衝表示0。這樣1個FPL的突發就能夠傳輸16bit的數據。自協商交互數據就這樣經過物理 線路被傳輸。

若是兩端都支持自協商,則都會接收到對方的FLP,而且把FLP中的信息解碼出來。獲得對方的鏈接能力。而且把對端的自協商能力值記錄在自協商對端能力寄 存器中(Auto-Negotiation Link Partner Ability Register , PHY標準寄存器地址5 )。同時把狀態寄存器(PHY標準寄存器地址1)的自協商完成bit(bit5)置成1。在自協商未完成的狀況下,這個bit一直爲0。
而後各自根據本身和對方的最大鏈接能力,選擇最好的鏈接方式Link。好比,若是雙方都即支持10M也支持100M,則速率按照100M鏈接;雙方都即支持全雙工也支持半雙工,則按照全雙工鏈接。

一旦鏈接創建後,FLP就中止發送。直到鏈路中斷,或者獲得自協商Restart命令時,纔會再次發送FLP。

並行檢測:
爲了保證在對端不能支持自協商的狀況下也能鏈接,引入了被稱爲並行檢測(Parallel Detection)的機制。在一端打開自協商,另外一端關閉自協商的狀況下,鏈接的創建就依靠並行檢測功能實現。
並行檢測機制是這樣的:在具備自協商能力的設備端口上,若是接收不到FLP,則檢測是否有10M鏈路的特徵信號或100M鏈路的特徵信號。
若是設備是10M設備,不支持自協商,則在鏈路上發送普通鏈接脈衝(Normal Link Pulse)簡稱NLP。NLP僅僅表示設備在位,不包含其它的額外信息。
若是是100M設備,不支持自協商,則在沒有數據的狀況下,在鏈路上一直髮送4B/5B編碼的Idle符號。
並行檢測機制若是檢測到NLP,則知道對方支持10M速率;若是檢測到4B/5B編碼的Idle符號,則知道對方支持100M速率。可是對方是否支持全雙工、是否支持流控幀這些信息是沒法獲得的。所以在這種狀況下,認爲對方只支持半雙工,不支持全雙工,且不支持流控幀。

基於以上原理,在對端不打開自協商時,打開自協商的一方只能協商成半雙工模式。
802.3協議規定,經過並行檢測創建鏈接後,PHY的狀態寄存器(PHY標準寄存器地址1)的自協商完成bit(bit5)依然要置位成1,儘管鏈路上 並不是使用了真正的自協商操做。同時規定在自協商完成bit爲1的狀況下,本地自協商能力寄存器(PHY標準寄存器地址4)和對端自協商能力寄存器(PHY 標準寄存器地址5)是有意義的。因此,要把寄存器5中的數據更新。若是創建的鏈接爲10M,則寄存器5的10M能力bit(bit5)置1,其它bit置 0,表示對端只能支持10M半雙工;若是創建的鏈接爲100M,則寄存器5的100M能力bit(bit7)置1,其它bit置0,表示對端只能支持 100M半雙工。

=============================

端口自協商

端口自協商基本原理

端口自動協商模式是端口根據另外一端設備的鏈接速度和雙工模式,自動把它的速度調節到最高的公共水平,即線路兩端能具備的最快速度和雙工模式。html

自協商功能容許一個網絡設備可以將本身所支持的工做模式信息傳達給網絡上的對端,並接受對方可能傳遞過來的相應信息,從而解決雙工和10M/100M速率自協商問題。自協商功能徹底由物理層芯片設計實現,所以並不使用專用數據包或帶來任何高層協議開銷。   
自協商功能的基本機制是:每一個網絡設備在上電、管理命令發出、或是用戶干預時發出FLP(快速 鏈接脈衝),協商信息封裝在這些FLP序列中。FLT中包含有時鐘/數字序列,將這些數據從中提取出來就能夠獲得對端設備支持的工做模式,以及一些用於協 商握手機制的其餘信息。當一個設備不能對FLP做出有效反應,而僅返回一個NLP(普通鏈接脈衝)時,它被做爲一個10BASE-T兼容設備。 快速鏈路脈衝FLP和普通鏈路脈衝NLP都僅使用於非屏蔽雙絞線上,而不能應用在光纖媒體。   
自動協商的內容主要包括雙工模式、運行速率、流控等內容,一旦協商經過,鏈路兩端的設備就鎖定在這樣一種運行模式下。1000M以太網也支持自協商,在此從略。
 
電口和光口自協商主要區別是在OSI 中它們所處的位置不一樣。對於電口來講,協商發生在鏈路信號傳輸以前;對於光口來講, 自協商機制與PCS在同一層, 這意味着光口的協商必須先創建鏈路同步之後才能夠進行協商。
  
以太網端口電口工做模式簡單介紹    1.以太網口的兩端工做模式(10M半雙工、10M全雙工、100M半雙工、100M全雙工、自協商)必須設置一致。    2.若是一端是固定模式(不管是10M、100M),另一端是自協商模式,即使可以協商成功,自協商的那一端也將只能工做在半雙工模式。    3.若是一端工做在全雙工模式,另一端工做在半雙工模式(包括自協商出來的半雙工,也同樣處理),Ping是沒有問題的,流量小的時候也沒有任何問題,流量達到約15%以上時,就會出現衝突、錯包,最終影響了工做性能!    4.對於兩端工做模式都是自協商,最後協商成的結果是「兩端都支持的工做模式中優先級最高的那一類」。    5. 若是A端自協商,B端設置爲100M全雙工,A協商爲100M半雙工後,再強制將B改成10M全雙工,A端也會立刻向下協商到10M半雙工;若是A端自協 商,B端設置爲10M全雙工,A協商爲10M半雙工後,再強制將B改成100M全雙工,會出現協商不成功,鏈接不上!這個時候,若是插拔一下網線,又會重 新協商在100M半雙工。
相關文章
相關標籤/搜索