1. 程式人生 > >TCP/IP詳解學習筆記——資料鏈路層(2)

TCP/IP詳解學習筆記——資料鏈路層(2)

五 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) 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.多鏈路點對點協議(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

五 Wireless LANs(Wi-Fi) 如今非常流行的一種接入網際網路的方式就是Wi-Fi了,我們用的ipad、手機、膝上型電腦等等都可以用這種方式接入網際網路,非常方便靈活。一個典型的Wi-Fi網路如下圖所示,一些基本概念大致瞭解。 1. 802.11標準幀格式

TCP/IP學習筆記(2)-資料鏈

資料鏈路層有三個目的: 為IP模組傳送和 接收IP資料報。 為ARP模組傳送ARP請求和接收ARP應答。 為RARP傳送RARP請 求和接收RARP應答 ip大家都聽說過。至於ARP和RARP,ARP叫做地址解析協議,是用IP地址換MAC地址的一種協議,而

TCP/IP學習筆記(5)-IP,動態選,和一些細節

1.靜態IP選路 1.1.一個簡單的路由表 選路是IP層最重要的一個功能之一。前面的部分已經簡單的講過路由器是通過何種規則來根據IP資料包的IP地址來選擇路由。這裡就不重複了。首先來看看一個簡單的系統路由表。 Destination     Gateway        

TCP/IP學習筆記3IP協議ARP協議和RARP協議

out 處理機 傳輸 包含 發送 res 這也 進行 默認 把這三個協議放到一起學習是因為這三個協議處於同一層,ARP協議用來找到目標主機的Ethernet網卡Mac地址,IP則承載要發送的消息。數據鏈路層可以從ARP得到數據的傳送信息,而從IP得到要傳輸的數據信息。   

TCP/IP學習筆記(8)-DNS域名系統

dns 支持 設置 類型 hosts name 安裝 報文 定義 前面已經提到了訪問一臺機器要靠IP地址和MAC地址,其中,MAC地址可以通過ARP協議得到,所以這對用戶是透明的,但是IP地址就不行,無論如何用戶都需要用一個指定的IP來訪問一臺計算機,而IP地址又非常不好記

TCP/IP學習筆記(1)-基本概念【轉】

網絡號 最大的 net 容易 學習 ip地址 其他 title 編寫 轉自:http://blog.csdn.net/goodboy1881/article/details/665041 為什麽會有TCP/IP協議 在世界上各地,各種各樣的電腦運行著各自不同的操作系統為大家

基礎才是王道——TCP/IP學習筆記 這位仁兄寫得太好了

TCP/IP詳解學習筆記   這位仁兄寫得太好了. http://blog.csdn.net/goodboy1881/category/204448.aspx TCP/IP詳解學習筆記(13)-TCP堅持定時器,TCP保活定時器 TCP/IP詳解學習筆記(12)-TCP的超時

TCP/IP學習筆記13-- TCP連線的建立與終止

1.TCP連線的建立            設主機B執行一個伺服器程序,它先發出一個被動開啟命令,告訴它的TCP要準備接收客戶程序的連續請求,然後服務程序就處於聽的狀態。不斷檢測是否有客戶程序發起連續請求,如有,作出響應。設客戶程序執行在主機A中,他先向自己的TCP發出主動開啟的命令,表明要向某個IP地址

TCP/IP學習筆記——IP協議

一 概述 IP協議是TCP/IP協議簇中最核心的協議,所有的TCP、UDP、ICMP以及IGMP資料都以IP資料報格式傳輸。IP協議提供不可靠、無連線的資料傳輸服務。不可靠的意思是它不能保證IP資料報能成功到達目的地。IP僅僅提供最好的傳輸服務。意思就是,我盡我所能傳輸資料

TCP/IP學習筆記——地址解析協議ARP

一 概述 我們知道,IP協議是用來在不同的物理網路之間傳輸資料的。要在不同的網路之間傳輸資料,至少需要將IP協議所用的地址轉換成特定網路所使用的實體地址。一般來說,就是將IPv4地址轉換為mac地址。要想與一個特定的裝置進行資料交換,光知道它的IP地址是不夠的,還需要知道它

TCP/IP學習筆記5-- ICMP:internet 控制報文協議

1.概述      ICMP是(Internet Control Message Protocol)Internet控制報文協議。它是TCP/IP協議族的一個子協議,用於在IP主機、路由器之間傳遞控制訊息。控制訊息是指網路通不通、主機是否可達、路由是否可用等網路本身的訊息。這些控制訊息雖然並不傳輸使用者資料

TCP/IP學習筆記(10)-TCP連線的建立與中止

TCP是一個面向連線的協議,所以在連線雙方傳送資料之前,都需要首先建立一條連線。這和前面講到的協議完全不同。前面講的所有協議都只是傳送資料而已,大多數都不關心傳送的資料是不是送到,UDP尤其明顯,從程式設計的角度來說,UDP程式設計也要簡單的多----UDP都不用考慮資料分片

TCP/IP學習筆記 這位仁兄寫得太好了.

TCP/IP詳解學習筆記(1)-基本概念 為什麼會有TCP/IP協議 在世界上各地,各種各樣的電腦執行著各自不同的作業系統為大家服務,這些電腦在表達同一種資訊的時候所使用的方法是千差萬別。就好像聖經中上帝打亂了各地人的口音,讓他們無法合作一

TCP/IP學習筆記(1)-基本概念

為什麼會有TCP/IP協議 在世界上各地,各種各樣的電腦執行著各自不同的作業系統為大家服務,這些電腦在表達同一種資訊的時候所使用的方法是千差萬別。就好像聖經中上帝打亂了各地人的口音,讓他們無法合作一樣。計算機使用者意識到,計算機只是單兵作戰並不會發揮太大的作用。只有把它們聯合

【計算機網路】第五章 資料鏈2

三.多路訪問控制(MAC)協議 1. 兩類鏈路 (1)點對點鏈路:撥號接入的PPP、乙太網交換機與主機間的點對點鏈路 (2)廣播鏈路(共享介質):早期的匯流排乙太網、HFC的上行鏈路、802.11無線區域網 2. 基本概念 (1)單一共享廣播通道 (2)兩個或兩個以上結點同時傳輸,則發生衝突;結點

TCP IP卷:協議 原書第2版》pdf附網盤下載連結+附一個菜鳥的java學習

技術書閱讀方法論 一.速讀一遍(最好在1~2天內完成) 人的大腦記憶力有限,在一天內快速看完一本書會在大腦裡留下深刻印象,對於之後複習以及總結都會有特別好的作用。 對於每一章的知識,先閱讀標題,弄懂大概講的是什麼主題,再去快速看一遍,不懂也沒有關係,但是一定要在不懂的

TCP/IP卷一:協議》資料鏈

引言         在TCP/IP協議族中,鏈路層主要有三個目的: 為IP模組傳送和接收IP資料報。為ARP模組傳送ARP請求和接收ARP應答。為RARP傳送RARP請求和接收RARP應答。  

TCP/IP筆記——IP

本系列是針對《TCP/IP詳解》的筆記總結,包含各章節的主要內容。有助於幫助你快速瞭解並掌握TCP/IP協議的相關內容。 目錄  1、概述  2、選路原理  3、ICMP重定向差錯  4、ICMP發現報文 1、概述 IP層工作步驟

TCP/IP學習---ARP & RARP

ARP(地址解析協議) 功能 提供IP地址到硬體地址之間的對映關係。 從物理層面來說,想讓任何一臺裝置接收發送給他的報文,最基本的前提是報文中封裝的目的地址(硬體實體地址,全世界唯一的)必須跟接收報文的介面地址相同,否則一律棄掉(廣播報文的全F地址除外);

TCP/IP (10) 動態選協議

10 動態選路協議 10.1 引言在前面各章中,我們討論了靜態選路。在配置介面時,以預設方式生成路由表項(對於直接連線的介面),並通過route命令增加表項(通常從系統自載入程式檔案),或是通過ICMP改變路由生成表項(通常是在預設方式出錯的情況下)。在網路很小時,與其它網路