1. 程式人生 > >計算機網絡(謝希仁版)——第三章導讀(1)

計算機網絡(謝希仁版)——第三章導讀(1)

時有 互連 如何實現 遠的 共享 esc 了解 網絡 是否

  ※數據鏈路層討論什麽

  數據鏈路層討論的是局域網中主機與主機間的連接問題網絡(IP)層討論的主要是網絡與網絡互連的問題

  在數據鏈路層(局域網)使用的信道主要有兩種:點對點信道廣播信道,我們具體要討論的就是這兩個信道的特點,以及它們所使用的協議的特點。但在討論過程中,我們會先討論數據鏈路層的三個基本問題,然後再討論點對點信道、廣播信道。此外我們還會討論一些些額外知識。

  數據鏈路是什麽意思?

  “鏈路”指的是兩個結點間的物理線路(有線或無線),中間沒有其它結點,而“數據鏈路”則是指鏈路與其實現協議的硬軟件的整體。

  數據鏈路層的工作是什麽?

  將網絡層

(不一定是IP層,有可能不是TCP/IP體系)交下來的數據封裝成“幀”,以及把“幀”中的數據取出交給網絡層

  技術分享

  ※數據鏈路層的三個基本問題

  數據鏈路層也有多種協議(比如點對點信道和廣播信道就有不同的協議),但都需要解決三個基本問題:

  1.如何封裝成幀 2.如何實現“透明傳輸” 3.如何進行差錯檢測

  如何封裝成幀?

  為網絡層的數據(IP數據報)加上首部和尾部即可封裝成幀,首部和尾部根據不同的協議會帶有不同的控制信息

  技術分享

  但即使在不同的協議中,首部和尾部都必須有“幀定界符”來確定一個幀的範圍。(因為幀的數據部分長度不是固定的,所以整個幀的長度也是不固定的)

  技術分享

  舉例來說,我們以00000001作為幀的起始定界符(SOH,start of header),00000100作為幀的結束定界符(EOT,end of transmission),那麽當接收方收到SOH時就知道一個幀開始了,而收到EOT時則知道一個幀結束了,如果發送方未發送完就中斷了,然後重新發送,接收方也會因為接受到兩個SOH(中間沒接收到EOT)而確定第二個SOH前面的數據應該丟棄。

  什麽是“透明傳輸”,如何實現?

  “透明”即“實際存在的事物卻看不到”

  數據鏈路層的幀定界符會阻礙數據的傳輸。假定00000001表示SOH,00000100表示EOT,那麽幀的數據部分(IP數據報)就不能出現00000001和00000100,否則就會使得數據鏈路層的傳輸出錯。而“透明傳輸”就是要實現“雖然存在SOH和EOT這兩個阻礙,但要讓數據‘

看不出’有這倆個阻礙”,也就是通過技術手段讓IP數據報可以出現SOH和EOT而不影響數據鏈路層的傳輸。

  技術分享

  實現“透明傳輸”的方法之一就是利用“轉義字符”(ESC)來進行字節填充,例如假設ESC為00110000,那麽當幀的數據部分出現了SOH或EOT時,只需要在“封裝幀”時,在SOH或EOT前面加上00110000即可讓接收方明白“這裏不是幀定界符而是數據本身”。

  那麽當數據中出現了“轉義字符”又該怎麽辦?

  通過連續的兩個ESC來表示,比如數據中出現了轉義字符00110000,那麽封裝成幀時,在00110000前再加上00110000即可。

  技術分享

  如何進行差錯檢測?

  首先需要明白的是,數據鏈路層的差錯檢測只負責“位差錯”的檢測,而不負責“幀差錯”的檢測(僅限於通信質量良好的線路,如果通信質量較差則會采用確認-重傳機制)。

  所謂“位差錯”即幀當中的某些位出了差錯,比如發送的1接收時為0或者發送的0接收時為1.

  “幀差錯”則是指接收方出現了“幀丟失”,“幀重復”或“幀失序”的情況,比如一個IP數據報被分為了幀1,幀2和幀3,但傳輸過後,接收方只接受到幀1和幀3(丟失幀2),或者接收方接受到了幀1,幀2,幀2,幀3(幀2重復),或者接受到的是幀2,幀1,幀3(失序)

  目前數據鏈路層廣泛采用的是循環冗余檢驗技術(CRC,實現方法略),將CRC計算所得的冗余碼加在幀數據部分的尾部(幀檢驗序列FCS)

  什麽是PPP協議?

  PPP即Point-to-Point Protocol,是目前使用最廣泛的用於點對點鏈路的數據鏈路層協議。(用戶計算機和ISP之間就是采用PPP協議)

  技術分享

  PPP協議有什麽特點?

  1.簡單,不需要糾錯(只檢錯),不需要序號(不管幀差錯),接收方收到一個幀就進行CRC檢驗,正確就收下,出錯就扔掉,不需要做其他事情。

  2.封裝成幀 3.透明性 4.差錯檢測

  5.支持多種鏈路和多種網絡層協議

  6.負責檢查連接狀態

  7.對數據部分有最大傳輸單元(Max Transmission Unit,MTU)的限定

  8.允許雙方“協商”部分事宜(網絡層地址,數據壓縮方式)

  ※簡單來說,PPP協議由以下三部分組成

  1.封裝IP數據包的方法(MTU,透明性,差錯檢測等均在內)

  2.建立、配置、測試數據鏈路鏈接的鏈路控制協議LCP(Link Control Protocol)

  3.負責支持不同網絡層協議的一套網絡控制協議NCP(Network Control Protocol)

  

  PPP協議中的幀是怎樣的?

  技術分享

  PPP幀的首部有4個部分,尾部有2個部分

  首部的4個部分分別是F段,A段,C段和協議段

  F段即Flag段,也就是幀定界符,表示幀的開始與結束(尾部表示結束的也是F段,兩者均為0x7E)

  A段和C段在最初時是準備給以後的某種應用的,但目前為止還沒有用上,所以兩者一直是0xFF和0x03

  協議段的內容決定了“幀的信息部分是什麽”,如果協議段為0x0021,則信息部分為IP數據報,如果協議段為0xC021,則信息部分為鏈路控制協議LCP的數據,如果協議段為0x8021則信息部分為網絡層的控制數據(網絡控制協議NCP)

  尾部的2個部分分別是幀檢驗序列FCS和幀定界符F段(與首部的相同)

  ※PPP實現透明傳輸的方式有兩種,一種是通過之前所說的字節填充(“轉義字符”)來實現(具體實現方式略),另一種則是“零比特填充”。

  字節填充方式在PPP中主要適用於異步傳輸的情況(數據並不是從第一個位到最後一個位一次性傳輸完畢的,比如出現信道時分復用的情況)

  當同步傳輸時,PPP采用零比特填充的方式。PPP中的幀定界符為0x7E,也就是1111110。所以我們可以通過以下方式來避免數據部分出現1111110:

  發送方每當數據部分出現連續的5個1,即11111時,就在其後加一個0。接收方則每當遇到11111,就去掉其後的一個0

  技術分享

  

  

  使用PPP協議的鏈路的工作狀態大概是怎樣的?

  按步驟來說,大致如下:

  1.雙方沒有連接(包括物理層,但實際上來說雙方有線路相連)

  2.雙方建立物理層連接(比如用戶通過調制解調器呼叫ISP的路由器)

  3.雙方通過發送LCP的配置請求幀來協商鏈路配置(協商結束後即建立好LCP鏈路)

  4.鑒別(可選,用於確認對方身份等用途)

  5.雙方根據網絡層使用的協議,選擇NCP中對應的支持協議進行配置(比如網絡層使用IP協議,則分配IP地址等)

  技術分享

  

  什麽是“廣播信道”?

  廣播信道即可以進行一對多通信的信道,信道上一個主機發出的信息可以被多個主機接收,因而叫廣播信道,一般使用廣播信道的為局域網

  技術分享

  什麽是以太網?

  以太網就是一種局域網,在共享信道技術上采用了“隨機接入”方式,早期為總線網(上圖),以太是一種假想的用於傳播電磁波的介質,將總線局域網命名為以太網並無特殊含義。

  

  什麽是“隨機接入”?

  在第二章中我們提過一些信道復用技術,比如頻分復用、時分復用,只要信道上的用戶分配到了信道就可以實現共享信道,這類方法其實是“靜態劃分信道”,一旦劃分完畢就不便更改,不適用於局域網。因此局域網必須采用“動態媒體接入控制”。

  “動態媒體接入控制”的特點是不將信道固定的分配給用戶,其又分為“隨機接入”和“受控接入”兩種。

  隨機接入中用戶可隨時發送信息,但如果信道中同時有多個用戶發送消息則必須發生“碰撞”,令他們全部發送失敗,然後再解決(後面討論)

  受控接入則是用戶不可隨時發送信息,必須受到控制,受控接入的實現方法之一類似於計算機內部總線的輪詢。

  

  ※隨機接入即以太網所采用的方式,目前來說大部分局域網都是以太網,因此以太網與局域網基本同義,討論廣播信道即討論局域網、以太網。

  ※以太網有兩個標準,分別是DIX Ethernet V2和IEEE 802.3,但目前TCP/IP體系中只剩下DIX Ethernet V2標準的以太網,所以很多廠商生產適配器也只配置了MAC協議(Medium Access Control)而沒有配置LLC協議(Logical Link Control)。

  什麽是適配器?

  適配器即通常所說的“網卡”,其功能包含數據鏈路層和物理層,比如實現串、並行的轉換,對數據的緩存,發送和接收幀等。

  

  ※計算機的硬件地址(MAC地址,之後討論)存儲在適配器的ROM中

  計算機的軟件地址(IP地址)則存儲在計算機的存儲器中。

  ※雖然廣播信道上一臺主機發出的信息可以被所有主機所接收到,但並不是任何時候我們都希望進行廣播通信,所以如果信道上的主機有適配器,而適配器中又有唯一的硬件地址,那麽我們就可以通過在幀的首部寫明接收方的地址,在廣播信道上實現一對一的通信。

  

  早期以太網的特點是?

  1.采用總線結構(因為當時這種方法比較可靠)。因為采用總線結構,所以才會出現主機間的“碰撞”現象。現在的以太網通過以太網交換機可以避免“碰撞”的發生

  技術分享

  2.采用靈活的無連接工作方式,即主機間不需要先建立連接就可直接發送信息。但總線上同一時間只能有一臺主機在發送消息,如果有多臺主機同時發送消息就會發生“碰撞”,為了解決碰撞,以太網采用了CSMA/CD協議(載波監聽多點接入/碰撞檢測協議)來處理“碰撞”

  3.以太網中的數據采用曼徹斯特編碼方式,從而接收方可以從中提取同步信號。

  什麽是CSMA/CD協議?

  載波監聽多點接入/碰撞檢測協議中:

  載波監聽其實就是“監聽載波”也就是“監測信道”,協議要求每個主機都必須不停的檢測信道,不論是發送前還是發送中途

  多點接入就是指的總線結構

  碰撞檢測也就是“邊發送邊監測”,當適配器發送數據的同時監測信號電壓的變化情況,從中判斷是否有其他主機也在發送數據,如果有則說明“碰撞”發生。

  

  既然發送前已經確定沒有其他主機的信號,為什麽發送時還要繼續監測信道?

  因為電磁波在信道中的傳輸需要時間(電磁波在1km電纜的傳播時間約為5微秒),有可能發送前信道中沒有信號,但開始發送後卻監測到信道中有其他主機之前發出的信號。

  技術分享

  當發生碰撞時,CSAM/CD協議規定怎麽做

  首先,當發生碰撞時,主機應停止繼續發送幀。但並不能一等到信道空閑就重新發送,因為如果發生碰撞的主機都在監測信道,那麽大家都會發現信道空閑然後重新發送,就會再次發生碰撞。因此當碰撞發生後,必須經過一定時間才能再次發送信息,如何確定主機多久以後發送才是難點所在。以太網采用截斷二進制指數退避算法來確定主機重傳的時間。

  截斷二進制指數退避算法是怎樣的?

  首先需要了解一些前提知識:

  在圖3.17中,主機A從發送數據開始到監測到碰撞最多需要2τ時間(稱為“爭用期”),也就是說主機A發送數據2τ時間(經過爭用期)後就可以確定自己不會被“打斷”。同理,一個以太網中必然存在最遠的兩臺主機,這兩臺主機間信號傳輸需要的時間記為τ,那麽整個以太網的爭用期也就是2τ。一般以太網規定爭用期時間為51.2微秒,也即τ=25.6微秒(這足夠電磁波傳送5km的電纜,對於以太網來說足夠了)。

  在確定爭用期時間後,以太網中的主機每當發生碰撞,就從一個離散整數集[0,1,…,2^k-1]中隨機取一個數,其中k=Min[重傳次數,10],將取出的數與爭用期時間相乘,即重傳的等待時間。比如第二次碰撞重傳時,k=2,集合為[0,1,2,3],從中取一個隨機數乘以2τ,假設取出2,則等待4τ時間,然後重傳。

  當重傳次數達到16次,就說明信道中需要發送數據的主機太多,則丟棄該幀並向上匯報。

  使用本退避算法可以很好的起到“隨著重傳次數的增加,重傳推遲的平均時間也增加”的效果

  ※有一種特殊情況是某個主機發送了一個很短很短的幀,該幀發送完畢時依然沒有遇到碰撞,但卻在傳輸過程中發生了碰撞,此時接收方將收到有差錯的幀從而丟棄它,但發送方卻不知情從而不會重傳此幀。為了避免這種情況,以太網規定了幀的最低長度,如果要發送的數據真的很少,也必須加入一些填充字節來達到最低長度要求。

  ※強化碰撞即發送數據的主機在發送時遇上碰撞,此時不僅停止繼續發送數據,還要發送一些人為幹擾信號以告知所有用戶現在發生了碰撞。

  

  

計算機網絡(謝希仁版)——第三章導讀(1)