透明傳輸
發布時間:2014/8/23 18:53:14 訪問次數:1555
由于幀的開始和結束LM2596-12V的標記是使用專門指明的控制字符,因此,所傳輸的數據中的任何8比特的組合一定不允許和用作幀定界的控制字符的比特編碼一樣,否則就會出現幀定界的錯誤。
當傳送的幀是用文本文件組成的幀時(文本文件中的字符都是從鍵盤上輸入的),其數據部分顯然不會出現像SOH或EOT這樣的幀定界控制字符。可見不管從鍵盤上輸入什么字符都可以放在這樣的幀中傳輸過去,因此這樣的傳輸就是透明傳輸。
但當數據部分是非ASCII碼的文本文件時(如二進制代碼的計算機程序或圖像等),情況就不同了。如果數據中的某個字節的二進制代碼恰好和SOH或EOT這種控制字符一樣(見圖3-6),數據鏈路層就會錯誤地“找到幀的邊界”,把部分幀收下(誤認為是個完整的幀),而把剩下的那部分數據丟棄(這部分找不到幀定界控制字符SOH)。
像圖3-6所示的幀的傳輸顯然就不是“透明傳輸”,因為當遇到數據中碰巧出現字符“EOT”時就傳不過去了。數據中的“EOT”將被接收端錯誤地解釋為“傳輸結束”的控制字符,而在其后面的數據因找不到“SOH”被接收端當作是無效幀而丟棄。但實際上在數據中出現的字符“EOT”并非控制字符而僅僅是二進制數據00000100。
前面提到的“透明”是一個很重要的術語。它表示:某一個實際存在的事物看起來卻是好像不存在一樣(例如,你看不見在你前面有塊100%透明的玻璃的存在)。“在數據鏈路層透明傳送數據”表示無論什么樣的比特組合的數據都能夠通過這個數據鏈路層。因此,對所傳送的數據來說,這些數據就“看不見”數據鏈路層有什么妨礙數據傳輸的東西。或者說,數據鏈路層對這些數據來說是透明的。
為了解決透明傳輸問題,就必須設法使數據中可能出現的控制字符“SOH”和“EOT”在接收端不被解釋為控制字符。具體的方法是:發送端的數據鏈路層在數據中出現控制字符“SOH”或“EOT”的前面插入一個轉義字符“ESC”(其十大進制編碼是1B,二進制是00011011)。而在接收端的數據鏈路層在把數據送往網絡層之前刪除這個插入的轉義字符。這種方法稱為字節填充(byte stuffing)或字符填充(character stuffing)。如果轉義字符也出現在數據當中,那么解決方法仍然是在轉義字符的前面插入一個轉義字符。此,當接收端收到連續的兩個轉義字符時,就刪除其中前面的一個。圖3-7表示用字節填充法解決透明傳輸的問題。
由于幀的開始和結束LM2596-12V的標記是使用專門指明的控制字符,因此,所傳輸的數據中的任何8比特的組合一定不允許和用作幀定界的控制字符的比特編碼一樣,否則就會出現幀定界的錯誤。
當傳送的幀是用文本文件組成的幀時(文本文件中的字符都是從鍵盤上輸入的),其數據部分顯然不會出現像SOH或EOT這樣的幀定界控制字符。可見不管從鍵盤上輸入什么字符都可以放在這樣的幀中傳輸過去,因此這樣的傳輸就是透明傳輸。
但當數據部分是非ASCII碼的文本文件時(如二進制代碼的計算機程序或圖像等),情況就不同了。如果數據中的某個字節的二進制代碼恰好和SOH或EOT這種控制字符一樣(見圖3-6),數據鏈路層就會錯誤地“找到幀的邊界”,把部分幀收下(誤認為是個完整的幀),而把剩下的那部分數據丟棄(這部分找不到幀定界控制字符SOH)。
像圖3-6所示的幀的傳輸顯然就不是“透明傳輸”,因為當遇到數據中碰巧出現字符“EOT”時就傳不過去了。數據中的“EOT”將被接收端錯誤地解釋為“傳輸結束”的控制字符,而在其后面的數據因找不到“SOH”被接收端當作是無效幀而丟棄。但實際上在數據中出現的字符“EOT”并非控制字符而僅僅是二進制數據00000100。
前面提到的“透明”是一個很重要的術語。它表示:某一個實際存在的事物看起來卻是好像不存在一樣(例如,你看不見在你前面有塊100%透明的玻璃的存在)。“在數據鏈路層透明傳送數據”表示無論什么樣的比特組合的數據都能夠通過這個數據鏈路層。因此,對所傳送的數據來說,這些數據就“看不見”數據鏈路層有什么妨礙數據傳輸的東西。或者說,數據鏈路層對這些數據來說是透明的。
為了解決透明傳輸問題,就必須設法使數據中可能出現的控制字符“SOH”和“EOT”在接收端不被解釋為控制字符。具體的方法是:發送端的數據鏈路層在數據中出現控制字符“SOH”或“EOT”的前面插入一個轉義字符“ESC”(其十大進制編碼是1B,二進制是00011011)。而在接收端的數據鏈路層在把數據送往網絡層之前刪除這個插入的轉義字符。這種方法稱為字節填充(byte stuffing)或字符填充(character stuffing)。如果轉義字符也出現在數據當中,那么解決方法仍然是在轉義字符的前面插入一個轉義字符。此,當接收端收到連續的兩個轉義字符時,就刪除其中前面的一個。圖3-7表示用字節填充法解決透明傳輸的問題。
上一篇:用幀首部和幀尾部封裝成幀
上一篇:差錯檢測