一.通信協議概述:
1.定義:
通信設備雙方通過共同遵從一組約定,從而使數據可在網絡上進行相互傳輸。
打個比方,不同國家不同母語的兩個人,如果要實現交流,就必須以大家都熟悉的一種通用語言來交流,比如英語。同樣數據的格式只有一致,通信雙方才能正常傳輸。
2.通信協議層次劃分:
國際上通用的劃分有tcp/ip四層模型和osi七層模型兩種,TCP/UDP協議在兩種模型中對應如下:
osi七層模型
TCP/IP四層模型
二、TCP/UDP通信協議
1.概念
TCP、UDP是最常用的傳輸協議,同屬于傳輸層,不同之處在于:
TCP(Transmission Control Protocol傳輸控制協議):是一種面向連接的、可靠的、基于字節流的通信協議;主要傳輸數據較大、可靠性要求較高的;
UDP(User Datagram Protocol用戶數據報協議)是一種無連接的通信,不能保證數據包被發送到目標地址;主要是傳輸少量數據;
打個比方:TCP連接就像打電話,用戶撥特定的號碼,對方在線并拿起電話,然后雙方進行通話,通話完畢之后再掛斷,整個過程是一個相互聯系缺一不可的過程;
而UDP連接就像發短信,用戶要發送短信給對方,只要輸入對方的手機號碼即可發送,并不需要先連接對方。
2.三次握手
TCP作為一個可靠連接需要經過3次“對話”,即我們常說的“三次握手”:
第一次握手:建立連接時,客戶端發送syn包(syn=j)到服務器,并進入SYN_SEND狀態,等待服務器確認;
第二次握手:服務器收到syn包,必須確認客戶的SYN(ack=j+1),同時自己也發送一個SYN包(syn=k),即SYN+ACK包,此時服務器進入SYN_RECV狀態;
第三次握手:客戶端收到服務器的SYN+ACK包,向服務器發送確認包ACK(ack=k+1),此包發送完畢,客戶端和服務器進入ESTABLISHED狀態,完成三次握手.
完成三次握手,客戶端與服務器開始傳送數據
UDP是面向非連接的,所以在服務端與客戶端通信之前,不需要經過三次握手這個過程。
3.TCP/UDP對比
二.佰馬科技相關產品通信模式的選擇
佰馬科技提供的無線工業級無線DTU和工業級無線路由器作為透傳產品,支持TCP、UDP、MODBUS、MQTT等主流常用的協議,本章節通過實測重點對比TCP、UDP兩種傳輸協議在DTU、路由器上傳輸時數據格式的差異性,對于如何實現連接以及可靠性不做對比測試。
佰馬工業級無線DTU傳輸模式支持TCP、UDP協議:
1)TCP:包括FTCP、HTCP、CTCP、TCPSVR;
2)UDP:包括NUDP、HUDP、CUDP、UDPSVR;
其中:CTCP 、CUDP屬于數據純透傳,即不帶任何心跳包和注冊包,如果要帶,必須自定義設置。其余都帶有心跳包和注冊包。
以佰馬BMD100-A為例,將GPRS工作模式設置成FTCP,連接上服務器,可以觀察到服務器收到了BMD100發送的心跳包和數據包123。如下圖所示:
同樣以佰馬BMD100-A為例,將GPRS工作模式設置成CTCP,連接上服務器,可以觀察到服務器只收到BMD100發送的數據123,而沒有心跳包。如下圖所示:
同樣以佰馬BMD100-A為例,將GPRS工作模式設置成NUDP,連接上服務器,可以觀察到服務器收到了BMD100發送的心跳包和數據。
佰馬Baimatech,集M2M產品研發、IoT平臺服務、國際化運營于一體,讓我們聯接,共創未來