2015-05-28 51 views
2

當數據通過網絡傳輸時,顯然是二進制形式。他們如何區分位流中的不同部分

所以它可能是一些

1011001 

,然後其他一些數據,也許

1110100111001 

這是一起發送。

當他們到達時,我們如何區分他們。是否有一些指示每個數據結束的特殊標誌?

如果是的話我們如何確保它是唯一的,我們不會感到困惑?

+0

閱讀OSI圖層或從Andy購買「計算機網絡」一書。 –

回答

1

你可以定義一個特殊的位串模式作爲開始或並且一些協議會執行此操作,但是您必須使其足夠長(例如256位),以致它不太可能出現在正常數據流中。

更可靠的方法是逃避結束模式,如果它出現在正常的數據。您可能知道這是如何工作的,因爲在某個時間點,每個人都會在字符串中使用\。他們必須逃脫\\

第三種方法適用於預先知道您的數據流的時間長短,因此您可以在實際發送數據之前發送一個長度。

實際的細節被定義爲協議並且雙方都必須遵循該協議的結構,但是它的定義。

+1

定義特殊信號的方法有很多。我曾經使用一個協議來定義,*「在正常數據中不應該有3個連續的零,任何時候發送2個零,它們後面應該是1,這個值將被忽略,如果接收器發現3個零,這是一個特殊的數據結束信號「* – abelenky

+0

@abelenky你可能在談論零字節。當然,這是有效的,但這很大程度上取決於想要發送的數據。例如,一些壓縮不好的文件格式有很多連續的0x00字節。 –

+0

我從很久以前的講座記得,還有一種技術,我們創建一個結束標誌,它根據之前的數據實時創建。但我現在不記得任何細節。 – ealiaj

相關問題