1. 程式人生 > >push推送機制與IM即時通信的長鏈接機制兩者的異同

push推送機制與IM即時通信的長鏈接機制兩者的異同

sse 機制 面向連接 雙向 同時 control 服務端 穩定性 push

長連接

概念:多用於操作頻繁,點對點的通訊,而且連接數不能太多情況。指在一個連接上可以連續發送多個數據包(心跳包,防止NAT超

時,及探測連接是否斷開),在連接保持期間,如果沒有數據包發送,需要雙方發鏈路檢測包。

作用:多用於操作頻繁,點對點的通訊,而且連接數不能太多情況。

要求:服務器的開銷、穩定性和要求很大。


短連接

概念:指通訊雙方有數據交互時,就建立一個連接,數據發送完成後,則斷開此連接,即每次連接只完成一項業務的發送。

示例:像WEB網站的http服務一般都用短鏈接;或手機端APP的網絡請求。


PUSH推送機制

通過建立一條手機與服務器的連接鏈路(長連接),當有消息需要發送到手機時,通過此鏈路發送即可。 類似於iOS的APNS相似,

必須要註意的是iOS客戶端、自建服務器與服務器之間需要推送證書進行鏈接。

實現步驟如下:

1、首先是應用程序註冊消息推送。

2、iOS跟APNS Server要deviceToken。應用程序接受deviceToken。

3、應用程序將deviceToken發送給PUSH服務端程序。

4、服務端程序向APNS服務發送消息。

5、APNS服務將消息發送給iPhone應用程序。


IM即時通信機制

即時通訊(Instant Messenger,簡稱IM)是基於TCP/IP和UDP進行通訊的,TCP/IP和UDP都是建立在更低層的IP協議上的兩種通

訊傳輸協議。前 者是以數據流的形式,將傳輸數據經分割、打包後,通過兩臺機器之間建立起的虛電路,進行連續的、雙向的、嚴

格保證數據正確性的文件傳輸協議。而後者是以數據報的形式,對拆分後的數據的先後到達順序不做要求的文件傳輸協議。

UDP:User Datagram Protocol用戶數據報協議。一種無連接的傳輸層協議,提供面向事務的簡單不可靠信息傳送服務。面向無連接

的、不可靠的連接(其可靠性由應用層負責)。

TCP/IP:Transmission Control Protocol傳輸控制協議,又名網絡通訊協議。負責發現傳輸的問題,一有問題就發出信號,要求重新

傳輸,直到所有數據安全正確地傳輸到目的地。面向連接的、可靠的(數據無丟失、無失序、無錯誤、無重復)、基於字節流的連

接。

三次握手建立連接:

1、報文發送狀態:客戶端發送SYN(SYN=x)報文給服務器端,進入SYN_SEND狀態。

2、報文接收狀態:服務器端收到SYN報文,回應一個SYN(SYN=y)ACK(ACK=x+1)報文,進入SYN_RECV狀態。

3、建立連接狀態:客戶端收到服務器商的SYN報文,回應一個ACK(ACK=y+1)報文,進入Established狀態。

四次揮手斷開連接:

1、客戶端關閉自己的socket,同時內核協議棧向服務器發送一個FIN置位包,請求斷開連接。

2、服務器接收到客戶端的FIN斷開請求後,內核協議棧發送一個ACK包給客戶端,表示已經收到客戶端的請求。

3、服務器運行一段時間後,關閉自己的socket,同時內核協議棧向客戶端發送一個FIN置位包,請求斷開連接。

4、客戶端收到服務器的FIN斷開請求後,發送一個ACK做出應答,表示已經收到服務器的請求。


Internet Protocol因特網互聯協議,是給因特網的每一臺聯網設備規定一個地址,即相當於指定一條源地址和目的地址之間的直接路

徑。

TCP/IP定義了電子設備如何連入因特網,以及數據如何在它們之間傳輸的標準。協議采用了4層的層級結構,每一層都呼叫它的下一

層所提供的協議來完成自己的需求。

IPv4是互聯網協議(Internet Protocol,IP)的第四版,它的最大問題是網絡地址資源有限(IPv4中規定IP地址長度為32,即有2^32-

1個地址)。

IPv6是(Internet Protocol Version 6)互聯網協議的第六代。用於替代現行版本IP協議(IPv4)的下一代IP協議。具有更大的地址空

間(IPv6中IP地址的長度為128,即有2^128-1個地址)、使用更小的路由表、增加了增強的組播支持以及對流的控制、加入了對自

動配置的支持、具有更高的安全性。



4層層級架構:

網絡接口層:也叫鏈路層,指出主機必須使用某種協議與網絡相連。

網絡層:相鄰計算機之間的通信。包括處理傳輸層的請求、處理輸入數據報、處理路徑/流控/擁塞等。

傳輸層:也叫運輸層(UDP、TCP),應用程序之間的通信,即傳源端和目的端機器上的對等實體可以進行會話。包括格式化信息

流、可靠傳輸。

應用層:使用軟件,即向用戶提供一組常用的應用程序。如:遠程登錄、郵件、文件傳輸。



UDP與TCP的異同

1、數據報發送時,UDP不能保證數據的完整性(可能會出現丟失)。TCP協議中包含了專門的傳遞保證機制,當數據接收方收到發

送方傳來的消息時會自動向發送方確認消息,發送方只有在接收到確認消息後才繼續發送其他信息。UDP協議沒有包含專門的傳遞

保證機制,發送方到接收方的傳遞過程中出現數據報的丟失,協議本身不做任何檢測。

2、多個數據報同時發送時,UDP不能保證數據的發送和接收順序。

3、TCP因協議中的安全保障功能,會占用大量系統開銷,嚴重影響速度。

4、UDP無安全保證機制,減少了執行時間保證了速度。



推送與IM的異同

相同點:

1、程序在前臺時,push推送能收到信息,IM也能收到信息。

2、push推送和IM都是使用長連接的技術實現;push推送是IM技術的簡化版。

3、push依托系統的常駐進程,獨立於應用之外。即相當於只有手機開機了就建立了設備與服務器之間的長連接。

4、IM依托實際的某個應用,在應用之內。即當應用啟用且在前臺運行前登錄狀態時,就建立了應用與服務器之間的長連接。

不同點:

1、push推送不管程序在前臺還是後臺運行都能接收到信息;而IM在後臺通常是不能接收到信息的(除非加入了平臺商的白名單)。

push推送機制與IM即時通信的長鏈接機制兩者的異同