新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > P2P網絡“自由”穿越NAT的“秘密”

        P2P網絡“自由”穿越NAT的“秘密”

        作者: 時間:2013-05-30 來源:網絡 收藏

        穿越的意義:
          
        是為了節省而設計的,但它隱藏了內網機器的地址,“意外”起到了安全的作用。對外不可見,不透明的內部網絡也與互聯網的“公平”應用,“相互共享”的思想所不容,尤其是中“相互服務”的宗旨,所以穿越,讓眾多內部網絡的機器也參與到中的大集體中來,一直是P2P開發者的所希望的。穿越NAT需要借助外部的支持,說白了就是“內外勾結”,騙過NAT。很多成功地實現了這一目標,但還是有一些“遺憾”---并非所有的情況下都可以。由于客戶端是主動登錄P2P網絡才可穿越,所以P2P的方式也沒有違背企業的內部管理原則,畢竟“自由世界”的加入都是自覺自愿的。
          
        NAT原理:
          
        NAT(Network Address Translation)網絡地址轉換/網絡地址翻譯。
          
        工作原理:NAT主要的通過對數據包頭的地址替換來完成內網計算機訪問外網服務的。當內部機器要訪問外部網絡時,NAT設備把內部的IP1與端口號1(網絡層地址與傳輸層地址),轉換成NAT的外部IP2與新的端口號2,再送給外部網絡,數據返回時,再把目的為IP2:端口2的數據包替換為IP1:端口1,送給內網機器。若通訊協議的內容中有的傳遞,如FTP協議,NAT在翻譯時還要注意數據包內涉及協議地址交互的地方也要替換,否則協議就會出現地址混亂。在NAT設備中維護了這個要替換地址的映射表,并根據內部計算機的通訊需求維護該表。外部網絡來數據包能否進入NAT,主要是看是否已經有可映射的表項,若沒有就會丟棄。

        NAT的外部公網地址可以是一個IP,也可以是一個網段,形成地址池。NAT還可以把某個外網地址直接影射給內網的某個服務器,讓外網的用戶可以直接訪問到這臺服務器。NAT的工作的隱藏內網的機器,但允許內網主動打開到外網的通訊“通道”,也就是建立映射表項。
          
        NAT給P2P帶來的問題是:NAT只允許單方面發起連接,通訊的雙方不是平等的,P2P網絡的基礎有了問題,具體的表現為:
          
        內網主機IP是私有的,外部主機看不到,也無法主動發起連接
        即使知道了內網IP,但NAT會丟棄沒有在影射表的數據包
        內網主機可以作為客戶端訪問外網,但不能作為服務器提供服務
          
        當兩個主機都位于各自的NAT之后,要實現P2P的連接,就不僅是誰主動的問題,而是如何解決在兩個NAT上同時有對方映射表項的問題。
        STUN協議(IETF RFC 3489):

        STUN協議是一種通道協議,可以作為正式通訊前的通路建立,它采用的是用戶終端干預的一種方法,可以解決應用協議內部傳遞給NAT帶來的麻煩。用戶通過其他方法得到其地址對應在NAT出口上的對外地址,然后在報文負載中所描述的地址信息就直接填寫NAT上對外地址,而不是內網的私有IP,這樣報文的內容在經過NAT時就按普通的NAT流程轉換報文頭部的IP地址即可,負載內的IP地址信息無需再修改。利用STUN的思路可以穿越NAT。STUN協議是客戶端/服務器協議,分兩種請求方式:一是UDP發送的綁定請求(Binding Requests),二是TCP發送的秘密請求(Shared Secret Requests)。綁定請求用于確定NAT分配的綁定地址。
          
        STUN標準中,根據內部終端的地址(P:p)到NAT出口的公網地址(A:b)的影射方式,把NAT分為四種類型:
          

        p2p機相關文章:p2p原理



        上一頁 1 2 下一頁

        關鍵詞: P2P網絡 NAT IP地址

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 巴林左旗| 西吉县| 娄烦县| 赤壁市| 金溪县| 寿光市| 长汀县| 独山县| 麻城市| 平罗县| 聊城市| 广西| 汝州市| 田阳县| 志丹县| 和林格尔县| 聂拉木县| 黑龙江省| 延寿县| 通河县| 武邑县| 视频| 时尚| 德安县| 文成县| 宝应县| 镶黄旗| 曲阳县| 榕江县| 隆回县| 梅河口市| 兴义市| 宿迁市| 台南县| 汶上县| 滦平县| 庆元县| 荥经县| 汾阳市| 阳谷县| 利川市|