欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
即時(shí)通訊軟件架構
2013-09-25 11:51 7043人閱讀 評論(0) 收藏 舉報
分類(lèi):

http://nopainnogain.iteye.com/blog/832017

http://blog.csdn.net/realxie/article/details/7270119

http://zoomq.qiniudn.com/ZQScrapBook/ZqSKM/data/20100325150259/index.html


個(gè)人理解:TCP是天生的長(cháng)連接協(xié)議,主要看其上的協(xié)議

TCP連接一旦建立連接,通信雙方就可以相互發(fā)送信息,可以看做是長(cháng)連接

雖然http也是基于TCP的,但是其在通訊結束之后,瀏覽器就主動(dòng)斷開(kāi)連接,所以看起來(lái)是 request-response的形式



poll方式
poll方式,也稱(chēng)為輪循,是大家都比較熟悉的一種數據同步方式,客戶(hù)端定期去ping查詢(xún)服務(wù)器,確定是否有需要的數據。例如,軟件更新模塊,客戶(hù)端軟件需要定期去查詢(xún)官方網(wǎng)站,判斷當前是否有更新的版本,如果有就提醒用戶(hù)進(jìn)行升級。郵件客戶(hù)端,需要定期查詢(xún)郵件服務(wù)器,查詢(xún)是否有新的郵件。RSS閱讀器,也是需要不斷的查詢(xún)r(jià)ss地址的狀態(tài),如果有更新,就將數據拿回來(lái)。

當服務(wù)器沒(méi)有數據的時(shí)候,poll方式會(huì )浪費大量的帶寬。 為了降低帶寬,通常是采用減低poll的頻率來(lái)實(shí)現的,這就導致了消息的長(cháng)延遲,實(shí)時(shí)性不高。像gmail的POP3郵件檢查間隔從10分鐘到1小時(shí)不等。

push方式
poll的問(wèn)題在于很多情況下,通信信道是單向的。為了解決poll的問(wèn)題,可以將通信信道設計為雙向的,這樣就可以服務(wù)器采用push的方式主動(dòng)向客戶(hù)端進(jìn)行數據同步了。雙向通信信道設計,考慮到要穿透NAT和防火墻,很多實(shí)現采用長(cháng)連接。例如各種IM的實(shí)現:MSN是TCP的長(cháng)連接,QQ是UDP模仿的長(cháng)連接,GTALK是HTTP模仿的長(cháng)鏈接。

push方式,服務(wù)器主動(dòng)向客戶(hù)端推送數據。當前實(shí)現push方式有兩種方法:
1. 客戶(hù)端首先連接到服務(wù)器,并維持長(cháng)連接
2. 服務(wù)器能夠直接訪(fǎng)問(wèn)到客戶(hù)端,不需要長(cháng)連接
在國內NAT和firewall遍地都是的情況下,第2種方法不是很可行,但是對于一些企業(yè)應用,這種方法還是不錯的,比如后面提到的pubsubhubbub。

但是push方式,通常需要長(cháng)連接,對于服務(wù)器端其實(shí)也是一個(gè)不小的壓力,雖然現在C10K問(wèn)題得到了比較好的解決,但是對于一些大規?;ヂ?lián)網(wǎng)應用來(lái)講,用戶(hù)數是數以?xún)|計的,單單是維持TCP連接,就需要太多的服務(wù)器。因此,除了一些實(shí)時(shí)性要求比較高的應用,現在push方式使用的范圍還不是很廣,例如push方式在IM、服務(wù)器監控等領(lǐng)域都有應用。

下面選取這兩天看的兩個(gè)東東,來(lái)理解一下poll和Push。
XMPP
xmpp類(lèi)似于email系統,將一個(gè)消息從一個(gè)JID送達到另一個(gè)JID。xmpp通常被用作im,那么它是如何實(shí)現實(shí)時(shí)消息傳送的呢。我們接下來(lái)討論的BOSH技術(shù)就是解決這個(gè)問(wèn)題的。BOSH也就是Bidirectional-streams Over Synchronous HTTP,在HTTP上模擬長(cháng)連接,gtalk就是用的這種方法。
BOSH技術(shù)能夠同時(shí)減小網(wǎng)絡(luò )帶寬和減小客戶(hù)端響應的時(shí)間。其方案是對客戶(hù)端的請求連接管理器不給于返回直到數據已經(jīng)就緒,當客戶(hù)端收取連接管理器返回的數據會(huì )向連接管理器發(fā)送下一個(gè)請求,于是連接管理器總是保持著(zhù)一個(gè)客戶(hù)端的請求,當服務(wù)器端數據就緒的時(shí)候,可以將數據封裝在請求的響應包中,“推送”給客戶(hù)端。
如果雙向連接長(cháng)時(shí)間沒(méi)有數據,連接管理器負責給客戶(hù)端發(fā)送一個(gè)空包,空包觸發(fā)客戶(hù)端發(fā)送新的請求,連接管理器通過(guò)這種機制判斷連接是否已經(jīng)中斷,由于BOSH不是輪詢(xún)的機制,帶寬消耗比標準的TCP連接大不了多少。


由于大多數的客戶(hù)端不支持HTTP的Pipeling(單一的連接上承載并發(fā)的請求),于是,客戶(hù)端必須從第二條HTTP連接發(fā)送消息。當第二條HTTP連接有新的請求發(fā)送的時(shí)候,連接管理器將第一條連接中的請求返回,即便此時(shí)第一條連接中的返回的是空數據包。這樣做的原因是讓客戶(hù)端有需要的話(huà)可以發(fā)送新的請求過(guò)來(lái)??蛻?hù)段同一時(shí)間最多只能保持兩條HTTP連接,否則的話(huà),客戶(hù)端必須等待舊的請求處理完之后才能發(fā)送新的請求

在網(wǎng)絡(luò )經(jīng)常中斷的環(huán)境下,BOSH退化成每個(gè)數據請求一個(gè)新HTTP連接。然而,在通常情況下,網(wǎng)絡(luò )環(huán)境良好,客戶(hù)端可以使用http/1.1,這個(gè)時(shí)候,一個(gè)Session包含兩個(gè)TCP長(cháng)連接,所有的請求都在這兩個(gè)長(cháng)連接上傳輸?;旧先魏螘r(shí)候,客戶(hù)端通過(guò)一條連接能夠推送數據到服務(wù)器,與此同時(shí),服務(wù)器端可以“推送”數據到客戶(hù)端。值得注意的是,這兩條長(cháng)連接的角色在客戶(hù)端每發(fā)送一次請求則角色轉換一次。

盡管大多數時(shí)間可以隨時(shí)推送數據到對端,但是,如果一方剛剛推送完數據,則需要等一個(gè)網(wǎng)絡(luò )來(lái)回的時(shí)間才能推送下一個(gè)數據。




pubsubhubbub
pubsubhubbub是Google的工程師開(kāi)發(fā)的一種協(xié)議,可以在A(yíng)TOM和RSS更新的時(shí)候,訂閱者能實(shí)時(shí)得到更新,實(shí)現一種基于RSS Feed的類(lèi)似Twitter的實(shí)時(shí)效果。
PubSubHubbub 協(xié)議在供稿網(wǎng)址內容更新后,能接近即時(shí)的得到通知(通過(guò)webhook回調)。sub(訂閱者)向要訂閱的RSS中指定的hub進(jìn)行注冊,hub和pub(發(fā)布者)之間通過(guò)poll和push等方式同步數據,然后hub向已經(jīng)注冊的sub推送更新后的數據。
這樣,就能夠實(shí)時(shí)的得到RSS的更新,而且避免了sub不斷輪循pub,節省了帶寬。但是,這有一個(gè)缺點(diǎn),就是hub向sub推送消息,就回到最初我們討論的兩種方法,現在pubsubhubbub中sub大都要求為公網(wǎng)可訪(fǎng)問(wèn),但是對于一些企業(yè)應用,像google reader,這樣做還是會(huì )節省很大帶寬的。

PubSubHubbub 協(xié)議概述如下:
1. 一個(gè)供稿網(wǎng)址( “主題” )通過(guò)<link rel="hub" ...> 標簽在其Atom或RSS的XML文件中聲明其Hub server (樞紐服務(wù)器) 。這個(gè) Hub(s) 可以由feed的發(fā)布者運行,也可以是一個(gè)任何人都可以使用得社區 Hub (community hub)。
2. 一個(gè)訂閱者(對某個(gè)主題有興趣的服務(wù)器) ,首先正常的抓取Atom網(wǎng)址。如果Atom檔案聲明它是 Hub ,訂閱者就可以避免重復查看網(wǎng)址,而是在feed的 Hub 注冊和訂閱更新。
3. 訂閱者通過(guò)主題的URL的聲明的 Hub 訂閱這個(gè)主題。
4. 當作者更新主題時(shí),Hub 被告知發(fā)生了一個(gè)更新。
5. 之后 Hub 有效提取 feed 然后同時(shí)將新更改后的內容廣播向所有訂閱的用戶(hù)。


不管UDP還是TCP,最終登陸成功之后,QQ都會(huì )有一個(gè)TCP連接來(lái)保持在線(xiàn)狀態(tài)。這個(gè)TCP連接的遠程端口一般是80,采用UDP方式登陸的時(shí)候,端口是8000。因此,假如你所在的網(wǎng)絡(luò )開(kāi)放了80端口(80端口是最常用端口。。就是通常訪(fǎng)問(wèn)Web的端口,禁掉它的話(huà),你的網(wǎng)絡(luò )對你來(lái)說(shuō)價(jià)值已經(jīng)不大了),但沒(méi)有屏蔽騰訊的服務(wù)器IP,恭喜你,你是可以登陸成功QQ的。

二、聊天消息通信。

 

    采用UDP協(xié)議,通過(guò)服務(wù)器中轉方式。因此,現在的IP偵探在你僅僅跟對方發(fā)送聊天消息的時(shí)候是無(wú)法獲取到IP的。大家都知道,UDP 協(xié)議是不可靠協(xié)議,它只管發(fā)送,不管對方是否收到的,但它的傳輸很高效。但是,作為聊天軟件,怎么可以采用這樣的不可靠方式來(lái)傳輸消息呢?于是,騰訊采用了上層協(xié)議來(lái)保證可靠傳輸:如果客戶(hù)端使用UDP協(xié)議發(fā)出消息后,服務(wù)器收到該包,需要使用UDP協(xié)議發(fā)回一個(gè)應答包。如此來(lái)保證消息可以無(wú)遺漏傳輸。之所以會(huì )發(fā)生在客戶(hù)端明明看到“消息發(fā)送失敗”但對方又收到了這個(gè)消息的情況,就是因為客戶(hù)端發(fā)出的消息服務(wù)器已經(jīng)收到并轉發(fā)成功,但客戶(hù)端由于網(wǎng)絡(luò )原因沒(méi)有收到服務(wù)器的應答包引起的。

 

三、文件/自定義表情傳送。

 

    大家都知道,QQ可以傳送文件,可以發(fā)送自定義表情。先說(shuō)官方表情。官方表情實(shí)際發(fā)送的是命令字,而沒(méi)有發(fā)送表情??蛻?hù)端收到命令字后,會(huì )自動(dòng)解釋為對應的表情。因此,QQ2008正式版的客戶(hù)端發(fā)出的新版表情,在2007beta4及以前的版本無(wú)法找到相對應的表情,就無(wú)法解釋?zhuān)吹降木蜁?huì )是空白信息,但查聊天記錄就會(huì )有[表情]字樣。

    自定義表情的傳送是以文件傳輸方式進(jìn)行的。

    下面說(shuō)文件傳輸方式:A要向B發(fā)送一個(gè)文件,于是發(fā)出一個(gè)文件傳送請求。服務(wù)器收到這個(gè)文件傳送請求后,轉發(fā)給B,同時(shí)或者在B應答后,將A的IP地址同時(shí)發(fā)送給B。B這個(gè)時(shí)候就得到了A的真實(shí)IP。這里的IP是你的本機IP。也就是說(shuō),如果A處在內網(wǎng),B得到的地址就是一個(gè)內網(wǎng)地址。B得到了A的地址之后,就會(huì )嘗試去連接A。如果B也處于內網(wǎng),那么,顯然A跟B之間的連接是無(wú)法建立的。這個(gè)時(shí)候,客戶(hù)端就會(huì )請求服務(wù)器進(jìn)行文件中轉。因為服務(wù)器具有公網(wǎng) IP,處在內網(wǎng)的A跟B都是可以連接到服務(wù)器的,于是,A跟B的文件傳送就通過(guò)服務(wù)器中轉的方式,順利進(jìn)行。(注:服務(wù)器文件中轉使用443端口)

 

*   注:什么是內網(wǎng)、公網(wǎng)

    內網(wǎng)、公網(wǎng)是兩種Internet的接入方式。

    內網(wǎng)接入方式:上網(wǎng)的計算機得到的IP地址是Inetnet上的保留地址,保留地址有如下3種形式:

   10.x.x.x

   172.16.x.x至172.31.x.x

   192.168.x.x

    內網(wǎng)的計算機以NAT(網(wǎng)絡(luò )地址轉換)協(xié)議,通過(guò)一個(gè)公共的網(wǎng)關(guān)訪(fǎng)問(wèn)Internet。

    內網(wǎng)的計算機可向Internet上的其他計算機發(fā)送連接請求,但Internet上其他的計算機無(wú)法向內網(wǎng)的計算機發(fā)送連接請求。

    公網(wǎng)接入方式:上網(wǎng)的計算機得到的IP地址是Inetnet上的非保留地址。公網(wǎng)的計算機和Internet上的其他計算機可隨意互相訪(fǎng)問(wèn)。

 

    所以,如果一個(gè)局域網(wǎng)只開(kāi)放80端口,QQ是可以登陸成功的,也可以進(jìn)行聊天。但傳送文件也是不可以的,除非你們都在同一個(gè)內網(wǎng)。如果局域網(wǎng)還同時(shí)開(kāi)放443端口,那么,恭喜你,QQ的功能你都可以正常使用。

 

 

QQ是不是TCP和UDP一起用?如果用UDP,如何做到信息的可靠發(fā)送? 

答Q即可以使用TCP也可以使用UDP,但QQ默認是使用UDP協(xié)議,因為UDP協(xié)議消耗資源小,發(fā)送速度快,但當UDP協(xié)議不能正常轉發(fā)的時(shí)候,就會(huì )采用TCP協(xié)議進(jìn)行發(fā)送. 

而信息的可靠發(fā)送是通過(guò)各種驗證機制來(lái)完成的,這一點(diǎn)你可以去GOOGLE之類(lèi)的網(wǎng)站去搜索下. 

 

QQ用的是UDP打洞技術(shù)還是HTTP遂道? 

答:發(fā)送消息的時(shí)候是UDP打洞,登陸的時(shí)候使用HTTP~因為登陸服務(wù)器其實(shí)就是一個(gè)HTTP服務(wù)器,只不過(guò)不是常用的那些,那個(gè)服務(wù)器是TX自行開(kāi)發(fā)的

 

因為用戶(hù)一般都是在局域網(wǎng)內,地址都為私有IP,IM服務(wù)器是如何將信息轉發(fā)到用戶(hù)的? 

答:如果使用TCP就沒(méi)什么好說(shuō)了~由內網(wǎng)向外網(wǎng)連接,只要能夠連接上進(jìn)行握手了,消息就可以暢通無(wú)阻的進(jìn)行發(fā)送了.如果使用UDP的話(huà),就是使用的打洞技術(shù)了,只要通道打通了,發(fā)送消息基本和TCP沒(méi)什么區別,要做的只是維護消息的完整性而已.

 

 

QQ是一個(gè)基于TCP/UDP協(xié)議的通訊軟件,而MSN是基于TCP協(xié)議的通訊軟件。

 

那么QQ是如何通訊的呢?在TCP/IP協(xié)議中,唯一標識一個(gè)應用進(jìn)程的是socket,它通過(guò)網(wǎng)絡(luò )層的IP地址和傳輸層的端口號來(lái)實(shí)現,對與同一個(gè)IP地址的內部網(wǎng)絡(luò ),通過(guò)不同的端口號來(lái)標識不同的QQ進(jìn)程;當你登陸QQ游戲服務(wù)器的時(shí)候,服務(wù)器會(huì )保留你的保留IP地址和端口號信息,并在你的好友的QQ進(jìn)程中進(jìn)行列表顯示,然后兩個(gè)進(jìn)程就可以通信了。 

  通常,發(fā)送文件的計算機首先要通過(guò)消息服務(wù)器將其IP地址發(fā)送給接收計算機,當接收計算機同意接收的確認消息反饋到消息服務(wù)器后,消息服務(wù)器將據此設置好文件傳輸對話(huà)。隨即,發(fā)送計算機與接收計算機就會(huì )在確定好的端口范圍內,建立起TCP或UDP連接開(kāi)始文件的檢索與傳輸。 

  在默認狀態(tài)下,QQ優(yōu)先采用了UDP(User Data Protocol,用戶(hù)數據報協(xié)議)協(xié)議傳送數據,而對可靠性要求高的數據通訊系統往往使用TCP協(xié)議傳輸數據。與TCP協(xié)議不同,UDP協(xié)議并不提供數據傳送的驗證機制——在整個(gè)文件傳輸過(guò)程中如果出現數據報的丟失,協(xié)議本身并不能作出任何的檢測或提示。因此,通常人們把UDP協(xié)議稱(chēng)為不可靠的傳輸協(xié)議。 

  UDP協(xié)議適用于無(wú)須應答、要求時(shí)效的軟件使用,這樣的設計正好與QQ追求的目標相符,所以QQ優(yōu)先使用了此協(xié)議進(jìn)行一切功能應用。但是,由于  UDP協(xié)議具有不可靠性,常會(huì )因種種原因導致消息或數據的發(fā)送失?。ê芏鄷r(shí)候會(huì )發(fā)現發(fā)送文件給對方接收時(shí),對方根本收不到要求接收文件的消息?;蚴前l(fā)送聊天消息時(shí),對方根本沒(méi)有收到過(guò)消息)。顯然,UDP協(xié)議由于排除了信息可靠傳遞機制,將安全和排序等功能移交給上層應用來(lái)完成,極大降低了執行時(shí)間,使速度得到了保證。QQ在數據傳輸上更注重實(shí)際性能,為了獲得更好的使用效果,往往可以犧牲一定的可靠性。因此,使用QQ來(lái)傳輸數據,在很多時(shí)候就成了一個(gè)“不錯”的選擇。 

  一般內網(wǎng)傳輸首選QQ,速度最快,QQ的文件傳輸是直接個(gè)人對個(gè)人,采用P2P的傳輸方式,具有不需中轉的優(yōu)勢,而且服務(wù)器都在國內,傳輸性能要高于外國IM軟件。





1
0

我的同類(lèi)文章

更多文章
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
分析QQ微信使用的是UDP還是TCP協(xié)議
為什么聊天軟件一般采用UDP協(xié)議
網(wǎng)絡(luò )中出現TCP、UDP粘包、分包的兩點(diǎn)解決辦法
Socket 與 Http區別 優(yōu)缺點(diǎn)及應用場(chǎng)景
DNS用的是TCP協(xié)議還是UDP協(xié)議
從MSN和QQ文件傳輸速度說(shuō)開(kāi)去
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久