tft每日頭條

 > 生活

 > 内網穿透技術詳解

内網穿透技術詳解

生活 更新时间:2024-09-12 05:12:59

内網穿透技術詳解(内網穿透技術一覽)1

先看一個問題

在拉家庭寬帶的時候,直接拉運營商的寬帶有點貴,市場上通常還會有類似于鵬博士,長城寬帶之類的商家,它們價格很低,号稱寬帶速度也很快,你拉還是不拉?

用過這些寬帶的就會知道,便宜其實是付出代價了的:

  • 其一、與電信寬帶相比,鵬博士們的速度肯定是随着整棟大樓使用人數增加而遞減;
  • 其二、這些“鵬博士”寬帶們一般都無法使用P2P軟件,你沒法用BT,電驢,迅雷下片,連想玩個區塊鍊錢包都玩不了。

為什麼P2P軟件沒法用呢,這就涉及到内網穿透的問題,接下來我們來看下目前主流的内網穿透的幾種方式。

一、靜态端口映射

這種方式就是手動在路由器上進行端口映射,例如下圖就是TPLINK路由器将各種常用的服務端口映射到内部一台主機對應的同樣端口上。

内網穿透技術詳解(内網穿透技術一覽)2

  • 優點:
  • 這種方式映射的端口永久有效,除非人為去删除或修改。
  • 缺點:
  • 完全依賴于人工的靜态配置,擴展性極差。
二、UPNP動态端口映射

這種方式,内部主機的程序與路由器通過UPNP協議協商,動态的進行端口映射。這是P2P軟件最主要的内外網穿透方式。家裡用的BT,電驢,迅雷,以及所有的區塊鍊項目都依賴于這個協議動态的做端口映射。

UPNP端口映射的大緻流程:

路由器開啟UPNP服務,向外暴露自己"根設備"的身份

内部的主機的應用程序通過UPNP協議,在本地鍊路網絡中搜索支持端口映射功能的根設備(也就是路由器)

内部主機找到路由器後,通過UPNP協議,向路由器申請創建端口映射規則,将本地端口映射到路由器上。

路由器響應端口映射請求,完成動态端口映射

優點:

可以應用自動與路由器協商完成端口映射過程,無需人工參與。(主流P2P軟件都用這個)

缺點:

路由器可能禁止這個服務,或者沒有這個服務。

三、NAPT打洞

原理:

内網主機往外部主機發送報文後,路由器就建立一個内部主機端口的臨時端口映射(在路由器上留下了一個洞),外部的主機可以通過這個映射的端口将數據發給内部主機。

内部主機往外部設備發報文的,以便外部設備能給内部主機發消息的操作,就稱為"打洞"。

NAPT的類型劃分

第一類: 圓錐型NAT(Cone NAT),也叫非對稱型NAT。圓錐型又可以劃分為以下三種子類型:

1.1 完全錐形NAT (Full Coe NAT)

内網穿透技術詳解(内網穿透技術一覽)3

這種情況下,内網主機用端口2000往外部服務器S1的2000端口發數據後,外部網絡任意主機都可以通過任意源端口通過路由器上這個洞給它發數據了。

例如,圖中主機S1可以通過2000端口,或者3000端口給内部設備發數據;

主機S2雖然沒有得到内部主機主動給它打洞,但是也可以通過任意端口給内網主機發數據。

1.2 地址限制型錐形NAT (Address Restricted Cone NAT)

内網穿透技術詳解(内網穿透技術一覽)4

這種情況下,内網主機使用端口2000往外部服務器S1的2000端口發數據後,S1服務器可以通過任意端口給内網主機發消息,而此時其他主機,如圖中的S2主機就無法再聯通内網主機了。

1.3 端口限制型錐形NAT (Port Restricted Cone NAT)

内網穿透技術詳解(内網穿透技術一覽)5

這種類型的NAT,當内網主機用2000端口往S1的2000端口發消息後,有且僅有S1用2000端口做為源端口給内網主機回消息。如圖中的S1端口通過源端口3000給内網主機回消息時會被路由器阻擋,服務器S2給内網主機發的任何消息都會被阻擋。

我測試過TPLINK路由器,華為路由器,都默認是這種NAT類型(端口限制型圓錐NAT),所以NATP打洞都主要以這種類型為主,打通這種類型NAT,其他的錐形NAT都是可以通的。

第二類:對稱型NAT (Symmetric NAT)

内網穿透技術詳解(内網穿透技術一覽)6

這種類型的NAT,内網主機用端口2000往S1的2000端口發消息後,S1可以通過2000端口給它回複消息,當内網主機再給服務器S1的3000端口發消息時,在路由器上映射的端口号變了,S1此時隻能用端口3000沿着通道給内網主機回消息了。

對稱型NAT和圓錐型NAT中的端口限制型錐形NAT的區别:

端口限制型錐形NAT,用同一個端口給不同的目的IP和端口發消息時,NAT設備上映射的端口号沒變,而對稱型NAT會變成一個新的映射端口,之前的映射端口無效了。

對稱型NAT為什麼難打洞?

對稱型NAT之所以難以打洞,是因為内部主機往指定的目的主機地址和端口發數據後,其在NAT設備上的映射端口就變了,而且這個端口映射的規律,不同廠商的設備不一樣,有些設備映射的規則可能是遞增一個步長,而有些設備直接是随機算法生成的。

NAT打洞方式的優點

打洞協議簡單,編程實現方便。相比UPNP協議,打洞隻需要往外部發數據就可以完成臨時端口的映射。

NAT打洞方式的缺點

打洞建立的端口映射規則是有時效的,為了維護這個端口映射規則,需要定時發心跳包。對稱型NAT,端口映射的規律可能是随機的,打洞過程複雜而且成功率低。

NAT的類型多樣,打洞前,一般需要先測試一下NAT的類型。

四、設置DMZ主機

在很多路由器上,還有一種端口映射:内部網絡中指一台DMZ主機,然後這台DMZ主機所有端口不經映射,完全裸奔,暴露給外部網絡。

内網穿透技術詳解(内網穿透技術一覽)7

優點

配置方便。

缺點

安全性差,隻适合内部隻有一台主機需要對外提供服務的情況。

總結

以上列的都是常用的内網穿透的方法,其實根本還是在于路由器本身上的端口映射,路由器給你映射了端口,外部的設備就能訪問内網的主機,否則就無法訪問。

文章開頭提到的為什麼“鵬博士”之類的寬帶無法使用P2P軟件下片,其實也在于鵬博士的路由器設置了防火牆,打洞你打不通;也沒給你開放UPNP服務,端口映射不了!

感興趣的盆友可以關注我們的微信公衆号“麻辣軟硬件”,歡迎大家在後台留言,和我們溝通交流技術相關話題!

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved