qq原理

 

一、登陸。
不管UDP還是TCP,最終登陸成功之後,QQ都會有一個TCP連接來保持在線狀態。這個TCP連接的遠程端口一般是80,採用UDP方式登陸的時候,端口是8000。因此,假如你所在的網絡開放了80端口(80端口是最常用端口。。就是通常訪問Web的端口,禁掉它的話,你的網絡對你來說價值已經不大了),但沒有屏蔽騰訊的服務器IP,恭喜你,你是可以登陸成功QQ的。
二、聊天消息通信。
採用UDP協議,通過服務器中轉方式。因此,現在的IP偵探在你僅僅跟對方發送聊天消息的時候是無法獲取到IP的。大家都知道,UDP 協議是不可靠協議,它只管發送,不管對方是否收到的,但它的傳輸很高效。但是,作爲聊天軟件,怎麼可以採用這樣的不可靠方式來傳輸消息呢?於是,騰訊採用了上層協議來保證可靠傳輸:如果客戶端使用UDP協議發出消息後,服務器收到該包,需要使用UDP協議發回一個應答包。如此來保證消息可以無遺漏傳輸。之所以會發生在客戶端明明看到“消息發送失敗”但對方又收到了這個消息的情況,就是因爲客戶端發出的消息服務器已經收到並轉發成功,但客戶端由於網絡原因沒有收到服務器的應答包引起的。

三、文件/自定義表情傳送。
大家都知道,QQ可以傳送文件,可以發送自定義表情。先說官方表情。官方表情實際發送的是命令字,而沒有發送表情。客戶端收到命令字後,會自動解釋爲對應的表情。因此,QQ2008正式版的客戶端發出的新版表情,在2007beta4及以前的版本無法找到相對應的表情,就無法解釋,看到的就會是空白信息,但查聊天記錄就會有[表情]字樣。
自定義表情的傳送是以文件傳輸方式進行的。
下面說文件傳輸方式:A要向B發送一個文件,於是發出一個文件傳送請求。服務器收到這個文件傳送請求後,轉發給B,同時或者在B應答後,將A的IP地址同時發送給B。B這個時候就得到了A的真實IP。這裏的IP是你的本機IP。也就是說,如果A處在內網,B得到的地址就是一個內網地址。B得到了A的地址之後,就會嘗試去連接A。如果B也處於內網,那麼,顯然A跟B之間的連接是無法建立的。這個時候,客戶端就會請求服務器進行文件中轉。因爲服務器具有公網 IP,處在內網的A跟B都是可以連接到服務器的,於是,A跟B的文件傳送就通過服務器中轉的方式,順利進行。(注:服務器文件中轉使用443端口)
* 注:什麼是內網、公網
內網、公網是兩種Internet的接入方式。
內網接入方式:上網的計算機得到的IP地址是Inetnet上的保留地址,保留地址有如下3種形式:
10.x.x.x
172.16.x.x至172.31.x.x
192.168.x.x
內網的計算機以NAT(網絡地址轉換)協議,通過一個公共的網關訪問Internet。
內網的計算機可向Internet上的其他計算機發送連接請求,但Internet上其他的計算機無法向內網的計算機發送連接請求。
公網接入方式:上網的計算機得到的IP地址是Inetnet上的非保留地址。公網的計算機和Internet上的其他計算機可隨意互相訪問。
所以,如果一個局域網只開放80端口,QQ是可以登陸成功的,也可以進行聊天。但傳送文件也是不可以的,除非你們都在同一個內網。如果局域網還同時開放443端口,那麼,恭喜你,QQ的功能你都可以正常使用。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章