《c# 實現p2p文件分享與傳輸系統》 三、 NAT穿透

      網友投稿 1220 2025-03-31

      上一篇文章介紹了p2p系統Tracker Server和Peer,以及文件描述符,本篇接著講NAT Server的部分。由于p2p網絡中使用udp報文,所以只介紹udp穿透。


      1. NAT類型

      NAT(Network Address Translation,?網絡地址轉換),是指在IP包通過路由設備時,修改其IP地址信息的技術。一般應用是,通過將內網地址轉換為公網地址,從而實現多臺主機使用一個IP地址訪問互聯網,在很多網絡環境中,均可見到。這項技術的好處我們暫且不談,對我們來說它的“壞處”是顯而易見的,因為中間存在了NAT,給我們的p2p網絡中主機之間的通信造成了不小的麻煩。下面開始先簡單了解一下NAT的類型。(這里只做簡單介紹,針對“一對多”的NAT映射。更加詳細、嚴謹的說明,請看Wikipedia和相關文檔 - RFC xxxx。)

      一般來說,可以把它分為“對稱型NAT”和“非對稱型NAT(也叫錐形NAT)”。所謂“對稱”,是指內部地址與不同的外部地址進行通信的時候,NAT為會話綁定不同的IP和端口。

      對于NAT可分為“不限型”、“IP受限型”和“IP-端口受限型”:

      不限:內網主機Peer通過NAT訪問外網Peer1:port1建立了會話,NAT為其分配了ip:port地址,則任何外網主機均可通過ip:port訪問內網主機Peer

      IP受限:內網主機Peer通過NAT與外網Peer1:port1建立了會話,NAT為其分配了ip:port地址,則只有Peer1可以通過ip:port訪問內網主機Peer

      IP-Port受限:內網主機Peer通過NAT與外網Peer1:port1建立了會話,NAT為其分配了ip:port地址,則只有Peer1,且從port1發出的會話,可以通過ip:port訪問內網主機Peer

      正確的判斷NAT類型,在p2p網絡中的NAT穿透中,是很重要的。NAT類型的判斷,是由Stun?Server來實現,據我所知,有現成的,也有開源項目,這里將不做介紹~

      2.?NAT 打洞

      通過以上NAT的特點可知,為了能訪問位于受限NAT后面的內網主機Peer,必須讓該內網主機先主動向自己發送會話。但是,如何通知內網主機來做這件事呢?這就需要借助NAT Server來實現。NAT Server需要保持可以隨時向Peer發送命令的能力,首先就是NAT Server必須位于公網(-_-!),Peer定時向NAT Server發送心跳包。由之前的分析可知,NAT Server可以無障礙的向Peer發送各種指令。如果你對發送心跳包的間隔拿捏不定,不妨設置為10秒。

      下面是NAT Server的基本流程

      1) 外網主機向NAT Server發送打洞請求

      《c# 實現p2p文件分享與傳輸系統》 三、 NAT穿透

      2)?NAT Server向Peer發送打洞命令

      3) Peer向外網主機發送連接報文

      4) NAT為外網主機打開了訪問內網Peer的權限,打洞完成。

      3. 其他

      根據以上的打洞技術,可以在多種NAT情況下實現穿透,但對于部分情況,例如,兩個客戶端都處于受限型NAT后面,而其中又至少有一個處于對稱型NAT后面,這種技術就無能為力了,此時可以采用“地址-端口預測”的方法(據說迅雷使用了這項技術,據說而已),所謂“端口預測”,是猜測NAT給內網主機分配地址和端口的算法,比如這篇文章的第一幅圖里,ip1:port1和ip2:port2,ip1和ip2,port1和port2很可能在數值上相差不遠,比如可能是61.22.3.1:13304,?61.22.3.1:13305,這時,通過多發幾個端口,就有可能實現打通。實在不行,就只能通過服務器中轉了。下面羅列一下在各種NAT情況之下,實現Peer和Peer1之間互聯的方法:

      我們把情況假設在p2p網絡中,Peer1向Peer索取數據

      NAT UDP C#

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:怎么在wps表格中打勾(wps如何在表格打勾)
      下一篇:如何同時查找多項內容(如何同時篩選多項內容)
      相關文章
      亚洲国产日韩一区高清在线 | 亚洲一区二区三区偷拍女厕| 亚洲精品一卡2卡3卡四卡乱码| 亚洲国产美女精品久久| 久久国产亚洲高清观看| 亚洲午夜免费视频| 久久精品九九亚洲精品| 亚洲国产成人私人影院| 亚洲成人中文字幕| 亚洲综合无码一区二区| 久久精品国产亚洲AV大全| 亚洲国产一区二区a毛片| 亚洲综合精品一二三区在线| 亚洲视频一区网站| 亚洲白嫩在线观看| 亚洲国产日韩在线成人蜜芽| 亚洲va精品中文字幕| 中文字幕在线观看亚洲视频| 亚洲一区二区三区丝袜| 亚洲欧美日韩综合久久久| 亚洲欧洲av综合色无码| 理论亚洲区美一区二区三区| 亚洲国产av无码精品| 国产日产亚洲系列最新| 国产精品亚洲片在线| 久久久久亚洲AV成人无码| 亚洲韩国—中文字幕| 亚洲成a人片在线观看中文app| 亚洲婷婷第一狠人综合精品| 亚洲日本天堂在线| 亚洲国产av无码精品| 亚洲精品字幕在线观看| 久久久久久亚洲精品中文字幕| 亚洲综合在线成人一区| 亚洲乱码无限2021芒果| 亚洲国产成人精品无码区花野真一| 精品国产日韩亚洲一区91| 久久久久亚洲AV成人网人人软件| 国产亚洲精品一品区99热| 亚洲男人天堂影院| 亚洲熟妇AV一区二区三区浪潮|