標籤:網路 乙太網路 ipv4 mac
五 Wireless LANs(Wi-Fi)如今非常流行的一種接入互連網的方式就是Wi-Fi了,我們用的ipad、手機、膝上型電腦等等都可以用這種方式接入互連網,非常方便靈活。一個典型的Wi-Fi網路如所示,一些基本概念大致瞭解。
1. 802.11標準幀格式802.11標準規定了Wi-Fi幀格式,如所示,當然,並不是每一種類型的幀都具備所有的部分。
一開始的preamble是用來同步的,它依靠於使用的802.11版本,PLCP提供對應的物理層的一些資訊。我們姑且認為這兩個部分是與物理層相關的一些細節,不用太關心,主要來看MPDU,它類似於乙太網路幀格式,但是又添加了一些別的東西。MPDU的開始部分是幀控制字 (Frame Control Word),佔據兩個bit,用來表示框架類型。框架類型一共有三種,管理幀(management frames),控制幀(control frames)和資料幀(data frames)。(1)管理幀(management frames)管理幀用來建立、維持和結束裝置和存取點(AP)之間的串連,它也能決定是否使用加密,網路的名稱(SSID/ESSID),支援的傳輸速率以及共同的時基等。這些幀用來提供當一個wifi裝置尋找附近的存取點時所必須的資訊。(2)控制幀 (control frames)控制幀能進行流量控制,即當發送方發送資料速度太快時,接收方告知發送方使其速度慢下來。當接收方收到一幀資料時,可以通過控制幀給發送方發送確認訊號,告知它已經成功接收。這和TCP協議比較相似。控制幀還能提供一個可選的功能,request-to-send(RST)/clear-to-send(CTS)。工作過程大概是這樣的,在發送資料之前,發送方先發送RST表明自己希望發送資料,接收方接收到該RST之後,反饋一個CTS,即清除發送請求,表明自己願意接收資料,然後發送方開始發送資料,沒發送一幀,接收方發送一個確認訊號。無線傳輸之所以需要確認訊號,是因為傳輸的資料很容易丟失。如果發送方發送資料之後在一定的時間之內沒有收到確認訊號,則認為該資料丟失,重新發送該資料,並把Frame Control Word裡的Retry部分置位。這樣接收方知道發生了什麼,如果收到兩份同樣的資料,能夠做出相應的處理。(3)資料幀(data frames)
2.節能模式和Time Sync Function(TSF)節能模式讓裝置的無線接收電路在某些時候關閉,沒有進入節能模式時,接收電路一直運行,不停的消耗能量。當進入節能模式時,在Frame Control Word中對應位將置位,然後發送出去,與之串連的AP接收到這些置位的資料幀之後,會將原本應該發送到該裝置的幀資料先存到緩衝中,等到裝置需要時再發送給它。這裡有個同步的問題。wifi協議是使用TSF來進行時間同步的。
3. 802.11介質存取控制(Media Access Control)還記得之前討論乙太網路的時候介紹了一種CSMA/CD協議,那是一種介質存取控制(Mac)協議,用來解決多裝置同時傳輸資料時的衝突問題,同樣,在Wi-FI協議中,也需要類似的協議。802.11標準有三種方法去控制無線媒介的共用問題:PCF,DCF,和HCF。我們這裡主要介紹DCF(distributed coordinating function)。DCF是一種基於競爭的媒介存取控制協議,與CSMA/CD類似,裝置在發送資料之前檢測媒介是否空閑,如果空閑則發送資料,否則等待一段時間知道檢測到媒介是空閑為止,不同的地方在於,DCF為不同的裝置或者不同類型的幀設定了不同的優先順序。通常情況下,裝置在檢測到媒介空閑,準備發送資料之前,會等待一段時間(distributed inter-frame space or DIFS),讓更高優先順序的裝置接入通道。另外還有個不同的地方在於,DCF有兩種檢測衝突的方法,物理的方法(physical)和虛擬方法(virtual carrier sense)。(1)虛擬衝突檢測(virtual carrier sense)在802.11標準Mac協議中,虛擬衝突檢測機制實際上就是觀察mac幀資料中的Duration欄位。裝置會監聽哪怕不是發給自己的資料,甚至是在RTS和CTS中也攜帶Duration欄位,當然,資料幀中肯定也是有的,它表示該幀資料知道傳輸結束所需要佔據媒介的時間。也就是告訴別的裝置我這幀資料轉送完需要多長時間,傳輸完了你們就可以準備傳輸自己的資料了。這個值是根據幀的大小、傳輸速率以及物理媒介等資訊來估算的。每個裝置都會在本地產生一個NAV(Network Allocation Vector)用來儲存當前媒介中正在傳輸的資料需要多長時間才能傳輸完,以此決定自己嘗試傳輸資料的時間。如果檢測到的Duration值大於本地NAV值,顯然要用這個大的值對其進行更新,當然,隨著時間的推移,NAV值要慢慢減小,這表示當前傳輸資料裡目的地越來越近,但只要非0,則該資料仍然佔據傳輸媒介,當收到ACK確認訊號時,說明已經傳輸完成,這個時候將NAV置0.(2)物理衝突檢測(Physical Carrier Sense or CCA)這是通過物理的方法來檢測衝突,不同的傳輸媒介會提供各自的方法。需要注意的是,MAC層通過物理的方法和上面所說的虛擬檢測的方法結合來判斷衝突的。(3)DCF Collision Avoidance/Backoff Procedure在裝置檢測到媒介空閑時,會等待一段時間,然後開始發送資料。這裡,等待的這段時間,通常是一個隨機的整數值和一個叫做slot time的值相乘的結果。slot time是幾十微秒的數量級,隨機的整數值在一個固定的範圍之內。這和我們之前討論的CSMA/CD中,當檢測到衝突後,等待一段隨機的時間再嘗試發送有點類似。這個過程(產生隨機等待時間的過程),稱為backoff procedure.在無線環境下,因為接收裝置和發送裝置很難同步,所以通常用衝突避免(collision avoidance),而不是衝突檢測。並且,當接收到一幀資料,需要返回一個ACK確認訊號時,通常只會等待非常小的一段時間(普通裝置正常情況下等待DIFS時間,ACK等待時間小於DIFS),並且,不管此時媒介是忙碌或是空閑,只要成功接收到一幀資料,都是等待這樣非常小的一段時間就立即發送,我們說,ACK幀具有更高的優先順序。同樣,RTS和CTS也有相似的性質。
4.物理層細節5.Wi-Fi安全
六 點對點通訊協定 (PPP)(PPP)1.LCP協議(Link Control Protocol)
PPP幀的Protocol欄位被置為固定值0xC021,以此來表示這是LCP幀資料。Ident欄位是一個序號碼,它由發送方提供。發送方每發送一幀資料,都會提供一個特定的Ident值,並且隨著更多的資料發送,Ident值對應增加。在接收方沒收到一幀資料時,需要對其作出應答,這時接收方會將收到的資料裡的Ident值複製到應答資料裡,反饋給寄件者。這樣寄件者就知道哪些資料被正確接收,而哪些資料沒有。Code欄位表示操作類型,標識該幀是請求幀還是應答幀等等。Lenghth欄位表示LCP packet的長度,單位是位元組。需要注意的是,該欄位是有LCP packet提供的,普通的PPP協議並不提供該欄位。
通過,我們可以對LCP協議有個更加直觀的瞭解。LCP協議通過兩個對等端的交流協商,負責兩者之間鏈路的建立、維護和終止。典型的交換內容如所示,包括自身的配置,身分識別驗證,已經終止串連等。
在LCP協議建立串連的過程中,發送方和接收方協商的內容之一是某些選項是否設定。Asynchronous Control Character Map(ACCM)就是其中之一,它用來設定某些控制字元(比如0x00-0x1F範圍內的ASCII字元)需不需要轉義。轉義的意思就是將原本的字元內容變為逸出字元(0x7D)加上原字元與(0x20)作異或的結果。比如0x13的逸出字元是0x7D33.這樣做是因為某些控制字元可能會對硬體造成某些特殊的影響,轉義之後,這種影響將消失。預設情況下,所有的ASCII控制字元(值小於0x20)都要進行轉義。
由於PPP沒有長度欄位(Length),因此理論上沒有什麼辦法來限制PPP幀資料的長度。在實際應用中,最大幀長度通常是通過指定MRU來限制的,這有點類似於MTU,最大路徑傳輸單元。當比較大的幀資料和比較小的幀資料同時在鏈路中傳輸時,大資料將佔據大部分頻寬,這導致小的資料轉送速度變慢。在某些應用中,比如遠程登入或者VoIP,需要傳輸的都是小的資料,在這樣的環境下可能就會變得不太正常。通過減小MRU可以改善這種現象,當然,這樣會導致資料轉送效率降低,因為每幀資料都有幀頭部分。
PPP還支援一種叫做Link Quality Reports(LQRs)的機制。在協商過程中,通過配置資訊,PPP可以將該功能開啟,這樣發送端和接收端可以在規定的時間內周期性的交換LQR資訊。LQRs表示傳輸品質的相關參數,包括:magic number,發送和接收的幀數量和大小,接收到的錯誤幀數量,丟棄幀的數量以及交換的LQR資料總數量。LQRs資訊的交換是周期性的,這個周期是可以手動設定的。當LQRs的值沒有達到某個要求時,我們還可以設定終止串連
一些PPP實現還支援回調(callback)能力,典型的非同步回調過程如:
2.多鏈路點對點通訊協定 (PPP)(Multilink PPP or MP)用來將多個點對點鏈路串連成為一個,就好像我們之前介紹過的將多個連接埠彙總成為一個連接埠一樣。一個彙總的鏈路,我們稱之為一個捆綁(bundle),操作起來就像一個完整的虛擬連結一樣,它擁有自己的配置資訊。當然,實際上這個捆綁是由許多成員鏈路組成的,每個成員可能都擁有自己的一些設定選項。實現MP最直觀的方法就是輪流從成員鏈路中發送資料,但是這樣會給其他協議帶來不好的影響。所以通常在每個MP幀中放置一個2到4位元組的序列頭欄位,然後遠端MP接收者負責按照順序重新組裝資料。
我們可以從看到,有一個開始(B)和結束(E)欄位,以及序列數字欄位(sequence number),如果一幀資料沒有分區(fragment),那麼B和E位都置為1,否則,在第一個分區資料內,B置為1,E置為0,最後一個分區資料內,B置為0,E置為1.在中間的分區中,B和E都置為0,並且按照序號碼進行排序。因為MP捆綁跨越躲過成員鏈路,因此需要有種方法來確認哪些鏈路屬於同一個捆綁。PPP通過設定endpoint discriminator選項來確定,該值可以是IP地址或者mac地址。另外,BAP協議可以動態從一個捆綁中添加或者刪除某個鏈路,BACP能擷取BAP過程所必須的資訊。這樣使得一個捆綁根據實際情況(比如網路是否擁塞)動態添加或者刪除鏈路,使得虛擬連結更加靈活。
3. 壓縮控制協議(Compression Control Protocol) CCP壓縮控制協議負責在PPP鏈路上的兩端配置並協商使用哪種壓縮演算法。並且用可靠的方式來標誌壓縮和解壓縮機制的失敗。4. PPP身分識別驗證PPP定義了一個課擴充的LCP版本,支援協商身分識別驗證協議,這樣路由器在允許網路層協議通過鏈路傳輸資料前需要驗證對方的身份。5. 網路控制協議(Network Control Protocols)NCPs用來建立和配置不同網路層的協議。6. 頭壓縮(Header Compression)
六 環回介面大多數的產品都支援環回介面,以允許運行在同一台主機上的客戶程式和伺服器程式通過TCP/IP進行通訊。A類網路號127就是為環回介面預留的。通常,大多數系統吧IP地址127.0.0.1分配給這個介面,並命名為localhost。一個傳給環回介面的IP資料報不能再任何網路上出現。可能在我們的想象中,一旦傳輸層檢測到目的端地址是迴路位址時,應該可以省略部分傳輸層和所有網路層的邏輯操作。但是大多數的產品還是照樣完成傳輸層和網路層的所有過程,只是當IP資料報離開網路層時把它返回給自己。看上去用傳輸層和IP層的方法來處理環回資料似乎效率不高,但它簡化了設計,因為環回介面可以被看做是網路層下面的另一個鏈路層。網路層把一份資料報傳送給環回介面,就像傳給其他鏈路層一樣,只不過環回介面把它返回到IP的輸入隊列中。
七 傳輸單元最大值MTU資料連結層對資料幀的長度都有一個限制。比如乙太網路的資料幀最大不超過1500位元組,這個數值就叫做MTU,傳輸單元最大值,不同類型的網路都有一個MTU。如果IP層有一個資料要傳,而且資料的長度比鏈路層的MTU大,那麼IP層就需要進行分區,把資料報分成若干片,這樣每一片都小於MTU。在PPP中的MTU並非指的是網路媒體的物理特性,相反,它是一個邏輯限制,目的是為互動使用提供足夠快的相應時間。當在同一個網路上的兩台主機互相通訊時,該網路的MTU是非常重要的。但是如果兩台主機之間的通訊要通過多個網路,那麼每個網路的鏈路層就可能有不同的MTU,這時起決定作用的是兩台通訊主機路徑中最小的MTU,稱之為路徑MTU。需要注意的是,兩台主機之間的路徑MTU不一定是個常數。它取決於當時所選擇的路由,而選路不一定是對稱的,因此路徑MTU在兩個方向上不一定是一致的。後面提到IP層和傳輸層時,還會介紹MTU發現機制。
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。
TCP/IP詳解學習筆記——資料連結層(2)