即時通訊是怎麼做到的?_風聞
16629866266-2021-01-21 11:23
作者:luluhulian即時通訊(Instant Messenger,簡稱IM)軟件多是基於TCP/IP和UDP進行通訊的,TCP/IP和UDP都是建立在更低層的IP協議上的兩種通訊傳輸協議。前 者是以數據流的形式,將傳輸數據經分割、打包後,通過兩台機器之間建立起的虛電路,進行連續的、雙向的、嚴格保證數據正確性的文件傳輸協議。而後者是以數 據報的形式,對拆分後的數據的先後到達順序不做要求的文件傳輸協議。
QQ就是使用UDP協議進行發送和接收消息的。當你的機器安裝了OICQ以後,實際上,你既是服務端(Server),又是客户端(Client)。當你登錄OICQ時,你的OICQ作為Client連接到騰訊公司的主服務器上,當你看誰在線時,你的OICQ又一次作為Client從QQ Server上讀取在線網友名單。當你和你的OICQ夥伴進行聊天時,如果你和對方的連接比較穩定,你和他的聊天內容都是以UDP的形式,在計算機之間傳 送。如果你和對方的連接不是很穩定,QQ服務器將為你們的聊天內容進行中轉。其他的即時通信軟件原理與此大同小異。
一般的步驟:
首先,用户A輸入自己的用户名和密碼登錄即時通訊服務器,服務器通過讀取用户數據庫來驗證用户身份,如果用户名、密碼都正確,就登記用户A的IP地址、IM客户端軟件的版本號及使用的TCP/UDP端口號, 然後返回用户A登錄成功的標誌,此時用户A在 IM系統中的狀態為在線(Online Presence)。
其次,根據用户A存儲在IM服務器上的好友列表 (Buddy List),服務器將用户A在線的相關信息發送到也同時在線的即時通訊好友的PC機,這些信息包括在線狀態、IP地址、 IM客户端使用的TCP端口(Port)號等,即時通訊好友PC機上的即時通訊軟件收到此信息後將在PC桌面上彈出一個小窗口予以提示。
第三步,即時通訊服務器把用户A存儲在服務器上的好友列 表及相關信息回送到他的PC機,這些信息包括也在線狀態、IP地址、IM客户端使用的TCP端口(Port)號等信息,用户A的PC機上的IM客户端收到 後將顯示這些好友列表及其在線狀態。
接下來,如果用户A想與他的在線好友用户B聊天,他將直接通過服務器發送過來的用户B的IP地址、TCP端口號等信息,直接向用户B的PC機發出聊天信息,用户B的IM客户端軟件收到後顯示在屏幕上,然後用户B再直接回復到用户A的PC機,這樣雙方的即時文字消息就不通過 IM服務器中轉,而是通過網絡進行點對點的直接通訊,這稱為對等通訊方式(Peer To Peer) 。在商用即時通訊系統中,如果用户A與用户B的點對點通訊由於防火牆、網絡速度等原因難以建立或者速度很慢, IM服務器還提供消息中轉服務,即用户A和用户B的即時消息全部先發送到IM服務器,再由服務器轉發給對方。早期的IM系統,在IM客户端和IM服務器之間通訊採用採用UDP協議,UDP協議是不可靠的傳輸協議,而在 IM客户端之間的直接通訊中,採用具備可靠傳輸能力的TCP協議。隨着用户需求和技術環境的發展,目前主流的即時通訊系統傾向於在即時通訊客户端之間、即時通訊客户端和即時通訊服務器之間都採用TCP協議 。