如何利用 Netty 實現自定義協議通訊?
既然是網路程式設計,自然離不開通訊協議,應用層之間通訊需要實現各種各樣的網路協議。在專案開發的過程中,我們就需要去構建滿足自己業務場景的應用層協議。之前我們介紹瞭如何使用網路協議解決 TCP 拆包/粘包的底層問題,這次我們將在此基礎上繼續討論如何設計一個高效、可擴充套件、易維護的自定義通訊協議,以及如何使用 Netty 實現自定義通訊協議。
通訊協議設計
所謂協議,就是通訊雙方事先商量好的介面暗語,在 TCP 網路程式設計中,傳送方和接收方的資料包格式都是二進位制,傳送方將物件轉化成二進位制流傳送給接收方,接收方獲得二進位制資料後需要知道如何解析成物件,所以協議是雙方能夠正常通訊的基礎。
目前市面上已經有不少通用的協議,例如 HTTP、HTTPS、JSON-RPC、FTP、IMAP、Protobuf 等。通用協議相容性好,易於維護,各種異構系統之間可以實現無縫對接。如果在滿足業務場景以及效能需求的前提下,推薦採用通用協議的方案。相比通用協議,自定義協議主要有以下優點。
-
極致效能:通用的通訊協議考慮了很多相容性的因素,必然在效能方面有所損失。
-
擴充套件性:自定義的協議相比通用協議更好擴充套件,可以更好地滿足自己的業務需求。
-
安全性:通用協議是公開的,很多漏洞已經很多被黑客攻破。自定義協議更加安全,因為黑客需要先破解你的協議內容
那麼如何設計自定義的通訊協議呢?這個答案見仁見智,但是設計通訊協議有經驗方法可循。結合實戰經驗我們一起看下一個完備的網路協議需要具備哪些基本要素。
1. 魔數
相關文章
- 基於Netty實現自定義訊息通訊協議(協議設計及解析應用實戰)Netty協議
- 如何動手實現一個自定義的通訊協議?協議
- 利用飛鴿協議實現通訊功能協議
- Java - Apache Mina 自定義協議通訊JavaApache協議
- netty自定義Decoder用於自定義協議Netty協議
- 基於 Netty 的可插拔業務通訊協議的實現「1」協議描述及基本訊息物件設計Netty協議物件
- RPC框架實現 - 通訊協議篇RPC框架協議
- 通訊協議protobuf的原理與實現協議
- IE瀏覽器 自定義地址協議的實現瀏覽器協議
- zmq通訊協議的實現,又稱zeromqMQ協議
- QT使用 http 協議通訊的實現示例QTHTTP協議
- 通訊協議協議
- 使用netty實現socks5協議Netty協議
- Redis 通訊協議Redis協議
- HTTP通訊協議HTTP協議
- Mysql通訊協議MySql協議
- MQ通訊協議MQ協議
- web通訊協議Web協議
- Linux Shell 指令碼實現 tcp/upd 協議通訊Linux指令碼TCP協議
- 利用SQL實現通訊錄SQL
- JMeter 擴充套件外掛實現對自定義協議的支援JMeter套件協議
- 基於 Netty 的可插拔業務通訊協議的實現「3」業務註冊及實際工作流程Netty協議
- 網路通訊協議協議
- Dubbo-通訊協議協議
- 串列埠通訊協議串列埠協議
- MQTT物聯網通訊協議入門及Demo實現MQQT協議
- 使用go net實現簡單的redis通訊協議YWSVGoRedis協議
- C#實現聯通簡訊Sgip協議程式原始碼C#協議原始碼
- 網路通訊協議-ICMP協議詳解!協議
- 網路通訊協議-TCP協議詳解!協議TCP
- 網路通訊協議-HTTP協議詳解!協議HTTP
- 網路通訊協議-SMTP協議詳解!協議
- Netty 原始碼中對 Redis 協議的實現Netty原始碼Redis協議
- 從零開始實現簡單 RPC 框架 7:網路通訊之自定義協議(粘包拆包、編解碼)RPC框架協議
- 如何利用微狗仔實現微信自定義分享卡片連結
- 用隧道協議實現不同dubbo叢集間的透明通訊協議
- 輕量通訊協議 --- MQTT協議MQQT
- HTTP協議的通訊框架HTTP協議框架