本文章對XMPP通信原理做基本的介紹,不講具體代碼。在面試的時候會經(jīng)常聽到:能介紹一下XXXX原理嗎?當然面試不一定全是問XMPP原理。所以接下來幾篇文章都是一些原理的介紹,希望對小伙伴們能有所用處,廢話不多,進入主題。
1:XMPP概述
XMPP(可擴展消息處理現(xiàn)場協(xié)議)的前身是Jabber,由一個開源組織產(chǎn)生的即時通信協(xié)議,基于可擴展標記語言(XML)的一種協(xié)議,是由IETF(國際互聯(lián)網(wǎng)小組)通過的網(wǎng)絡標準。
XMPP定義了三個角色:客戶端,服務端以及網(wǎng)關(下面介紹作用)
2:XMPP的優(yōu)勢
可擴展性:XMPP基于XML,因此具有良好的擴展性。
開源:XMPP不屬于任何一個人。
安全:XMPP在Client-to-Server通信,和Server-to-Server通信中都使?用TLS (Transport Layer Security)協(xié)議作為通信通道的加密?法。
分布式:XMPP沒有中央服務器,任何企業(yè)例如都可以擁有自己的XMPP服務器,并且服務器之間以及不同服務器的用戶可以相互通信。舉例:如現(xiàn)在的qq用戶是不可能和FaceBook用戶通信的,但是若干年后(XMPP已經(jīng)作為網(wǎng)絡標準),可能出現(xiàn)一種情況,qq用戶可以添加并且和fb用戶聊天。
3:缺點
負載過重,沒有二進制數(shù)據(jù)傳輸。
4:網(wǎng)關(gateway)
上面說到qq用戶和FB用戶聊天,那么這里不得不提網(wǎng)關,網(wǎng)關的作用就是實現(xiàn)XMPP和其他系統(tǒng)之間的協(xié)議轉換,使其可以互相交換信息.
5:通信原理

1:首先客戶端1通過socket向服務端通過三次握手建立TCP長連接(由C1向服務器發(fā)送登陸等信息進行認證)。

2:服務器端對C1進行認證成功,服務器將C1的聯(lián)系人列表返回給它
3:C1通過服務端向其好友發(fā)送狀態(tài)(presence)消息(在線/隱身)
6 七層協(xié)議簡介


這里對TCP和UDP進行一個區(qū)分:

這里給大家再普及一個很小的知識點:
ip:我們都聽過ip尋址,那么ip是什么呢?ip類似于人的身份證,是電腦的唯一標示。
端口:端口是進程的唯一標示,如果不明白什么是進程就看作是應用程序(QQ)。有效端口是0-65535,其中0-1024為系統(tǒng)占用或者系統(tǒng)保留端口,不建議使用。