前面咱們瞭解了一些基本通訊機制。爲了更系統全面的學習,今天我來看一數據到底在傳輸中是什麼東西,又是怎麼解析的。html
咱們知道對於計算機來講,全部的數據都是二進制,非零即一。那麼有沒有想過在數據傳輸中電信號長什麼樣子呢?android
就像這樣的結構,組成全部的數據。安全
咱們的數據由一塊叫網卡的硬件把數據包轉換成電信號,經過網線進行傳輸到另外一端。 轉換的過程就是電壓和電流的輸出變化。服務器
接受端收到信號的時候會根據信號時鐘去切割比特信號,由於當連續的1111 0000 1111
這種狀況下接收方就不知道有幾個1,幾個0。因此會根據時鐘信號去切割。通俗的說這裏的時鐘信號就是間隔多少算一個比特。網絡
實際場景在電信號傳播中會受干擾。如今咱們熟悉的計算機網絡環境通常是使用RJ-45接口。也就是網口來做爲端口。任何在地球上存在的能量都會由於熵致使損失或丟失。那麼一個正常的正方波信號在傳輸中就會變成彎彎扭扭的線條。這時偉大的人想出了不少辦法來解決這個問題。學習
其中雙絞線(網線)就是一種優秀的抑制噪聲方案。儘量的去抗干擾和減小熵丟失,就是兩根線像麻花同樣纏繞在一塊兒能夠抵消一部分干擾。深究更細的顆粒度須要讀者自行學習。計算機網絡
這裏的包是指網絡數據包,網絡包是將電信號轉換成一組數據後的最基本單位。它的基本結構是這樣的:設計
網絡包是一層一層的關係,很是相似俄羅斯套娃的結構,一層層包裹着內部。3d
咱們來看一個網絡包中最外層的MAC幀結構:調試
上面圖中的結構是802.3以太網幀的結構。咱們生活中大部分802.3(有線),802.11(WIFI無線)。其中一組幀容許傳輸1500個字節,即1500×8比特數據。MAC幀的標準有多種,和歷史包袱,咱們只關注如今最經常使用的就行了。
MAC幀的上層通常裝的是IP頭報文和數據體。其實IP報文和MAC報文有些相似,可是IP報文更加複雜。這是因爲網絡分層致使的結果。也正式由於這樣纔可讓每一層協議不關注上層協議在作什麼事情,到達解耦的目的。
再往上一層是IP報文結構,感興趣的讀者能夠點這裏查看。總體來看咱們的數據就是下面這樣的,也就是我前面提到的俄羅斯套娃結構。
這麼底層的協議和咱們開發一個物聯網通訊應用有什麼關係。如今我能夠告訴你,其實和寫業務代碼沒有太大幹系,由於咱們是在應用層上作設計。不少時候是基於一些穩定的協議內去作消息透傳。可是呢,因爲這部分是很基礎的核心內容。能夠說作android應用層的同窗很難真正要碰到要本身去解析它們,一旦碰到了問題,或者硬件工程師和咱們溝通起來卻不明白它們在說什麼豈不是很尷尬?嗯哼
下一節咱們繼續學習網絡模型分層,來領略一下每層結構的意義,會和本節的關聯比較大。