4、Skype的主要功能
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登入過程:
圖2 Skype的登入過程
先發送UDP資料包,如果5秒後沒有響應,就用TCP,發送登入請求到目標節點的80連接埠;如果仍然失敗,就通過TCP發送登入請求到443連接埠,等待6秒鐘,如果仍然失敗就顯示無法登入。整個的登入過程可以重複4次。串連的對象是儲存在本機中Host Cache中的節點列表。
4.3 使用者搜尋
Skype使用全球索引(Global Index,GI)技術進行使用者搜尋,在72小時內登入過的使用者,無論是處在公眾網還是私人網路中都能找到。用戶端可以通過發送TCP包向SC發送請求,也可以通過UDP包向其他SC發送查詢請求。SC將結果發回用戶端。
4.4 呼叫建立與終止
Skype採用了32kbps的語音編碼以保證語音品質,其信令通過TCP傳遞,而語音資料則通過TCP和UDP進行傳輸,信令和語音資料使用不同的連接埠號碼。Skype能夠向好友名單中的使用者發送呼叫請求。為了保證信令傳輸的可靠性,信令始終是通過TCP進行的。如果雙方都是在公眾網中,有獨立的公用IP,那麼主叫使用者和被叫使用者通過challenge-response機制直接進行資料交換。如果有一方位於私人網路或者是防火牆之後,那麼私人網路一方需要首先同公眾網中的至少一個SN建立TCP連結,然後由SN進行資料轉寄。如果雙方都位於私人網路中,那麼雙方的資料都需要SN進行轉寄。
4.5 媒體傳輸和狀態訊息
如果雙方都位於公眾網中,雙方可以使用UDP包直接進行資料交換。Skype的語音資料包的大小一般是67 bytes,正好是UDP包的淨荷。對於100M bps的乙太網路來說,每秒可傳送140個語音資料包。一般來說,上下行語音傳輸所需的平均頻寬為5 kbps。如果有其中一方或者雙方都位於私人網路中,就需要通過TCP同SN進行資料交換,由SC充當媒體Proxy 伺服器的角色,此時一個語音資料包的大小一般為69 bytes。在可能的情況下,Skype會優先選擇UDP協議進行通訊。
5、結束語
Skype是第一個利用P2P技術進行語音通訊的VoIP工具,能夠提供較好的通話品質。Skype能夠透過防火牆進行無縫通訊,安裝使用也很簡單。隨著互連網的不斷普及。VoIP技術已經取得了越來越多的應用。有的電訊廠商甚至開始和Skype合作提供Voice Messaging Service,這是一個新的趨勢。如何在新技術不斷普及的同時保證電訊廠商在傳統通訊網路中的核心地位,是一個值得研究的課題。