Android與物聯網設備通訊-數據傳遞的本質

前面咱們瞭解了一些基本通訊機制。爲了更系統全面的學習,今天我來看一數據到底在傳輸中是什麼東西,又是怎麼解析的。html

image.png

章節

目錄

  • 數字信號
  • 時鐘信號
  • 信號衰減和抗干擾
  • 包數據MAC幀

咱們知道對於計算機來講,全部的數據都是二進制,非零即一。那麼有沒有想過在數據傳輸中電信號長什麼樣子呢?android

就像這樣的結構,組成全部的數據。安全

數字信號

image.png

咱們的數據由一塊叫網卡的硬件把數據包轉換成電信號,經過網線進行傳輸到另外一端。 轉換的過程就是電壓和電流的輸出變化服務器

時鐘信號

image.png

接受端收到信號的時候會根據信號時鐘去切割比特信號,由於當連續的1111 0000 1111 這種狀況下接收方就不知道有幾個1,幾個0。因此會根據時鐘信號去切割。通俗的說這裏的時鐘信號就是間隔多少算一個比特網絡

信號衰減和抗干擾

image.png

實際場景在電信號傳播中會受干擾。如今咱們熟悉的計算機網絡環境通常是使用RJ-45接口。也就是網口來做爲端口。任何在地球上存在的能量都會由於熵致使損失或丟失。那麼一個正常的正方波信號在傳輸中就會變成彎彎扭扭的線條。這時偉大的人想出了不少辦法來解決這個問題。學習

其中雙絞線(網線)就是一種優秀的抑制噪聲方案。儘量的去抗干擾和減小熵丟失,就是兩根線像麻花同樣纏繞在一塊兒能夠抵消一部分干擾。深究更細的顆粒度須要讀者自行學習。計算機網絡

image.png

包數據MAC幀

這裏的包是指網絡數據包,網絡包是將電信號轉換成一組數據後的最基本單位。它的基本結構是這樣的:設計

image.png

  • 包頭:各類網絡底層的控制信息
  • 數據體:上層數據的一個載體。(網絡模型章節詳解)

網絡包是一層一層的關係,很是相似俄羅斯套娃的結構,一層層包裹着內部。3d

image.png

咱們來看一個網絡包中最外層的MAC幀結構:調試

image.png

上面圖中的結構是802.3以太網幀的結構。咱們生活中大部分802.3(有線),802.11(WIFI無線)。其中一組幀容許傳輸1500個字節,即1500×8比特數據。MAC幀的標準有多種,和歷史包袱,咱們只關注如今最經常使用的就行了。

  • 前導碼和幀開始符:做爲幀數據的開始標記(防粘包用)。
  • 報文頭:接收方MAC地址、發送方MAC地址、802.1Q可選字段、以太網類型
  • 負載:數據體,即上層協議的報文頭和數據。(相似俄羅斯套娃)
  • 沉餘校驗:32位的循環冗餘校驗碼,用於驗證幀數據是否被損壞。
  • 幀間距:16個空字節,用於切割開下一組MAC幀數據,防止粘連。

MAC幀的上層通常裝的是IP頭報文和數據體。其實IP報文和MAC報文有些相似,可是IP報文更加複雜。這是因爲網絡分層致使的結果。也正式由於這樣纔可讓每一層協議不關注上層協議在作什麼事情,到達解耦的目的。

再往上一層是IP報文結構,感興趣的讀者能夠點這裏查看。總體來看咱們的數據就是下面這樣的,也就是我前面提到的俄羅斯套娃結構。

image.png


這麼底層的協議和咱們開發一個物聯網通訊應用有什麼關係。如今我能夠告訴你,其實和寫業務代碼沒有太大幹系,由於咱們是在應用層上作設計。不少時候是基於一些穩定的協議內去作消息透傳。可是呢,因爲這部分是很基礎的核心內容。能夠說作android應用層的同窗很難真正要碰到要本身去解析它們,一旦碰到了問題,或者硬件工程師和咱們溝通起來卻不明白它們在說什麼豈不是很尷尬?嗯哼

下一節咱們繼續學習網絡模型分層,來領略一下每層結構的意義,會和本節的關聯比較大。

相關文章
相關標籤/搜索