push推送機制與IM即時通信的長鏈接機制兩者的異同
長連接
概念:多用於操作頻繁,點對點的通訊,而且連接數不能太多情況。指在一個連接上可以連續發送多個數據包(心跳包,防止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即時通信的長鏈接機制兩者的異同