1. 程式人生 > >基於STM32使用TCP/IP,HTTP協議連線雲伺服器個人總結

基於STM32使用TCP/IP,HTTP協議連線雲伺服器個人總結

對於如何將底層測量資料上傳到雲伺服器這個問題我進行了許多嘗試,都以失敗告終。這讓我不得不仔細去了解TCP/IP協議。OSI是網路程式設計的經典模型,將構成網路的程式分成了7個層面。TCP/IP是第三層與第四層。第一層,物理層:例如我要使用STM32驅動ESP8266連線路由器然後路由器連外網,那麼ESP8266的驅動程式碼就是物理層的程式。(一般ESP8266使用的是AT指令,使用的時候只是驅動串列埠傳送訊息給ESP8266,物理層程式碼以韌體的形式燒錄在8266晶片內)第二層,資料鏈路層:具體的例子為PPP協議,作用範圍為區域網。該層程式碼可以在不同的硬體裝置上移植,不像物理層受限於某一晶片。資料鏈路層的作用是:當多個裝置連線同一臺路由器,外網傳送給這些裝置的資料都由一臺路由器接收,然後這臺路由器通過資料鏈路層的協議(例如PPP協議)將資料分別傳送到各個裝置上,建立起區域網內的資料鏈路。第三層,網路層:最常見的網路層程式就是IP協議了。進入了網路層,訊息就會在成百上千臺計算機中傳遞,為了使訊息能夠快速準確的傳達目的地,IP協議就誕生了(最初的IP協議和TCP協議是在一起的一個協議,後來才分成兩個)。它給每個主機都分配一個唯一的IP,並且增加了定址與建立連線的功能。第四層,傳輸層:傳輸層協議中就有我使用的TCP協議。當兩臺計算機成功的通過IP協議建立連線之後,為了保證資料傳輸的準確性(因為資料分片重組時,硬體接收出錯等各種情況可能導致資料接收錯誤),安全性,人們會使用傳輸層協議對傳輸資料進行打包,協議會自動對資料的正確性進行校驗。(當然也有追求速度,求快不求準的傳輸層協議,這類協議往往不校驗)第五層至第七層,應用層:程式設計師們在接收到資料後使用各種各樣的軟體演算法完成各自的需求。對於使用STM32連線外網這個任務而言,這裡可以不必過多關注。我選擇了新浪雲伺服器,它使用URL介面,那麼我就用HTTP協議對他對發起資料傳輸請求。網路協議分層是非常有必要的,這既方便了人們移植使用有不同優點的協議,也為日後優化改善網路協議提供了便利。當底層測量到資料時,首先通過STM32讀取,然後通過機械層傳送到ESP8266上,然後8266會使用第二層,第三層,第四層協議(8266使用TCP協議傳送)將資料打包傳送到路由器,路由器的接收硬體接收到8266的訊息,訊息通過路由器的第一層第二層第三層第四層協議進入HTTP協議,然後對URL進行域名解析,定址,握手,傳輸資料。現階段我正在補習雲伺服器端的PHP編寫,尚未實驗成功。這是我對於硬體連線雲平臺的學習心得,希望大家能夠指出我有錯誤的地方。