第三章 資料鏈路層(三)

一杯涼茶發表於2016-11-18

    序言

        一上午搞那個路由器,在圖書館的區域網連路由器開wifi,忙活了一上午,有個疑問,那個插口直接連網線到電腦上就可以用,但是連到路由器上時路由器就不能夠自己獲取ip地址了,難道是因為線太長了嗎?連到別的插口就可以了,等晚上人少的時候在試試,其中原理不是很清楚,希望學習完這本書能夠理解一點,路由器設定就是傻瓜式的設定。趕緊寫一下今天的這篇文章,結束掉資料鏈路層這一章節吧。

                                                                            ---WH

 

 

一、區域網

    區域網和乙太網的區別和聯絡?

      是乙太網就一定是區域網,但是區域網不一定就是乙太網。 因為乙太網就是一個規範,而大多數區域網都使用這個規範,所以才有這個話。

 

    什麼是區域網呢?

      在第一章節的總括就已經介紹過,例如,學校裡面、各個大的公司裡,自己元件的一個小型網路,這種就屬於區域網,

 

    區域網的常用拓撲結構?

                

    前面我們說過,區域網是用廣播通道的方式去傳送資料,那麼就會遇到問題,如果在區域網內有兩個pc機同時在其中傳播資料呢?就會發生碰撞,使兩個資料都失效,那麼如何解決這個問題呢,使用CSMA/CD協議來解決這類問題。

 

 

CSMA/CD:半雙工通訊,

        1、多址接入:一種多址接入協議,許多站點以多址接入的方式連結在一根匯流排上,其實就是區域網中匯流排網這種形式。

        2、載波監聽:傳送前監聽,就是在傳送資料前監聽匯流排中是否有資料在傳播,如果有就不傳送。

           就是用電子技術檢測匯流排上有沒有其他計算機傳送的資料訊號。

        3、碰撞檢測:邊傳送邊監聽,在傳送資料的中途也會監聽匯流排中是否會有其它資料,

           當幾個站同時在匯流排上傳送資料時,匯流排上的訊號電壓擺動值將會增大(互相疊加)。

           當一個站檢測到的訊號電壓擺動值超過一定的門限值時,就認為匯流排上至少有兩個站同時在傳送資料,表明產生了碰撞。

             所謂“碰撞”就是發生了衝突。因此“碰撞檢測”也稱為“衝突檢測”

         檢測到碰撞後,

            在發生碰撞時,匯流排上傳輸的訊號產生了嚴重的失真,無法從中恢復出有用的資訊來。

            每一個正在傳送資料的站,一旦發現匯流排上出現了碰撞,就要立即停止傳送,免得繼續浪費網路資源,然後等待一段隨機時間後再次傳送。

    通過例子也說明一下CSMA/CD協議會做哪些事情,借用下面這個圖來說明問題

            

          1、B向D傳送資料,在傳送資料前,由於採用的CSMA/CD協議,那麼先會進行載波監聽,看匯流排中是否有其他的資料傳輸(如果檢測,通過物理層的一些電磁波等)

          2、如果沒有,那麼B就可以開始傳送資料,由於B到D之間存在一定距離,那麼在匯流排中傳輸資料也要時間,雖然很快,可能只需要十幾微秒,在傳送的的途中,遇到C向A傳送資料,由於B到D的資料還沒傳過來,那麼C也就沒監聽到匯流排中有資料,所以也開始發,那麼在途中兩個資料就會相遇,這就形成了碰撞,在碰撞以後,兩個電磁波疊加,在匯流排中傳輸,那麼會到C或者B時,就會知道電磁波的不同,從而發生了碰撞。這就是碰撞檢測。

 

    上面只是大概描述了一下這個過程,其中的細節還不知道。接下來就來了解一下這其中的細節

   一些可能會出現疑惑的名詞或資料的解釋

   1、傳播時延 t(這個字母打不粗來,就用t表示吧)

                

  2、爭用期:發生碰撞所需要的最遲時間。在根據上面的大體分析,我們知道A到B之間的任意時刻都可能會發生碰撞,那麼A確認發生碰撞要多久呢,那就是2t 了,傳播時延是t,可能正好到B那裡就發生了碰撞,然後返回到A,又需要t的時間,那就是2t了,我們把這個2t時間就叫做爭用期,

  3、在10Mb/s(傳播速率)的乙太網,爭用期為51.2μs(微秒),那麼在爭用期內可傳送64位元組,及512bit的資料。怎麼算來的呢?下面來講解一下

      10Mb/s  = 10 000 Kb/s = 10 000 000 b/s (這裡的換算是1000,指的是計算機網路中傳輸的多少位多少位,也就是0101這樣的位數)

      51.2μs = 0.0512 ms = 0.000 0512 s  (1s = 1000ms = 1000 000 μs)

      51.2μs能傳多少bit呢? 上面兩個相乘就為 512bit 了,換算為位元組,位元組的換算是 1byte(位元組) = 8bit(位) 所以 512/8=64byte(位元組) 就這樣算過來的。

 

  4、最短有效幀:64位元組,就是上面這樣算的,傳送了64個位元組之後,肯定就不會發生碰撞,乙太網規定了最短有效幀長為 64 位元組,凡長度小於 64 位元組的幀都是由於衝突而異常中止的無效幀。

 

二進位制指數型別退避演算法

    這個演算法就是在發生碰撞後,pc機該如何處理,在什麼時間後再次傳送資料。
    有4步,其實很簡單,

  1、確定基本退避時間,一般就是爭用期2t

  2、定義引數k  K = Min[重傳次數,10]

  3、從整數集合中[0,1,...,(2的k次方 -1)]隨機取一個數,記為r,重傳所需要等待的時延就是r倍的基本退避時間(2rt)

  4、當重傳16次還不能成功則丟棄該幀,並向高層彙報

 

  解釋:其實這四步很簡單,我來分析一下就會了,首先第一次傳資料,重傳次數為0,那麼k=0,從整數集合中只有0這個值,那麼r=0,等待的時延就是2rt=0,所以第一次傳資料需要等待的時延就是0,不需要等待,除非先檢測到了有資料已經在傳了,如果第一傳資料發現碰撞,那麼重傳次數為1,那麼k=1,,整數集合中就有0,1兩個值,隨機取值,取到r=1,那麼等待的時延就是2t,意思就是在第一次發生碰撞後,需要等待2t的時間,才能在重新傳送資料,也可能不需要等就直接發,r=0時。

 

乙太網的通道利用率問題

     分析下面該圖

          

      什麼意思呢?一個幀從開始傳送,經可能發生的碰撞後,將再重傳數次,到傳送成功(傳送成功這段時間T0是指資料的傳送時延,幀長為 L (bit),資料傳送速率為 C (b/s),因而幀的傳送時間為 L/C = T0 (s)),幀發出去以後,還要經過端到端的傳播時延t,所有在真正佔用通道的時間是 TO+t ,前面發生的碰撞損耗的時間,資料並沒有佔用通道,我們指真正佔用通道的時間是指資料傳送成功即不發生碰撞然後到達目的地的這段時間,而前面發生碰撞的時間,都市在浪費通道,每傳送一幀需要的平均時間就是在通道中發生碰撞浪費的時間+上資料傳輸成功所用的佔用期。不要理解錯了。

    

   公式和引數a的理解:   首先理解一下通道利用率,借用上面的圖,就是佔用期在其圖中的比例變大,則通道利用率就高。但是不確定前面發生了多少次碰撞,只是一個平均的估算值,所以就定義了這個a的公式,用t/T0來代表通道利用率

          1、a→0 表示一發生碰撞就立即可以檢測出來,並立即停止傳送,因而通道利用率很高。

              a→0也就是t越小,而T0越大,傳送時延儘可能大一點,而t傳播時延儘可能小一點,現實意義就是資料在在通道中傳播的時間如果很小很小,那麼資料一傳送,就能在很少的時間裡面檢測出碰撞來了,那麼在前面那張圖中,花費在爭用期(發生碰撞)的時間就少了,就能快點成功傳送資料佔的時間就長了了,那通道的利用率不就很高嗎,

          2、a 越大,表明爭用期所佔的比例增大,每發生一次碰撞就浪費許多通道資源,使得通道利用率明顯降低

              也就是T0越小,而r很大,那發生一次碰撞就浪費了很多通道資源,因為在通道中傳輸無用的波佔的時間太長了。而成功傳送的佔用期自然就變小了,所以通道利用率就越低了。

      根據上面的分析通道利用率,就發現,影響通道利用率的就跟T0和t有關,也就是跟乙太網的連線長度有關,所以才有在乙太網中,有最遠距離的限制,就是不能讓t太大,以至於a很大,通道利用率太低,還有傳送的幀長也有最小幀長的限制,因為怕傳送的資料幀太短,而傳送速率就一定,那麼傳送時延T0就太小了,會讓a的值越大,通道利用率就太低了。

 

  最大通道利用率

          

      理想的情況下就是不發生碰撞,一傳送完資料,另一個資料就又傳送,也就是一有空閒時間,就傳送資料。這個時候,通道中一直有資料在傳輸,一刻也不停歇,那此時的通道利用率就是100了?錯誤,這個想法是錯的,舉個例子就知道了。每幀用的時間就是下面圖中這塊,這塊也就可以看成一段資料幀平均花費的時間,這裡面所影響的因素就是傳送時延T0和t傳播時延了,一段資料幀平均花費的時間為1s,這是已經固定了,但是其中的兩個部分並沒有確定,如果T0佔的比例大,說明傳送時延大,傳送速率已經確定了,那麼就肯定是傳送的資料變多了,在通道中傳輸的bit更過,通道利用率不就更到了嗎,通俗一點講,就是給了你1s的時間,你儘可能的多發些bit過去,那麼你的傳播時延就大了,那不就通道利用率的很高了嗎,理想狀態下考慮的因素跟那個現實考慮的因素不一樣。

      

                        

 

到這裡,就已經結束了對CSMA/CD協議的討論,大概就是這些內容了,剛才討論的前提是已經知道誰傳送給誰了,然後說的資料在傳播過程中遇到的問題。接下來說一下在他們是怎麼從一臺pc機找到另一臺PC機的。

    用的就是MAC地址,在乙太網中是如果封裝資料幀來達到能夠準確傳輸資料到目的地的呢?

      MAC地址:每個pc機上都有一個固定的mac地址,並且每臺計算機的mac地址都不一樣,獨一無二,一般是在網路卡(介面卡)上,生產廠家在生產出來的時候就已經為每塊網路卡配置了一個mac地址

      MAC地址的格式:

            48bit,6個位元組,前3個位元組是由管理機構給各個廠家分配的。也就是說如果有廠家想生產網路卡這類需要mac地址的東西,必須先像管理機構申請前三位位元組,所以網路卡上的前三個位元組就代表著某個廠家,後三個位元組就是由廠家自己來設定的。

      每個網路卡都擁有識別資料幀中mac地址的功能

      資料幀格式:

                

 

      先不管前8個插入位元組的意思,在乙太網中,傳送的資料幀最小要是64個位元組,那這64個位元組由哪些組成的呢,就是圖中所示,6個目的MAC地址,6個源MAC地址,2個位元組代表資料包的型別,還有4個位元組是FCS,用來進行CRC演算法檢測的,剩下的46個位元組就是資料包最少要傳送的位元組數了,如果資料包實際發的少於46,那麼會給這個資料包自動補充0,來達到需要的位元組數。

      然後說說插入的8個位元組是什麼意思?前7個位元組用來使傳送的資料幀的的位元同步,也叫作前同步碼,最後一個位元組,幀的開始定界符,也就是告訴接收方,從這個位元組開始,後面是是MAC幀了。 有人這個時候會問,既然有了幀開始定界符,為什麼還要同步碼?原因是,在接受MAC幀後,並不能馬上識別出幀開始定界符,沒有那麼快的反應分辨出來,所以需要在前面加同步碼,使接收方有反應的時間,所以同步碼都是1010101010101這樣的bit。前7個位元組的同步碼跟最後一個位元組中的前6個bit位相同。上面圖中這裡畫的有點錯誤,圈錯了,正確的是下面這樣

                  

 

 

二、擴充套件乙太網

 

  集線器和網橋(多個介面的交換機)

    什麼是集線器呢?

      就是隻能夠轉發資料,來了就往接了集線器的PC機上發資料,其他什麼差錯校驗呀,什麼東西全都不做,

        集線器的用法首先是下面這樣

      

      然後想辦法,改進成這樣了

      

    改完是有好處也有壞處

      用集線器擴充套件區域網優點

         使原來屬於不同碰撞域的區域網上的計算機能夠進行跨碰撞域的通訊。

         擴大了區域網覆蓋的地理範圍。
      用集線器擴充套件區域網缺點
         碰撞域增大了,但總的吞吐量並未提高。
         如果不同的碰撞域使用不同的資料率,那麼就不能用集線器將它們互連起來。
        

由於集線器總有這樣的缺點,所以網橋這個裝置就出來了

 

  網橋

    有兩個優點,能識別mac地址,遇到陌生的mac地址,會在內部mac表中記錄下該mac地址,下次再使用,就認識了

      1、根據 MAC 幀的目的地址對收到的幀進行轉發

      2、過濾幀的功能。當網橋收到一個幀時,並不是向所有的介面轉發此幀,而是先檢查此幀的目的 MAC 地址,然後再確定將該幀轉發到哪一個介面

    網橋原理圖

          

 

    透明網橋

        1、區域網上的站點並不知道所傳送的幀將經過哪幾個網橋,因為網橋對各站來說是看不見的  

        2、是一種即插即用裝置,其標準是 IEEE 802.1D

    網橋的好與壞

        好處:

           過濾通訊量。

           擴大了物理範圍。
           提高了可靠性。
           可互連不同物理層、不同 MAC 子層和不同速率(如10 Mb/s 和 100 Mb/s 乙太網)的區域網。

 

        壞處:

           儲存轉發增加了時延。

           在MAC 子層並沒有流量控制功能。
           具有不同 MAC 子層的網段橋接在一起時時延更大。
           網橋只適合於使用者數不太多(不超過幾百個)和通訊量不太大的區域網,否則有時還會因傳播過多的廣播資訊而產生網路擁塞。這就是所謂的廣播風暴。

 

三、高速乙太網

      從最早的使用集線器連線的乙太網(CSMA/CD,半雙工,10Mb/s)到使用網橋階段的擴充套件乙太網(CSMA/CD,半雙工,10Mb/s或100Mb/s)到現在的高速乙太網(半雙工/全雙工通訊)。

    高速乙太網:速率達到或超過100Mb/s的乙太網

      這個也沒什麼好講的,就是在之前的基礎上加強了很多東西,

        1、速率提高了很多

        2、從半雙工通訊到能使用全雙工通訊了(這個並不是說就拋棄了半雙工,在星形拓撲結構中的區域網,也就使用CSMA/CD協議的半雙工通訊的方式,全雙工就不使用該協議了)

        3、傳輸距離可以增長,因為有了光纖(傳輸過程的穩定性),速率增強很大,不止侷限於區域網,擴充套件到了有都會網路,廣域網,

    10Gb/s乙太網

           1、與 10 Mb/s,100 Mb/s 和 1 Gb/s 乙太網的幀格式完全相同。

           2、保留了 802.3 標準規定的乙太網最小和最大幀長,便於升級。也就是最小64位元組,最大是多少不知道。

           3、不再使用銅線而只使用光纖作為傳輸媒體。

           4、只工作在全雙工方式,因此沒有爭用問題,也不使用 CSMA/CD 協議。    

       好處

          成熟的技術

          互操作性很好
          在廣域網中使用乙太網時價格便宜。

          統一的幀格式簡化了操作和管理   

  

 

結束語

      寫這篇文章話費了我3-4個小時,真是累翻了,希望對看到這篇文章的同學能一丟丟幫助,順手點個推薦吧,哈哈,到此,第三章資料鏈路層已經學完了,接下來就是到網路層了,傳說中的tcp/ip協議就在這一層,馬上就能揭開你神祕的面紗了。加油!!!!!

相關文章