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