一 為什麼需要優化應用層通訊協議?
因為存在資料丟包現象,使用者體驗不好!
二 為什麼會有丟包發生?
應用層協議基於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,...