天天看點

計算機網絡筆記-鍊路層

點對點信道

計算機網絡筆記-鍊路層

點對點通信主要有以下步驟

節點A把網絡層交下來的資料封包添加首部和尾部封裝成幀

節點A将幀資料發送給B的鍊路層

若B節點校驗資料幀無差錯,則從幀中提取網絡層資料封包給上一層

計算機網絡筆記-鍊路層

也就是給原始的資料報的前後分别加上首部和尾部,這樣在接收端就能根據首部和尾部來從資料流中區分出一個一個的幀資料,對于傳輸的效率來說幀首部和幀尾部與幀總大小的比值越小越好,那麼就需要幀資料部分足夠大。也就是每次運輸的資料量足夠多的情況下效率是較高的。但是每一種鍊路層協定都規定了幀的資料部分的最大值即<code>MTU</code>(Maximum Transfer Unit)。

計算機網絡筆記-鍊路層

幀首部放置<code>SOH</code>(Start Of Header)十六進制數0X01,幀尾部放置<code>EOT</code>(End Of Transmission)十六進制數0X04。

透明傳輸就是如何将原始封包中的資料如同透明一樣通過資料鍊路層,如果原始部分資料中含有一些控制字段如:0X01或者0X04就會導緻封包找到錯誤的邊界

計算機網絡筆記-鍊路層

采用轉義就可以解決,将原始封包中的0X01和0X04都插入一個<code>ESC</code>也就是0X1B這種方式稱之為位元組填充法,如果原始封包中已經存在0X1B則再将前面加上一個轉移字元。這樣接收端拿到資料幀後将所有的轉移字元去掉就可以得到一個原始封包。

計算機網絡筆記-鍊路層

鍊路層需要保證資料傳輸的完整性,簡單的概括就是:隻要資料被接受到了就得是完整的資料。關于資料的丢失,資料的重發和确認不在鍊路層的設計考慮範圍内。如何報錯資料的完整性也很簡單,将原始網絡層的封包進行CRC校驗會得到一個備援碼,将備援碼放入到封包的最末端成為<code>FCS</code>(幀校驗序列)。接收端擷取到資料後将原始封包提取出來進行CRC校驗判斷資料是否完整。

ppp(Point to Point Protocol)就是使用者計算機和ISP進行通信時所采用的資料鍊路層協定。 PPP屬于點對點的廣域網協定。
計算機網絡筆記-鍊路層

組成:

将IP資料包封裝到串行鍊路層的方法。

用來建立,配置測試資料鍊路的鍊路控制協定<code>LCP</code>(Link Control Protocol)

網絡控制協定

計算機網絡筆記-鍊路層

首部和尾部分别是5和2個位元組。第一個位元組是幀頭部,第二和三個位元組是預留位,第四和5位元組表示協定的類型。協定一般有:

0X0021 IP資料報

0XC021 LCP資料

0X8021 網絡層的控制資料

尾部就是很正常的<code>FCS</code>校驗位和幀為尾部。

當使用者撥号接入 <code>ISP</code> 後,就建立了一條從使用者個人電腦到 <code>ISP</code> 的實體連接配接。這時,使用者個人電腦向 <code>ISP</code> 發送一系列的鍊路控制協定 <code>LCP</code> 分組(封裝成多個 <code>PPP</code> 幀),以便建立 <code>LCP</code> 連接配接。這些分組及其響應選擇了将要使用的一些 <code>PPP</code> 參數。接着還要進行網絡層配置,網絡控制協定 <code>NCP</code> 給新接入的使用者個人電腦組態設定一個臨時的 <code>IP</code> 位址。這樣,使用者個人電腦就成為網際網路上的一個有IP位址的主機了。當使用者通信完畢時,<code>NCP</code> 釋放網絡層連接配接,收回原來配置設定出去的 <code>IP</code> 位址。接着,<code>LCP</code>釋放資料鍊路層連接配接。最後釋放的是實體層的連接配接。
計算機網絡筆記-鍊路層

通過數據機呼叫路由器向<code>ISP</code>建立實體連接配接,鍊路建立

<code>LCP</code>協商一些配置選項,開始發送<code>LCP</code>請求幀。協商一些通信的資料如<code>MTU</code>

開始鑒别階段,這個階段隻允許<code>LCP</code>協定的分組資料,對通信使用者的身份進行校驗

最後就是通過網絡層協定<code>NCP</code>進行IP配置設定(類似于<code>DHCP</code>)

鍊路打開

廣播通信

廣播通信就是可以一對多的通信,區域網路就是使用廣播信道的。
區域網路就是網絡為一個機關所有的,地理位置和站點數目是有限的。 區域網路的優點: 具有廣播功能 便于系統的擴充 提高了系統的可靠性,可用性和生存性
計算機網絡筆記-鍊路層

靜态劃分信道,如頻分複用,時分複用,波分複用等,這種劃分信道方式的代價較為高昂,不适合區域網路使用。

動态媒體接入控制:特點是信道并非是在使用者通信時固定配置設定的

随機接入,所有使用者可以随機發送資訊,如果恰好有兩個資訊同一時間發出則會産生碰撞,導緻發送失敗。此方式在區域網路中使用較多。

受控接入,不可用随機發出資訊,而需要服從一定的控制。

以太網是區域網路的一種,目前來說區域網路和以太網幾乎可以說是同義詞。

​ 最早的以太網是通過總線方式進行連接配接,為了總線上實作一對一的通信方式需要對每個裝置設定一個獨一無二的編号也就是<code>MAC</code>位址。為了特性的友善以太網采用了以下兩種措施:

​ 不必建立連接配接直接發送資料,對發送的資料幀不進行編号和發回确認。是以以太網實際上是最大可能傳遞的方案,如果要實作高精度的通信高層TCP可以實作重傳功能。

​ 在總線上進行資料傳輸,每一時刻隻能有一個擴充卡發送消息,如果多條發送的話會導緻碰撞問題進而發送資料失敗。以太網使用的協定是<code>CSMA/CD</code>,意思是載波監聽多點接入/碰撞檢測。

計算機網絡筆記-鍊路層

​ 以太網發送的資料都使用曼徹斯特(<code>Manchester</code>)編碼的信号。我們知道,二進制基帶數字信号通常就是高、低電壓交替出現的信号。使用這種信号的最大問題就是當出現一長串的連 1 或連0時,接收端就無法從收到的比特流中提取位同步(即比特同步)信号。如圖 3-16 所示,曼徹斯特編碼的編碼方法是把每一個碼元再分成兩個相等的間隔。碼元 1是前一個間隔為低電壓而後一個間隔為高電壓。碼元 0 則正好相反,從高電壓變到低電壓(也可采用相反的約定,即 1 是"前高後低"而 0 是"前低後高")。這樣就保證了在每一個碼元的正中間出現一次電壓的轉換,而接收端就利用這種電壓的轉換很友善地把位同步信号提取出來。但是從曼徹斯特編碼的波形圖也不難看出其缺點,這就是它所占的頻帶寬度比原始的基帶信号增加了一倍(因為每秒傳送的碼元數加倍了)。

特點:

多點接入,多點接入說明是總線型網絡

載波監聽,不停的檢測信道是否有資料發送

碰撞檢測,在發送的過程中也在不停的檢測,一旦發現有沖突要立馬停止發送,減少網絡資源占用

就算是再發送前後做監聽也還是可能會出現碰撞的現象,這是由于以太網隻能進行雙向交替通信(半雙工通信)且資訊傳遞的速度是有限的,總會存在一個傳播延時,這會導緻信号還沒傳遞到分為内,接收端的主機以為可以通信。一次以太網不能保證一定能成功發送資料幀,此為發送的不确定性,若以太網的平均通信量遠小于以太網的最高資料率,以太網發生碰撞的機會會很小。是以還需要注意的是使用<code>CSMA/CD</code>協定一定要限制傳播媒體的距離,一般是要在200M以内,不然CSMA/CD的碰撞檢測算法将失去作用。

以太網的 端到端往返時間 :\(2 * τ\),要保證要發送的資料在最後一個比特發送出去之前檢測出是否沖突。

一個站發送資料開始計時,經過争用期這段時間内還沒有檢測到碰撞,便能确定此次發送不會産生碰撞。如此可以确定正确發送完這一幀

若争用期為 51.2 μs,對于 10 Mbit/s 的以太網,争用期内可以發送 512 bit,即 64 位元組,此長度亦為最小幀長度(小于此長度接收端會認定此幀因為檢測到沖突被提前中斷發送了)

用來确定碰撞後重傳的時機(确定等待的随機時間,注意不是空閑就立即發送)

k = Min [ 目前站目前幀的重傳次數,10 ]

然後從離散整數集合 [ 0,1,… ,(2k - 1)]中随機取出一個數,記為 r,若 r 超過 16,則直接丢棄該幀,向高層報告

目前站目前幀重傳等待時間為$ r * 2τ$

(重傳次數越大,離散整數k 的集合範圍越大,那麼彼此的重傳時間差别就越大,不容易随機到同一個數值,不會再一次沖突,如此實作動态退避)

如上情況,若發生碰撞,就一定會在前64位元組内停止發送,是以發送出去的資料一定小于64位元組。是以規定 長度小于64位元組的幀 均視為由于沖突而異常終止的無效幀。接收端收到這種幀,直接丢棄要確定發送的幀的總長大于64 位元組。為了保證最小幀長度,發送方檢測到幀的資料小于後會在IP報的後面加上一個整數,當封包被接受到,網絡層拿到資料後會根據網絡層中的封包長度來丢棄後面補充的資料。

計算機網絡筆記-鍊路層

當發送資料的站檢測到碰撞,除了立即停止發送資料,并繼續發送 32比特或48比特的人為幹擾信号,以便讓所有使用者都知道現在已經發生碰撞

準備發送,擷取網絡封包組裝成以太網幀

檢測信道,如果檢測到信道正忙則進行自選等待

發送過程不停檢測信道,兩種可能:

發送成功

發送失敗,立刻停止發送資料,進行強化碰撞發送幹擾資料,緊接着執行逼退算法。等待一段時候就後重新回到進度2

計算機網絡筆記-鍊路層

MAC幀一共由5個字段組成,前兩個字段分别為目的位址和源位址,緊接着是一個2位元組的類型字段,類型字段用來辨別上層的協定是什麼,可能是IP資料報也可能是IPX,資料字段長度一般為46~1500個位元組,(46的最小位元組的計算:CSMA/CD協定中最小幀為64位元組,64位元組減去18位元組的MAC封裝位元組就是48)。

為什麼MAC幀沒有幀界限符或者是幀大小字段,接收端如何從資料流中區分幀?

由于以太網使用曼徹斯特編碼方式,不管是低電平還是高電平在一個電平的時間區間都會有一次高低電平轉換,是以隻要檢測到一段連續的無變化的電平後就能找到上個幀的結束位置。

<code>PPPOE</code>(<code>PPP Over Ethernet</code> )是基于<code>PPP</code>協定的一種協定。 在以太網中資訊都是由廣播發出的,而在協定中沒有定義使用者資訊,是以在一些需要堅定使用者或者計費的場合就無法實作,但是<code>PPP</code>協定是支援使用者鑒權,是以在<code>PPP</code>協定之上加上一層<code>PPPOE</code>封包和以太網封包頭就可以實作以上的功能。
計算機網絡筆記-鍊路層

上圖為<code>PPPOE</code>的幀格式,最外層是以太網<code>MAC</code>幀的格式,載荷内容是<code>PPPOE</code>的幀,在<code>PPPOE</code>的載荷才是PPP的資料。

對于第一層的以太網幀就不多贅述了,現在來看看第二層的<code>PPPOE</code>幀機構:

字段

說明

Ver

4bits,<code>PPPoE</code>版本号,值為0x1。

Type

4bits,<code>PPPoE</code>類型,值為0x1。

Code

8bits,<code>PPPoE</code>封包類型。

(a) 0x00,表示會話資料。

(b) 0x09,表示<code>PADI</code>封包。

(c) 0x07,表示<code>PADO</code>或<code>PADT</code>封包。

(d) 0x19,表示<code>PADR</code>封包。

(e) 0x65,表示<code>PADS</code>封包。

Session_ID

16bits,對于一個給定的PPP會話,該值是一個固定值,并且與以太網<code>Source_address</code>和<code>Destination_address</code>一起實際地定義了一個<code>PPP</code>會話。值0xffff為将來的使用保留,不允許使用。

Length

16bits,定義<code>PPPoE</code>的<code>Payload</code>域長度。不包括以太網頭部和<code>PPPoE</code>頭部的長度。

資料

在<code>PPPOE</code>的不同階段該域内的資料内容會有很大的不同。在<code>PPPOE</code>的發現階段時,該域内會填充一些<code>Tag</code>(标記);而在<code>PPPOE</code>的會話階段,該域則攜帶的是标準的點對點協定包(PPP Packet)。

發現階段

PPPoE的發現階段一共分為4步,分别 是:<code>PADI</code>(PPPoE Active Discovery Initiation),<code>PADO</code>(PPPoE Active Discovery Offer),<code>PADR</code>(PPPoE Active Discovery Request),<code>PADS</code>(PPPoE Active DiscoverySession- confirmation)。

計算機網絡筆記-鍊路層

當完成這四步之後,使用者主機(PC)和通路集中器(AC)雙方就能獲知對方唯一的<code>MAC</code>位址和唯一的會話<code>ID</code>。<code>MAC</code>位址和會話<code>ID</code>共同定義了唯一的<code>PPPoE</code>會話。<code>PPPoE</code> Discovery的以太網類型域為0x8863。

1、PADI(PPoE Active Discovery Initiation)

主機發起以太網廣播,<code>CODE</code>字段值為0x09,初始化請求。找到集中器的位址

2、PADO(PPoE Ative Discovery Offer)

單點傳播,集中器收到主機發送的<code>PADI</code>請求後将回應一個<code>PADO</code>封包給主機,表明了可以提供的服務名稱和集中器的名稱類型

3、PADR (PPoE Ative Discovery Request)

單點傳播,主機對收到的多個<code>PADO</code>回應中挑選一個可以提供服務的分組,對其發送PADR請求,指明需要的服務。

4、PADS(PPPoE Active DiscoverySession- confirmation)

單點傳播,集中器收到<code>PADR</code>請求後将開始準備PPP會話,發送一個PADS請求攜帶一組唯一的<code>Session</code>回話标志,當主機收到<code>PADS</code>請求後就表明<code>PPPoE</code>的發現階段結束開始進入<code>PPP</code>階段。