關於移動即時通訊協議的點滴思考

2021-07-13 10:30:56 字數 1633 閱讀 9828

一 為什麼需要優化應用層通訊協議?

因為存在資料丟包現象,使用者體驗不好!

二  為什麼會有丟包發生?

應用層協議基於tcp,tcp協議本身提供可靠的端到端的資料傳輸,但前提是網路良好;在弱網路環境中,tcp連線會經常中斷(防火牆掐斷、網路無訊號心跳包不到達、終端網路切換、終端故障......),而tcp連線兩端對中斷感知較遲,發現中斷後,tcp緩衝區中的資料會被清空,即發生丟包。

總結一句話:在應用層中,傳送出去的資料,如果沒有收到對方的確認資訊,則不能認定資料已送達。

三  我們需要怎樣的協議?

1 可靠:訊息必達

2 高效:在弱網路環境中資料報能快速收發

3 低頻寬:資料報要盡可能占用少的網路資源

四  針對上述問題設計的幾種協議方案 

1 基於佇列的訊息協議,如mqtt, 流程如下:

a  server->發資訊->client

b  client->確認->server

c  重複上面兩步

優點:實現簡單、保證訊息可達

缺點:資料傳輸效率慢、頻寬利用率低、沒有利用tcp全雙工特性

2 基於雙佇列的訊息協議,通過tcp全雙工特性,對上述協議進行改進,流程如下:

a  server->發資訊1->client

b server->發資訊2->client

c  server->發資訊3->client

d  client->確認1->server

e  client->確認2->server

f  client->確認3->server

優點:保證訊息可達、資料傳輸效率高

缺點:實現稍複雜、網路中仍充斥著大量的確認包,頻寬利用率低

3 基於批量訊息的協議,為了解決頻寬利用率低的問題,流程如下:

a server->發資訊1、資訊2、資訊3->client

b client->確認->server

c 重複上面兩步

優點: 保證訊息可達、資料傳輸效率高、頻寬利用率高

缺點:  實現稍複雜、資料報過大、重發機率增高

4 基於序列號的訊息協議,如activesync,流程如下:

a  server->發通知->client

b  client->發客戶端最大序列號->server

c  server->發資訊1->client

d  server->發資訊2->client

e  server->發資訊3->client

f  client-> 確認最大的序列號->server

g  重複上述步驟

優點:保證訊息可達、減少了資料重發機率、資料傳輸效率高、頻寬利用率高

缺點: 實現複雜

weichst對activesync進行了改進,採用tcp+http的方式實現訊息通訊。

個人傾向於基於序列號的訊息協議,可完全採用基於tcp協議進行實現。

五   後續改進

頻寬是提公升服務端效能的乙個瓶頸,為解決該問題,個人更傾向於在傳輸層使用udp協議,原因如下:

a udp比tcp實時性更好;

b tcp為了實現網路擁塞控制、資料安全有序等目標,使得網路中存在大量的ack包,頻寬利用率低,而udp不存在這方面的問題

c udp是無狀態的,不需要消耗伺服器資源來維護

即時通訊協議相關

xmpp是目前主流的四種im協議之一,其他三種分別為 即時資訊和空間協議 impp 空間和即時資訊協議 prim 針對即時通訊和空間平衡擴充的程序開始協議sip 在這四種協議中,xmpp是最靈活的。xmpp是一種基於xml的協議,它繼承了在xml環境中靈活的發展性。因此,基於xmpp的應用具有超強的...

即時通訊協議簡述

即時通訊協議簡述 一 概述 隨 著即時資訊應用的普及,人們期待著產生相關的標準,否則就無法做到互通有無,阻礙即時資訊應用的發展。這一工作仍舊由ietf來完成。他們的工作取得了一 定進展,但是也有許多困難需要征服。正像有人比喻的那樣,如果說標準是一種被推廣的 普通話 可以促進廠商產品的互操作性,那麼,...

即時通訊協議對比

1 xmpp基於xml,xmpp用tcp傳遞的是xml流。它具有xml的靈活性和擴充套件性。可以實現服務類實時通訊。xmpp的核心xml流傳輸協議的定義使得xmpp能夠在乙個比以往網路通訊協議更規範的平台上。借助於xml易於解析和閱讀的特性。xmpp核心協議通訊的基本模式就是先建立乙個stream,...