• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            woaidongmao

            文章均收錄自他人博客,但不喜標題前加-[轉貼],因其丑陋,見諒!~
            隨筆 - 1469, 文章 - 0, 評論 - 661, 引用 - 0
            數據加載中……

            SKYPE協議分析

            1、概述

              Skype是由Kazaa2003年發明的基于P2P 技術的VoIP客戶端,用戶可以通過Skype通過互聯網進行語音和文本的傳輸。 Skype的通訊協議是不公開的,而且通訊內容是加過密的,哥倫比亞大學的BasetSchulzrinne完全在實驗的基礎上對Skype的通訊機制 進行分析,通過分析得出的結論主要有三個:

                 1Skype的通話質量較MSNYahoo的即時通信工具要好;

                 2)可以無縫的在NATs和防火墻后使用;

                 3)安裝使用起來非常簡單。

            2Skype的網絡結構

              Skype的節點有兩種:客戶端(ordinary node)和超級節點(super nodeSN)。客戶端必須鏈接到超級節點,并且在Skype的中央服務器登錄。中央服務器保存用戶的用戶名和密碼,完成登錄的認證工作。圖1中的小黑點是客戶端,大黑點是超級節點(用于為其它客戶端提供登錄跳板及廣播服務),灰色的點是Skype的登錄服務器。

              Skype可以看作是一個疊加在互聯網之上的網絡。與以往MSNIM工具最大的不同在于其除了用戶登錄,其余工作基本不依賴中央服務器。 Skype在穿透防火墻通訊時完全使用了Peer to Peer,而沒用到中央服務器。每一個客戶端都維護一個可以到達的主機列表(host cacheHC),包括其IP地址和端口號。

            clip_image001

            Skype的網絡結構 

             

              用戶下載安裝完Skype后,Skype客戶端會發送一段HTTP 1.1的請求到中央服務器,告訴它我裝完了一個什么樣的版本,服務器會返回一個200 OK的信息。客戶端會進行登錄初始化工作,針對三種不同類型的網絡情況有三種不同的登錄方式:

              1)直接有公眾網的IP

              (2)在內部網,可以通過TCP訪問外部網絡

              (3)在內部網,但只能通過有限的幾個端口(例如80443)訪問外部網絡

              Skype在登錄的時候會先使用UDP請求HC中的 IP,如果不行,就用TCP請求HC中的IP及端口,如果還不行。就用TCP請求HC中的 IP80端口,如果又不行,就再請求HC中的IP443端口。如果這時候還不行,那就登錄不了了。整個過程中傳輸的數據量大概在8k-10k,持續的 時間在335秒。

              3Skype的主要組成部分

              3.1 端口

              在Skype的連接屬性對話框中可以設置監聽的端口號,在安裝的時候Skype會隨機的選擇一個端口作為監聽的端口,這一點與HTTP協議等不同,Skype沒有默認的服務端口。同時,它還會打開對80 443端口的監聽。80是常見的HTTP服務默認端口,而443則是HTTPS服務的默認端口。

              3.2 主機列表

              這里的主機指的是可以提供跳板及廣播服務的SNIP地 址和端口號,這是Skype最重要的部分之一,HC中至少要有一個可用的主機地址和端口號。通常它被存儲在注冊表里的 HKEY_CURRENT_USER/SOFTWARE/Skype/PHONE/LIB/CONNEC- TION/HOSTCACHE中。一般情況下,在Skype運行兩天后,HC中的SN地址及對應的端口號會達到約200個。

              3.3 編解碼器

              Skype采用了iLBCiSAC和一個保密的編解碼器,能夠對50-8,000 Hz范圍內的語音信號進行編碼。Global IP Sound已經實現了iLBCiSAC編解碼器,其網站表明了Skype是他們的合作伙伴。由此來看Skype應該是使用了Global IP Sound的編解碼器實現的語音通訊。

              3.4 好友列表

              Skype的好友列表沒有保存在服務器上,而是保存在本地的注冊表中,并進行了加密。這就使得用戶如果更換了另外一臺電腦之后需要重新構建好友列表。

              3.5 加密

              Skype使用AESAdvanced Encryption Standard)加密標準,這也是美國政府使用的一個加密標準。Skype采用了256比特加密,可能的密鑰有1.1×1077個。

              3.6 NAT與防火墻

              Skype應該是使用了STUNTURN協議來檢測所處的NAT及防火墻環境。Skype定期的刷新這些信息,這些信息也是存儲在注冊表中的。與另外一個點對點文件共享系統Kazza不同,普通客戶端無法阻止自己成為Super NodeSN),就是說它隨時可能被征用成為別人登錄服務和廣播服務的提供者,就是類似于BT中的種子提供者的角色。

            4Skype的主要功能

              Skype的功能主要可以分為:初始化,登錄,用戶搜索,呼叫建立與終止,媒體傳輸和狀態消息。

              4.1 初始化

              第一次安裝后,Skype會發送一段HTTP 1.1的請求給中 央服務器,包括關鍵字“installed”以及所裝Skype的版本號。以后的每次登錄Skype都會向中央服務器發送一小段包含關鍵字 “getlatestversion”HTTP 1.1請求,檢查是否有新版本的Skype


              4.2 登錄

              登錄是Skype最重要的功能,如圖2所示。在這個過程中,Skype終端到登錄服務器上驗證用戶名密碼,廣播給在線上的好友及其它節點,檢查 NAT和防火墻的類型,發現擁有公網IP地址的在線Skype節點,這些新發現的節被用于在所在Super Node無法使用后繼續保持本機與Skype網絡的連接。如果HC中所有的節點地址均不可用的話,登錄失敗。通過分析這些登錄失敗的過程,我們可以得出一個完整的Skype登錄過程:

            clip_image002

            Skype的登錄過程 

             

              先發送UDP數據包,如果5秒后沒有響應,就用TCP,發送登錄請求到目標節點的80端口;如果仍然失敗,就通過TCP發送登錄請求到443端 口,等待6秒鐘,如果仍然失敗就顯示無法登錄。整個的登錄過程可以重復4次。連接的對象是保存在本機中Host Cache中的節點列表。

              4.3 用戶搜索

              S kype使用全球索引(Global IndexGI)技術進行用戶搜索,在72小時內登錄過的用戶,無論是處在公眾網還是私有網絡中都能找到。客戶端可以通過發送TCP包向SC發送請求,也可以通過UDP包向其他SC發送查詢請求。SC將結果發回客戶端。

              4.4 呼叫建立與終止

              Skype采用了32kbps的語音編碼以保證語音質量,其信令通過TCP傳遞,而語音數據則通過TCPUDP進行傳輸,信令和語音數據使用 不同的端口號。Skype能夠向好友列表中的用戶發送呼叫請求。為了保證信令傳輸的可靠性,信令始終是通過TCP進行的。如果雙方都是在公眾網中,有獨立的公用IP,那么主叫用戶和被叫用戶通過challenge-response機制直接進行數據交換。如果有一方位于私有網絡或者是防火墻之后,那么私有網絡一方需要首先同公眾網中的至少一個SN建立TCP鏈接,然后由SN進行數據轉發。如果雙方都位于私有網絡中,那么雙方的數據都需要SN進行轉發。

              4.5 媒體傳輸和狀態消息

              如果雙方都位于公眾網中,雙方可以使用UDP包直接進行數據交換。Skype的語音數據包的大小一般是67 bytes,正好是UDP包的凈荷。對于100M bps的以太網來說,每秒可傳送140個語音數據包。一般來說,上下行語音傳輸所需的平均帶寬為5 kbps。如果有其中一方或者雙方都位于私有網絡中,就需要通過TCPSN進行數據交換,由SC充當媒體代理服務器的角色,此時一個語音數據包的大小一般為69 bytes。在可能的情況下,Skype會優先選擇UDP協議進行通信。

              5、結束語

              Skype是第一個利用P2P技術進行語音通信的VoIP工具,能夠提供較好的通話質量。Skype能夠透過防火墻進行無縫通信,安裝使用也很 簡單。隨著互聯網的不斷普及。VoIP技術已經取得了越來越多的應用。有的運營商甚至開始和Skype合作提供語音服務,這是一個新的趨勢。如何在新技術 不斷普及的同時保證運營商在傳統通信網絡中的核心地位,是一個值得研究的課題。

             

             

            posted on 2008-12-27 16:38 肥仔 閱讀(1439) 評論(0)  編輯 收藏 引用 所屬分類: 網絡編程

            国产精自产拍久久久久久蜜| 久久久一本精品99久久精品88| 91精品国产综合久久婷婷| 狠狠色丁香久久婷婷综| 久久精品成人免费国产片小草| 久久天天躁狠狠躁夜夜2020一| 久久国产色AV免费观看| 国产精品xxxx国产喷水亚洲国产精品无码久久一区 | 久久精品国产精品亚洲人人| 久久大香萑太香蕉av| 久久91亚洲人成电影网站| 一级a性色生活片久久无少妇一级婬片免费放| 一本久久a久久精品亚洲| 成人午夜精品久久久久久久小说 | 久久人人爽人人爽人人av东京热| 99久久人妻无码精品系列蜜桃| 日韩精品无码久久一区二区三| 99久久国产热无码精品免费 | 久久中文娱乐网| 久久亚洲AV成人出白浆无码国产| 天天综合久久一二三区| 国产精品成人99久久久久 | 久久99精品免费一区二区| 久久精品无码一区二区无码| 久久成人小视频| 欧美国产成人久久精品| 亚洲伊人久久综合影院| 成人国内精品久久久久影院VR| 国产精品久久久久久| 国产成年无码久久久久毛片| 亚洲香蕉网久久综合影视| 久久精品中文字幕一区| 国产成人精品综合久久久久| 蜜桃麻豆WWW久久囤产精品| 久久伊人五月天论坛| 日韩中文久久| 97久久婷婷五月综合色d啪蜜芽 | 久久精品国产亚洲欧美| 久久精品国产69国产精品亚洲| 久久er热视频在这里精品| 97精品伊人久久久大香线蕉|