自定義協議 你也可以自定義報頭協議

2021-10-12 21:26:19 字數 1052 閱讀 7402

在學習過計算機網路的課程,我們知道剛開始計算機都是單獨離線工作的,沒有聯網的情況下計算機的資訊共享能力、運算能力都非常有限,後來誕生了計算機網路.有了就是那幾網路,計算機 a 的資訊和資料可以通過網路傳遞到計算機 b,同樣計算機 a 可以獲取到來自計算機 b 的資料. 但是不同計算機之間交換資料的時候就要通過網路來傳輸了.傳輸的過程中需要不同的計算機都遵循一定的規則來組裝資料、傳遞資訊,那麼這樣的規則就叫做協議.
計算機網路中有非常多協議,這些協議位於 osi 的不同層中,比如 tcp/ip、udp、smtp、ftp 等. 協議之所以稱為協議,是因為它具有約束效應,資訊在端到端的傳輸過程中,同等層次之間通過使用同樣的協議規則,這樣傳送方在該層次按照協議約定處理資料,接收方在該層次按照協議約定解析資料.成對存在.

在日常開發的時候處於某些原因可能需要自定義報文協議.這個協議是建立在 tcp 連線的基礎上,比如,移動端在做 apm 的時候將功能拆分為2個模組,乙個是 apm 監控模組、乙個為了方便可拓展單獨做了乙個資料上報元件,具有動態下發上報策略的配置.

所以上報元件這裡涉及到和服務端高效通訊,所以客戶端和服務端約定了一套自定義的報文協議,如下所示.

其實計算機網路過程中傳輸的就是二進位制資料,所以拿 ios 舉例來說,我們自定義報文協議的目的就是按照協議的約定,自定義組裝好乙個 nsdata 的資料,報文裡面的頭規定了各種資訊的組裝格式.

所以核心就上面的3點,一點都不難,只不過第一次做的時候可能會踩坑.列覺如下

objective-c 語言中處理 unsigned int 的資料,所以你需要直接操作 unsign short 到 nsdata, nsdata 的介面很方便, [nsdata datawithbytes:&metalength length:sizeof(metalength)]] 就可以處理成 2byte 的 unsigned int 的資料

自定義 如何自定義協議

何為自定義協議,其實是相對標準協議來說的,這裡主要針對的是應用層協議 常見的標準的應用層協議如http ftp smtp等,如果我們在網路通訊的過程中不去使用這些標準協議,那就需要自定義協議,比如我們常用的rpc框架 dubbo,thrift 分布式快取 redis,memcached 等都是自定義...

自定義http報頭 HTTP報文

超文字傳輸協議 http協議在規範文件裡詳細定義了報文的格式,規定了組成部分,解析規則,還有處理策略,所以可以在 tcp ip層之上實現更靈活豐富的功能,例如連線控制,快取管理 資料編碼 內容協商等等。報文結構 拿tcp報文來舉例,它在實際要傳輸的資料之前附加了乙個20位元組 的頭部資料,儲存tcp...

網路程式設計(六) 自定義報頭

當你正在給你朋友顯擺你的 的時候,飄過來乙個大神隨口說道 這 有問題 大神說的話不能不當真啊,誰讓你是個菜雞,你仔細想了一會兒。嗯,確實有問題 首先,我剛才做的報頭,按照協議來說應該不只有長度資訊,還應該有其他資訊 其次就是這個struct模組,它是有長度範圍限制的 struct.pack i 10...