TCP/IP協(xié)議中又分為TCP協(xié)議和UDP協(xié)議,TCP協(xié)議是面向連接的協(xié)議,它比較安全、穩(wěn)定,    但是效率不高,占用資源較多。UDP協(xié)議是無連接方式的協(xié)議,它的效率高,速度快,占資源少,但是其傳輸機(jī)制為不可靠傳送,必須依靠輔助的算法來完成傳輸控制。   
        QQ采用的通信協(xié)議以UDP為主,輔以TCP協(xié)議。由于QQ的服務(wù)器設(shè)計(jì)容量是海量級(jí)的應(yīng)用,一臺(tái)服務(wù)器要同時(shí)容納十幾萬的并發(fā)連接,因此服務(wù)器端只有采用UDP協(xié)議與客戶端進(jìn)行通訊才能保證這種超大規(guī)模的服務(wù)。     
        QQ客戶端之間的消息傳送也采用了UDP模式,這不同于國外的ICQ在客戶端之間采用TCP進(jìn)行通訊的模式。因?yàn)閲鴥?nèi)的網(wǎng)絡(luò)環(huán)境非常復(fù)雜,而且很多用戶采用的方式是通過代理服務(wù)器共享一條線路上網(wǎng)的方式,在這些復(fù)雜的情況下,客戶端之間能彼此建立起來TCP連接的概率較小,嚴(yán)重影響傳送信息的效率。而UDP包能夠穿透大部分的代理服務(wù)器,因此我們?cè)陂_發(fā)QQ的時(shí)候選擇了UDP作為客戶之間的主要通信協(xié)議,因此網(wǎng)友會(huì)覺得用QQ傳送信息要比ICQ及其它采用TCP協(xié)議的ICQ類軟件快。當(dāng)然,UDP協(xié)議優(yōu)點(diǎn)突出,缺點(diǎn)也很明顯:UDP包的傳送是不可靠的傳輸,它不象TCP一樣有包重傳等機(jī)制,因此采用UDP協(xié)議的信息在傳送過程中很容易丟失,這樣就需要輔助的算法實(shí)現(xiàn)包重傳機(jī)制以保證信息不會(huì)丟失,而QQ服務(wù)器的負(fù)荷非常重,因此在QQ 99b 0425之前我們只是在客戶端到客戶端之間傳送消息時(shí)采用了這個(gè)輔助的機(jī)制,當(dāng)消息在客戶間直接傳送無法到達(dá)時(shí)就需要通過服務(wù)器來中轉(zhuǎn),由于服務(wù)器端在老版本的時(shí)候迫于負(fù)荷過重的壓力沒有對(duì)主動(dòng)發(fā)往客戶端的信息進(jìn)行傳輸控制,因此在老版本的時(shí)候容易造成通過服務(wù)器中轉(zhuǎn)的信息丟失的現(xiàn)象。   
        在QQ99c 0725之后我們單獨(dú)設(shè)立出了幾臺(tái)專用的服務(wù)器采用包重傳機(jī)制來中轉(zhuǎn)消息(僅限于99c之間傳遞的消息),確保通過服務(wù)器轉(zhuǎn)發(fā)的消息也能夠發(fā)送到對(duì)方的QQ。   
        從QQ0410開始我們將客戶端到服務(wù)器之間的信息傳送使用了128位的密鑰進(jìn)行了加密,大大地提高了QQ的安全性,從0725版本以后QQ 我們對(duì)客戶端到客戶端的信息傳送也采用了同樣的算法進(jìn)行加密,這樣就可以基本杜絕可能存在的信息炸彈、信息偽裝、信息截獲等隱患。   
        特別需要說明的是我們的加密模式是完全按照公開源代碼的方式來設(shè)計(jì)的,也就是說即使破解者獲得了全部的加密算法也依然無法對(duì)其他用戶的安全構(gòu)成威脅,相信隨著新版的不斷推出,QQ將會(huì)變得越來越安全,廣大QQ用戶也可以更加放心地使用我們的產(chǎn)品了。
OICQ服務(wù)器系統(tǒng)通訊協(xié)議 
協(xié)議說明: 
協(xié)議由報(bào)文頭(T)+發(fā)送者(T)+接收者(T)+報(bào)文類型(T)+報(bào)文長(zhǎng)度(L)+報(bào)文內(nèi)容組成 
發(fā)送者和接收者是系統(tǒng)內(nèi)的程序種類,OICQ服務(wù)器0x01,傳真服務(wù)器0x02,WEB服務(wù)器0x03,打印服務(wù)器是0x04,聊天服務(wù)器是0x05,OICQ用戶是0x0A。 
OICQ用戶到OICQ服務(wù)器的通訊協(xié)議 引導(dǎo)符 (0x81+0x0A+0x01) 
報(bào)文類型 報(bào)文內(nèi)容 報(bào)文說明 
0x01 昵稱(S)+肖像(M)+用戶密碼(S)+性別(T)+年齡(T)+真實(shí)姓名(S)+國家/地區(qū)(T)+省(T)+市(S)+地址(S)+郵編(S)+學(xué)歷(T)+畢業(yè)院校(S)+職業(yè)(T)+電話(S)+尋呼(S)+電郵(S)+愛好(S)+說明(S)+身份驗(yàn)證(T)新用戶注冊(cè),身份驗(yàn)證用于當(dāng)有人要將他加入好友時(shí)詢問是否允許 
0x02 服務(wù)號(hào)(L)+密碼(S)+注冊(cè)方式(T)老用戶注冊(cè),方式分為0正常,1隱身 
0x03 服務(wù)號(hào)(L)+對(duì)方服務(wù)號(hào)(L)+內(nèi)容(S) 發(fā)送信息到某人 
0x04 服務(wù)號(hào)(L)+組號(hào)(L)+內(nèi)容(S) 廣播信息,組號(hào)=0為全體 
0x05 服務(wù)號(hào)(L)+朋友服務(wù)號(hào)(L) 查看朋友資料 
0x06 服務(wù)號(hào)(L)+組名稱(S) 增加組 
0x07 服務(wù)號(hào)(L)+組編號(hào)(T)+組名稱(S) 修改組名稱 
0x08 服務(wù)號(hào)(L)+組編號(hào)(T) 刪除組 
0x09 服務(wù)號(hào)(L)+移動(dòng)人數(shù)(T)+{朋友服務(wù)號(hào)(L)+目的組號(hào)(T)} 移動(dòng)組成員 
0x0a 服務(wù)號(hào)(L)+起始編號(hào)(L)+回傳個(gè)數(shù)(T)+查找標(biāo)志(T) 看誰在線上 
查找標(biāo)志 1=向小找 2=向大找 
0x0b 服務(wù)號(hào)(L)+SQL語句(S) 自定義查找 
0x0c 服務(wù)號(hào)(L)+朋友服務(wù)號(hào)(L) 增加好友 
0x0d 服務(wù)號(hào)(L)+朋友服務(wù)號(hào)(L)+加入原因(S) 請(qǐng)求加入好友 
0x0e 服務(wù)號(hào)(L)+朋友服務(wù)號(hào)(L) 刪除好友 
0x10 服務(wù)號(hào)(L)+顯示模式(T) 更改顯示方式 1上線2隱藏3免打擾4離線 
0x11 服務(wù)號(hào)(L)+監(jiān)視服務(wù)號(hào)(L) 監(jiān)視某人談話 
0x12 服務(wù)號(hào)(L)+昵稱(S)+肖像(M)+用戶密碼(S)+性別(T)+年齡(T)+真實(shí)姓名(S)+國家/地區(qū)(T)+省(T)+市(S)+地址(S)+郵編(S)+學(xué)歷(T)+畢業(yè)院校(S)+職業(yè)(T)+電話(S)+尋呼(S)+電郵(S)+愛好(S)+說明(S)+身份驗(yàn)證(T)更改用戶基本信息 
0x13 服務(wù)號(hào)(L)+朋友服務(wù)號(hào)(L)+文件名(S)+文件長(zhǎng)度(L) 請(qǐng)求發(fā)送文件 
0x14 服務(wù)號(hào)(L)+朋友服務(wù)號(hào)(L)+允許/拒絕 是否允許發(fā)送文件 
0x15 服務(wù)號(hào)(L)+朋友服務(wù)號(hào)(L)+文件內(nèi)容(B) 發(fā)送文件 
0x16 服務(wù)號(hào)(L) 連接測(cè)試報(bào)文 
0x17 服務(wù)號(hào)(L)+朋友服務(wù)號(hào)(L)+同意標(biāo)志(T) 應(yīng)答對(duì)方請(qǐng)求加入好友 
0=拒絕 
1=同意 
OICQ服務(wù)器到OICQ的通訊協(xié)議 
報(bào)文類型 報(bào)文內(nèi)容 報(bào)文說明 
0x01 成功/失?。═)+服務(wù)號(hào)(L) 新用戶注冊(cè)結(jié)果返回 
0x02 成功/失?。═)+組個(gè)數(shù)(T)+{組名稱(S)+組編號(hào)(T)+朋友個(gè)數(shù)(T)+{朋友服務(wù)號(hào)(L)+肖像編號(hào)(T)+朋友狀態(tài)(T)+朋友昵稱(S)] 老用戶注冊(cè)結(jié)果返回 
朋友狀態(tài) 
1=上線=2隱藏=3免打擾4離線 
0x03 標(biāo)志(T) + 朋友服務(wù)號(hào)(L)+信息(S)+信息類型(T) 標(biāo)志 1=系統(tǒng) 2=用戶 
發(fā)送消息,服務(wù)號(hào)=0是系統(tǒng)消息 
1=用戶某某已經(jīng)把你加為好友 
2=用戶某某請(qǐng)求你通過身份驗(yàn)證 
3=用戶某某同意了你的驗(yàn)證要求 
4=用戶某某拒絕了你的驗(yàn)證請(qǐng)求 
0x04 成功/失?。═)+朋友服務(wù)號(hào)(L)+昵稱(S)+肖像(M)+性別(T)+年齡(T)+真實(shí)姓名(S)+國家/地區(qū)(T)+省(T)+市(S)+地址(S)+郵編(S)+學(xué)歷(T)+畢業(yè)院校(S)+職業(yè)(T)+電話(S)+尋呼(S)+電郵(S)+愛好(S)+說明(S)朋友信息回送 
0x05 成功/失?。═)+組編號(hào)(T)+組名稱(S) 增加組結(jié)果回送 1/0 
0x06 成功/失敗(T)+組編號(hào)(T)+組名稱(S)修改組名稱結(jié)果回送1/0 
0x07 成功/失?。═)+組編號(hào)(T) 刪除組結(jié)果回送1/0 
0x08 成功/失?。═) 移動(dòng)組成員結(jié)果回送1/0 
0x09 成功/失?。═)+在線個(gè)數(shù)(T)+{服務(wù)號(hào)(L)+昵稱(S)+肖像(M)+?。═)+市(S)} 查找在線人員結(jié)果回送 
0x0a 成功/失?。═)+找到個(gè)數(shù)(T)+{服務(wù)號(hào)(L)+昵稱(S)+肖像(M)+?。═)+市(S)} 自定義查找結(jié)果回送(最多50) 
0x0b 標(biāo)志(T)+朋友服務(wù)號(hào)(L) 增加好友結(jié)果回送標(biāo)志 
0=數(shù)據(jù)庫失敗 
=1成功 
=2需要身份驗(yàn)證 
=3對(duì)方不允許加入 
=4需要身份驗(yàn)證且不在線 
0x0c 朋友服務(wù)號(hào)(L)+昵稱(S)+肖像號(hào)(M)+朋友狀態(tài)(T) 給在線用戶增加好友 
0x0e 成功/失?。═)+朋友服務(wù)號(hào)(L) 刪除好友結(jié)果回送 
0x10 服務(wù)號(hào)(L)+顯示模式(T) 顯示模式回送 =1上線=2隱藏=3免打擾4離線 
0x11 成功/失敗 更改用戶基本信息結(jié)果回送 
0x12 朋友服務(wù)號(hào)(L)+文件名(S)+文件長(zhǎng)度(L) 請(qǐng)求發(fā)送文件 
0x13 朋友服務(wù)號(hào)(L)+允許/拒絕 是否允許發(fā)送文件 1允許 0拒絕 
0x14 朋友服務(wù)號(hào)(L)+文件內(nèi)容(B) 發(fā)送文件 
0x15 朋友服務(wù)號(hào)(L)+當(dāng)前狀態(tài)(T)朋友狀態(tài)回送(系統(tǒng)發(fā)送)=1上線=2隱藏=3免打擾4離線 
0x16 服務(wù)號(hào)(L) 連接測(cè)試