鏈路層檢視原始碼討論檢視歷史
鏈路層 |
數據鏈路層的最基本的功能是向該層用戶提供透明的和可靠的數據傳送基本服務。透明性是指該層上傳輸的數據的內容、格式及編碼沒有限制,也沒有必要解釋信息結構的意義;可靠的 傳輸使用戶免去對丟失信息、干擾信息及順序不正確等的擔心。在物理層中這些情況都可能發生,在數據鏈路層中必須用糾錯碼來檢錯與糾錯。數據鏈路層是對物理層傳輸原始比特流的功能的加強,將物理層提供的可能出錯的物理連接改造成為邏輯上無差錯的數據鏈路,使之對網絡層表現為一無差錯的線路。
簡介
為了使傳輸中發生差錯後只將有錯的有限數據進行重發,數據鏈路層將比特流組合成以幀為單位傳送。每個幀除了要傳送的數據外,還包括校驗碼,以使接收方能發現傳輸中的差錯。幀的組織結構必須設計成使接收方能夠 明確地從物理層收到的比特流中對其進行識別,也即能從比特流中區分出幀的起始與終止,這就是幀同步要解決的問題。由於網絡傳輸中很難保證計時的正確和一致,所以不可採用依靠時間間隔關係來確定一幀的起始與終止的方法。控制字符SOH標誌數據幀的起始。實際傳輸中,SOH前還要以兩個或更多個同步字符來確定一幀的起始,有時也允許本幀的頭緊接着上幀的尾,此時兩幀間就不必再加同步字符。 count 字段共有14位,用以指示幀中數據段中數據的字節數,14位二進制數的最大值為2-1=16383,所以數據最大長度為8×16383=131064。DDCMP協議就是靠這個字節計數來確定幀的終止位置的。DDCMP幀格式中的ACK、SEG、ADDR及FLAG中的第2位,CRC1、CRC2分別對標題部分和數據部分進行雙重校驗,強調標題部分單獨校驗的原因是,一旦標題部分中的CONUT字段出錯,即失卻了幀邊界劃分的依據,將造成災難性的後果。由於採用字符計數方法來確定幀的終止邊界不會引起數據及其它信息的混淆,因而不必採用任何措施便可實現數據的透明性(即任何數據均可不受限制地傳輸)。
評價
一個實用的通信系統必須具備發現(即檢測)這種差錯的能力,並採取某種措施糾正之,使差錯被控制在所能允許的儘可能小的範圍內,這就是差錯控制過程,也是數據鏈路層的主要功能之一。對差錯編碼(如奇偶校驗碼,檢查和或CRC)的檢查,可以判定一幀在傳輸過程中是否發生了錯誤。一旦發現錯誤,一般可以採用反饋重發的方法來糾正。這就要求接收方收完一幀後,向發送方 反饋一個接收是否正確的信息,使發送方所在此作出是不需要重新發送的決定,也即發送方僅當收到接收方已正確接收的反饋信號後才能認為該幀已經正確發送完畢,否則需重直至正確為止。 物理信道的突發噪聲可能完全「淹沒」一幀,即使得整個數據幀或反饋信息幀丟失,這將導致發送方永遠收不到接收方發來的反饋信息,從而使傳輸過程停滯.為了避免出現這種情況,通常引入計時器(Timer)來限定接收方發回反饋信息的時間間隔,當發送方發送一幀的同時也啟動計時器,若在限定時間間隔內未能收到接收方的反饋信息,即計時器超時(Timeout),則可認為傳的幀已出錯或丟失,繼而要重新發送。由於同一幀數據可能被重複發送多次,就可能引起接收方多次收到同一幀並將其遞交給網絡層的危險。為了防止發生這種危險,可以採用對發送的幀編號的方法,即賦予每幀一個序號,從而使接收方能從該序號來區分是新發送來的幀還是已經接收但又重新發送來的幀,以此來確定要不要將接收到的幀遞交給網絡層。數據鏈路層通過使用計數器和序號來保證每幀最終都被正確地遞交給目標網絡層一次。[1]