專利名稱::一種基于pcp協議的tcpnat穿越方法
技術領域:
:本發(fā)明涉及一種基于PCP(PeercastProtocol)協議的TCPNAT5穿越方法c
背景技術:
:目前有許多P2P視頻播放軟件是基于Peercast開發(fā)實現的,如浙江電信目前使用的Tvants視頻播放軟件,Peercast是由國外開發(fā)的開源P2P流媒體軟件,Peercast自定義了PCP(PeercastProtocol)io協議,Peercast之間的媒體數據和控制消息均通過PCJ3協議傳遞,PCP協議是建立在TCP/UDP傳輸層上的應用層協議,目前PCP協議使用TCP傳輸層協議,在當前Internet網絡環(huán)境中存在大量的NAT(NetworkAddressTranslation)設備,創(chuàng)建了邏輯上分離的區(qū)域,使得處于NAT后的對等節(jié)點不能直接進行連接和通信,因此,在基于15Peercast上開發(fā)的視頻播放軟件都會面臨TCPNAT穿越的問題。
發(fā)明內容本發(fā)明為了解決上述問題,在研究TCPNAT穿越的各種解決方案以及PCP協議的基礎上,提出了一種可靠的基于PCP協議的TCPNAT穿越方法。本發(fā)明利用了TCPNAT穿越實現原理和對PCP協議的擴展,20通過注冊、NAT類型檢測、端口預測、互相交換NAT映射IP地址和Port端口號、發(fā)起連接方打洞以及被連接方穿洞幾個關鍵步驟來實現兩私網內主機之間的連接與通信,其實現原理如下圖所示,其具體過程如下1)、首先由被連接方先連接NAT穿越服務器,建立注冊通道。通過該通道使用標識本機的ID號來完成注冊,注冊完后如果以前沒有進行NAT類型檢測或者發(fā)現NAT配置有變更,則需要進行NAT類型檢測,檢測過程如下5被連接方向NAT穿越服務器連續(xù)發(fā)起四次連接,建立回響通道。NAT服務器通過該通道分別返回四次連接對應的NATN映射IP地址和端口號,被連接方對返回的結果進行分析判斷并做記錄予以保存,檢測完之后等待接收發(fā)起連接方的連接請求;2)、發(fā)起連接方也需要如上述一樣完成注冊、NAT類型檢測并io分析判斷和記錄,接著發(fā)起連接方連接NAT穿越服務器,建立通信通道,發(fā)起連接方通過該通道發(fā)送連接請求;3)、NAT穿越服務器在接收到發(fā)起連接方的連接請求后,分別向發(fā)起連接方和被連接方發(fā)送建立交換通道所需要的IP地址和Port端口號,發(fā)起連接方接收到之后立即進行端口預測并將預測的NATM15映射IP地址和端口號通過交換通道發(fā)送給NAT穿越服務器,被連接方同時也完成同樣的動作。在NAT穿越服務器分別接收到NATM和NATN映射的IP地址和Port端口號之后,通過交換通道分別將NATN映射的IP地址和Port端口號發(fā)送給發(fā)起連接方,將NATM映射的IP地址和Port端口號發(fā)送給被連接方;204)、發(fā)起連接方在收到對方NATN映射的IP地址和Port端口號之后立即向被連接方發(fā)起連接,也即開始打洞。打洞成功后在本地監(jiān)聽,等待被連接方的連接請求;5)、被連接方在接收到對方NATM映射的IP地址和Port端口號之后立即向發(fā)起連接方發(fā)起連接,也即開始穿洞。穿洞成功后,發(fā)起連接方會向被連接方發(fā)送確認ACK包,這樣就實現了雙方的連接和通信。<formula>formulaseeoriginaldocumentpage7</formula><table>tableseeoriginaldocumentpage7</column></row><table>在實際應用中將上述TCPNAT穿越實現原理與PCP擴展協議相結合,就可以實現基于PCP協議的TCPNAT穿越,所謂PCP協議,也就是PeercastProtocol,是Peercast用來在節(jié)點間傳送媒體數據包和各種控制消息所自定義的協議,該協議是建立在TCP/UDP協議上的應用層協議,目前PCP協議使用傳輸層協議,為實現基于PCP協議的TCPNAT穿越需要對PCP協議進行擴展,擴展后的PCP協議棧如下圖所示:PCTHTTP(穿洞消息〕HTTP(打洞消息)HTTP(消息和數據〕TCP/UDPIP一條是打洞消息,另一條是穿PCP擴展協議主要是增加了兩條消息5洞消息,如下所示打洞消息0PENH0LE*HTTP/1.1PEERID:對方主機ID號CHANID:頻道ID號10穿洞消息THROUGHHOLE*HTTP/1.1GROUP:組號HOPS:跳數TTL:延時15DESTID:目的主機ID號FROMID:源主機ID號CHANID:頻道ID號VERSION:版本號這兩條消息被封裝在HTTP協議中分別被單播和廣播發(fā)送-TCPNAT穿越實現原理和PCP擴展協議相結合后,其具體步驟如下節(jié)點A要播放某一頻道時,會向流媒體服務器發(fā)送頻道請求。流媒體服務器收到該請求后,先進行判斷節(jié)點A是否存在防火墻或處于5NATM之后,隨后判斷本機是否可以為該節(jié)點提供媒體數據,如果流媒體服務器不能提供媒體數據,則流媒體服務器將從該頻道的節(jié)點列表中選擇一節(jié)點,如果選中的該節(jié)點也處于NAT或防火墻之后,則向節(jié)點B等發(fā)送廣播穿洞請求,延時N秒后向節(jié)點A單播打洞請求消息,節(jié)點B接收到廣播穿洞請求消息后,判斷該消息是否發(fā)送給本機的,10如果是,則借助NAT穿越服務器完成注冊和NAT類型檢測,之后等待節(jié)點A打洞完成,節(jié)點A接收到打洞請求消息后,借助NAT穿越服務器完成注冊、NAT類型檢測、端口預測、與節(jié)點B互換NAT映射IP地址和Port端口號,之后開始打洞,成功之后在本地進行監(jiān)聽,節(jié)點B在節(jié)點A打洞完成后開始穿洞,也即向節(jié)點A發(fā)起連接,連接建立15后兩節(jié)點之間就可以開始傳輸PCP消息和媒體數據,為了更好的說明這個實現過程,特將本方法繪制成圖,實現過程如下圖所示節(jié)點A升始打洞,打洞f功C開始監(jiān)聽NAT設備M發(fā)送頻近諾求發(fā)送打洞請求流媒體服務器SNAT設備N消息和數一交換^J斷是否可以提供媒休源廣播穿洞*求延時N秒向對力'發(fā)起連接連接逑立消總和數據交換等待對方打洞完成1015其中節(jié)點A和節(jié)點B分別'位于NATM和NATN之后的兩私網內的主機,節(jié)點B和流媒體服務器已經建立連接并已能夠正常發(fā)送和接收消息和媒體數據。本發(fā)明利用TCPNAT穿越實現原理以及對PCP協議的擴展,實現了基于PCP協議的TCPNAT穿越,也即實現了兩私網內主機之間的連接和PCP消息與媒體數據的交換。具體實施方式實施例1假設客戶端A做為發(fā)起連接方,客戶端B做為被連接方,服務端S做為NAT穿越服務器,實現TCPNAT穿越的過程可分為以下五步1)、客戶端B先連接服務端S,建立注冊通道,通過該通道使用標識本機的ID號來完成注冊,注冊完后如果以前沒有進行NAT類型檢測或者發(fā)現NAT配置有變更,則需要進行NAT類型檢測,檢測過程如下客戶端B向服務器S連續(xù)發(fā)起四次連接,建立回響通道,服務器S通過該通道分別返回四次連接對應的NATN映射IP地址和端口號。戶端B等待接收客戶端A的連接請求;52)、客戶端A同樣需要完成注冊、NAT類型檢測并分析判斷和記錄,接著客戶端A連接服務端S,建立通信通道,客戶端通過該通道發(fā)送連接請求;3)、服務端S在接收到客戶端A發(fā)送的連接請求后,分別向客戶端A和客戶端B發(fā)送建立交換通道所需要的IP地址和Port端口號,10客戶端A接收到之后立即進行端口預測并將預測的NATM映射IP和端口號通過交換通道發(fā)送給服務端S,客戶端B也完成同樣的動作,在服務端分別接收到NATM和NATN映射的IP地址和Port端口號之后,通過交換通道分別將NATN映射的IP地址和Port端口號發(fā)送給客戶端A,將NATM映射的IP地址和Port端口號發(fā)送給客戶端B,15這樣就為兩客戶端實現了交換各自NAT映射IP地址和Port端口號的目的;4)、客戶端A在收到對方NATN映射的IP地址和Port端口號之后立即向客戶端B發(fā)起連接,也即開始打洞,打洞成功后在本地監(jiān)聽客戶端B的連接請求;205)、客戶端B在接收到對方NATM映射的IP和Port之后立即向客戶端A發(fā)起連接,也即開始穿洞。穿洞成功后,客戶端A會發(fā)送確認ACK包給客戶端B,這樣雙方的連接就建立起來了,之后就可以通信了。<image>imageseeoriginaldocumentpage12</image>實施例2將上述TCPNAT實現穿越原理與PCP協議相結合來實現TCPNAT穿越,其穿越過程如下圖所示。其中節(jié)點A和節(jié)點B分別位于NATM和NATN之后的兩私網內的主機,S是流媒體服務器,節(jié)點B和流媒體服務器S已經建立連接并已能夠正常發(fā)送和接收消息與媒體數據,實現過程如下當節(jié)點A要播放某一頻道時,會向流媒體服務器S發(fā)送頻道請求。服務器S收到該請求后,先進行判斷節(jié)點A是否存在防火墻或處于NATM之后,隨后判斷本機是否可以為該節(jié)點提供媒體數據。如果服務器S不能提供,則從該頻道的節(jié)點列表中選擇一節(jié)點。如果選中的該節(jié)點也處于NAT或防火墻之后,則向B等節(jié)點發(fā)送廣播穿洞請求。5延時N秒后向節(jié)點A單播打洞請求消息。節(jié)點B接收到廣播穿洞請求消息后,判斷該消息是否發(fā)送給本機的,如果是,則借助NAT穿越服務器完成注冊和NAT類型檢測,之后等待對方打洞完成。節(jié)點A接收到打洞請求消息后,借助NAT穿越服務器完成注冊、NAT類型檢測、端口預測、與節(jié)點B互換NAT映射IP地址和Port端口號,之后開始io打洞,打洞成功之后在本地進行監(jiān)聽。節(jié)點B在節(jié)點A打洞完成后開始穿洞,也即向節(jié)點A發(fā)起連接。連接建立后兩節(jié)點之間就可以傳輸PCP消息和媒體數據。<image>imageseeoriginaldocumentpage13</image>權利要求1.一種基于PCP(PeercastProtocol)協議的TCPNAT(NetworkAddressTranslation)穿越方法,其特征在于包括注冊、NAT類型檢測、端口預測、互相交換NAT映射IP地址和Port端口號、發(fā)起連接方打洞以及被連接方穿洞幾個步驟。2、根據權利要求1所述的一種基于PCP協議的TCPNAT穿越方法,其特征在于包括如下步驟1)、首先由被連接方先連接NAT穿越服務器,建立注冊通道,通過該通道使用標識本機的ID號來完成注冊,注冊完后如果以前沒io有進行NAT類型檢測或者發(fā)現NAT配置有變更,則需要進行NAT類型檢測,檢測過程如下被連接方向NAT穿越服務器連續(xù)發(fā)起四次連接,建立回響通道。NAT穿越服務器通過該通道分別返回四次連接對應的NAT映射IP地址和端口號,被連接方對返回的結果進行分析判斷并做記錄予以保存,15檢測完后,被連接方等待接收發(fā)起連接方的連接請求;2)、發(fā)起連接方也需要如上述一樣完成注冊、NAT類型檢測并分析判斷和記錄,之后發(fā)起連接方連接NAT穿越服務器,建立通信通道。發(fā)起連接方通過該通道發(fā)送連接請求;3)、NAT穿越服務器在接收到發(fā)起連接方的連接請求后,分別向20發(fā)起連接方和被連接方發(fā)送建立交換通道所需要的IP地址和Port端口號,發(fā)起連接方接收到之后立即進行端口預測并將預測的NATM映射IP地址和端口號通過交換通道發(fā)送給NAT穿越服務器,被連接方同時也完成同樣的動作,在NAT穿越服務器分別接收到NATM和NATN映射的IP地址和Port端口號之后,通過交換通道分別將NATN映射的IP地址和Port端口號發(fā)送給發(fā)起連接方,將NATM映射的IP地址和Port端口號發(fā)送給被連接方,這樣就達到了互換NAT映射IP地5址和Port端口號的目的;4)、發(fā)起連接方在收到對方NATN映射的IP地址和Port端口之后立即向被連接方發(fā)起連接,也即開始打洞,打洞成功后在本地監(jiān)聽被連接方的連接請求;5)、被連接方在接收到對方NATM映射的IP地址和Port端口io號之后立即向發(fā)起連接方發(fā)起連接,也即開始穿洞。穿洞成功后,發(fā)起連接方會發(fā)送確認ACK包給被連接方,這樣就實現了兩私網內主機之間的連接。3、一種基于PCP協議的TCPNAT穿越的方法,其特征在于與PCP協議的結合。4、如權利要求3所述的一種基于PCP協議的TCPNAT穿越的方法,其特征在于與PCP協議的結合,其過程如下節(jié)點A和節(jié)點B分別位于NATM和NATN之后的兩私網內的主機,節(jié)點B和流媒體服務器已經建立連接并已能夠正常發(fā)送和接收消息和媒體數據。節(jié)點A要播放某一頻道時,會向流媒體服務器發(fā)送頻道請求,服務器收到該請求后,先進行判斷節(jié)點A是否存在防火墻或處于NATM之后,隨后判斷本機是否可以為該節(jié)點提供媒體數據,如果流媒體服務器不能提供媒體數據,則流媒體服務器將從該頻道的節(jié)點列表中選擇一節(jié)點,如果選中的該節(jié)點也處于NAT或防火墻之后,則流媒體服務器向B等節(jié)點發(fā)送廣播穿洞請求消息,延時N秒后向節(jié)點A單播打洞請求消息,節(jié)點B接收到廣播穿洞請求消息后,判斷該消息是否發(fā)送給本機的,如果是,則通過NAT穿越服務器完成注冊和NAT5類型檢測,之后等待對方打洞完成,節(jié)點A接收到打洞請求消息后,通過NAT穿越服務器完成注冊、NAT類型檢測、端口預測、與節(jié)點B互換NAT映射IP地址和Port端口號,之后開始打洞,成功之后在本地進行監(jiān)聽,節(jié)點B在節(jié)點A打洞完成后開始穿洞,也即向節(jié)點A發(fā)起連接,連接建立后兩節(jié)點之間就可以開始傳輸PCP消息和媒體數據。全文摘要本發(fā)明公開了一種基于PCP(PeercastProtocol)協議的TCPNAT(NetworkAddressTranslation)穿越的方法,本發(fā)明利用NAT類型檢測和端口預測、NAT穿越服務器的設計以及PCP協議擴展這三個關鍵技術,將TCPNAT穿越實現原理與PCP擴展協議相結合,通過注冊、檢測NAT類型、預測端口、互換NAT映射IP地址和Port端口號、發(fā)起連接方打洞以及被連接方穿洞幾個關鍵步驟,實現了兩私網內主機之間的連接和消息與媒體數據的交換。文檔編號H04L12/56GK101374141SQ20071007097公開日2009年2月25日申請日期2007年8月23日優(yōu)先權日2007年8月23日發(fā)明者葉挺群,宋革聯,楊曉波,胡偉中,江袁,邢小良,鄭金榮,金朝暉,煒黃,軒龔申請人:浙江省電信有限公司