Internet上點對點通訊和穿越各類防火牆及網關實現的幾點可行性分析

轉自:http://hi.baidu.com/helinzi/blog/item/d889650642db267b020881b4.html

 

目 錄
1、 需求 3
2、 目前INTERNET網絡狀況分析 4
3、 針對各種接入方式實現點對點通信的可行性分析 8
4、 平滑地穿越防火牆和NAT還有代理模式的可行性分析 16
5、 總結 18


1、 需求
目前隨着計算機和網絡的普及,人與人之間的聯繫變得更加便捷,但是由於Internet一些先天性的不足,比如說IP地址的缺乏,導致了很多本不必要的問 題,雖然IPv6可以很好的解決這一系列問題,但是在目前整個Internet架構是基於IPv4的形勢下,要想徹底短期內一下子就摒棄IPv4直接全部 採用IPv6那無疑是天方夜譚,雖然IPv6相比IPv4 有很多先天性的優勢,但是實際情況是IPv6已經提出了好多年,但是卻一直遲遲沒有實際採用,相信短期內也不會採用,可能5-10年或者更多時間內這種情 況不會改變,所以必須針對目前的實際情況對各種問題考慮其他的實現方式,來彌補這些不足,針對IP地址短缺的問題先後出現了相應的解決方案,比如說 NAT,代理等等,但是這同時增加了Internet的複雜性,是的很多問題開始暴露出來。
P2P作爲一種新興的趨勢將越來越得到廣泛的應用,在此我們不討論P2P中的P2P運算和網格運算,我們只討論一個簡單點對點的訪問的問 題,Internet的複雜性也增加了這個問題的複雜性,如何才能提供一種方案即不會對現有的Internet造成任何影響,不會增加Internet的 複雜性,不用改動任何現有的設施和企業所採用的Internet訪問方式,又能夠實現我們需要的功能就成爲很多公司關注的焦點,本文討論的範圍涵蓋了公網 IP對公網IP,公網IP對私網IP, 私網IP對公網IP,私網IP對私網IP,所有的實現均基於Internet,均力求在不改變現有任何配置和狀況的前提下平滑地穿越防火牆和NAT還有代 理模式,本文針對這個問題提出一些建設性的建議方向,如有任何異議歡迎來信指正、討論。

2、 目前Internet網絡狀況分析
目前企業和個人用戶或者運營商接入Internet的方式主要有以下幾種:
1、 直接接入Internet骨幹網
此種接入主要見於Internet服務提供商和網絡運營商,基本全部採用公網IP的方式,通過路由器接入Internet,是最簡單的一種方式
2、 frame relay和DDN方式接入
此種方式主要見於一些大中型企業或者政府部門等,實際內部接入Internet的方式等同於下面將要討論的幾種情形
3、MODEM撥號、ISDN、ADSL,CABLE MODEM、公網IP的寬帶接入
這些上網方式都能夠獲得自己的獨立的公網地址,該類用戶比較多見,多用於個人用戶,家庭用戶或者企業用戶
4、通過NAT方式上網
NAT全稱“network address transition”,它是一種局域網地址轉換上網方式,它的最大的特點就是對於被代理端是透明,被代理端上的任何網絡軟件都不用進行額外的設置及工 作。只要能在前一種上網方式上使用的網絡軟件都能在這種方式上使用。沒有互聯網IP地址的ADSL用戶也屬於此類。例如,在使用IE的時候就不用在軟件裏 設置代理,只需在Windows系統中設置好網關及DNS服務器就可以瀏覽網頁了。

NAT主要分爲三類:
a.) 靜態NAT
此種類型的NAT的方式是一個公網地址轉換成一個局域網地址,是一對一的轉換,該局域網地址和公網地址均固定,等同於該機直接擁有一個公網地址,多用於防 火牆後的DMZ區或其他需要對外提供服務的場合,NAT實現中的端口映射屬於該類,只不過將某一固定公網地址的某一個端口映射到某一局域網地址的某個端 口,對於針對該固定公網地址的該端口的訪問請求均轉發到固定的局域網地址的某端口,除此之外任何對該固定公網地址的任何其他端口的訪問請求不會到達該固定 的局域網地址
b.) 動態NAT
該種類型的NAT實現有點類似於靜態的NAT,也是一個公網地址對應一個局域網地址,也就是說也是一對一的關係,但是靜態NAT和動態NAT最大的區別就 在於動態NAT的一對一實現中跟某一個局域網地址對應的公網地址並不是固定的,在該類NAT中NAT轉換器內有一個公網地址池,而該類NAT要做的就是從 該地址池中隨便取出一個公網地址來跟某一個局域網地址對應,這種對應並非固定,而是動態變化的,所以命名爲動態NAT,而且動態NAT中不否認也存在可能 同時有很多局域網地址跟一個公網地址相對應的可能,公網地址的地址池內公網地址的數量相對於局域網地址來說越少,這種可能出現的機率越大,公網地址的地址 池內公網地址的數量相對局域網來說如果大致相當或者要多,這種可能出現的機率就越小,雖然這種可能不會對局域網內的機器訪問Internet帶來任何問 題,但是不可否認這給從Internet上訪問該局域網的機器帶來了困難,這種NAT方式主要運用於網絡運營商,例如長城寬帶等,也有的企業通過該方式讓 局域網內的很多機器共享少數的幾個公網地址來訪問Internet.
c.) NAT實現中的NAPT模式
這種類型的NAT比較多見,NAPT的實現模式是多對一的模式,多個局域網地址同時都對應到一個公網地址,NAPT的實現是一種多對一的實現,它的主要實 現機理就是通過將每個不同的局域網地址分別對應到該公網地址的不同的端口來實現多個局域網地址共享一個公網地址訪問Internet的目的,很多的企業內 部網絡訪問Internet便是採用的這種模式,這種模式很好的解決了IP地址短缺的問題
以上三種NAT針對不同的用戶和不同的業務需求分別有不同的應用。
5、HTTP代理上網(應用層代理)
被代理端與代理服務器通過“HTTP代理協議”進行通迅(具體協議內容可查看相關RFC文檔),代理服務器只對HTTP協議進行代理,其它非HTTP協議 的對外連接都會因爲代理服務器無法解析數據內容而失敗。此種代理方式的安全性最高,對於被代理端來說,幾乎不可能受到來自互聯網的攻擊。但也有很大限制, 被代理端只能瀏覽網頁,象收發郵件,主頁上傳等要用到其它協議而不能實現。(例如:***TP、POP3、FTP等協議)它是“應用層代理”,即只對特定 的協議進行代理,你要使用非特定的協議它根本無法識別。當然還有:***TP代理、FTP代理等也都屬於應用層代理。

6、SOCK4/5代理上網(非協議代理)
被代理端與代理服務器通過“SOCK4/5代理協議”進行通迅(具體協議內容可查看相關RFC文檔)。主要的機理爲被代理端通過代理端訪問外部網絡時,代 理端接受到被代理端的對外部的訪問請求後將以自己的身份對外部網絡發起被代理端的這個請求,請求的結果返回給代理端,然後代理端再把這個結果回傳給被代理 端,至此一個被代理端對外部的訪問過程完畢。SOCK4代理協議可以說是對HTTP代理協議的加強,它不僅是對HTTP協議進行代理,而是對所有向外的連 接進行代理,是沒有協議限制的。也就是說,只要你向外連接,它就給你代理,並不管你用的是什麼協議,極大的彌補了HTTP代理協議的不足,使得很多在 HTTP代理情況下無法使用的網絡軟件都可以使用了。(例如:OICQ、MSN等軟件 )SOCK5代理協議又對前一版進行了修改,增加了支持UDP代理及身份驗證的功能。它不是“協議代理”,所以它會對所有的連接進行代理,而不管用的是什 麼協議。

3、 針對各種接入方式實現點對點通信的可行性分析

針對以上各種Internet的接入方式,實現點對點通信主要可以歸結爲四類方式: 公網IP對公網IP,公網IP對私網IP, 私網IP對公網IP,私網IP對私網IP,下面針對各種情況進行分析.
1. 公網IP對公網IP
這種方式下實現點對點通信很容易,就不再展開討論
2.私網IP對公網IP
該種方式下要實現點對點通信相對來說也比較容易,因爲鑑於socket連接的特性,只要socket連接一點建立,那麼數據的返回和通信將不再是問題,此 類方式唯一涉及到的就是網關或者防火牆的穿越問題,主要針對穿越NAT和代理的問題,這個問題將在下一部分專門進行詳細的分析。
3.公網IP對私網IP
該種情況下實現起來有些難度,想從Internet上訪問一個局域網的機器,不可否認難度比以上兩種情況都要複雜一些,但是並非實現起來就沒有可能,以下就針對幾種解決方案進行可行性分析:
a.) 如果局域網一端網關或防火牆採用VPN模式,那麼經過VPN隧道的封裝之後,用戶毫無疑問可以訪問該局域網內的局域網地址,但是該類方式必須要求用戶的局 域網一端網關或防火牆採用VPN模式,Internet用戶進行VPN網關的撥接建立議後才能夠使用,當然也可以將VPN網關的撥接自動化,在軟件的初始 化過程中自動建立VPN連接,但此類應用範圍太窄,在此不做進一步的詳細討論
b.) 通過端口反彈和隧道封裝,前面已經知道通過Internet訪問局域網雖然不太容易但是從局域網經過網關訪問Internet卻很方便,那麼我們爲什麼不逆轉一下我們的思路?設計的思路如下:
首先這種情形之下我們必須有一臺第三方的服務器這臺服務器不管是從Internet上還是從局域網內通過網關均可以很容易地直接訪問到,然後連接的雙方就 基於這個第三方的服務器交換一些必要的信息,例如每個端點的名稱、公網IP地址、局域網內一方局域網的地址和網關的公網地址、上線時間、在線時長,用戶所 在地、通話狀態、等,連接請求也要遞交到這個第三方的服務器,這個第三方服務器就可以維護一份當前在線的用戶的信息列表,不管是通過局域網連過來的還是從 Internet上直接連過來的,都會有相應的信息,對於要通信的雙方的客戶端的功能除了應該能夠向第三方服務器提供必需的信息之外還要有一個檢測機制, 檢測自己的地址是不是公網IP如果是則向服務器發送了必需的信息之後就在給定的端口如80端口監聽進入的連接,如果發現自己是一個局域網的地址則程序在向 第三方服務器遞交了必須的信息之後通過UDP通告的形式向第三方的服務器通告自己的狀態,並察看有沒有相關的連接請求,若有則主動連接要求建立點對點通信 的有公網地址的一方,服務器接到要求連接方的連接請求之後就將數據庫中連接標誌置1,被連接方在通過UDP通告發現有對自己的連接請求則會主動取得要求連 接方的IP等相關信息,併發起對要求連接方的連接,於是從公網地址要求連接私網地址的請求變相轉化爲沒有問題的從私網地址通過網關連接公網地址,而從上面 的分析這種點對點通信是沒有問題的。HTTP封裝是爲了穿透防火牆的需要,將在下面討論

c.) 通過代理實現兩端都跟第三方的代理服務器建立連接,然後由於socket的特性,連接建立以後兩邊跟這個代理服務器的數據通信均能夠流暢的進行,然後兩端 的通信通過服務器從中間進行中轉,這種方式的缺點就是所有的數據流量都通過第三方服務器中轉,雖然點對點的通信沒有問題,但是服務器的系統資源開銷比較 大,如果點對點通信的用戶過多則但服務器很難承受,必須增加代理服務器的臺數,可以通過一臺中央管理的服務器進行資源調度和分配,採用分佈式的服務器集羣 來解決
d.) 局域網一邊的網關上安裝專用的特製軟件也可以通過Internet直接訪問到局域網內的機器,例如隧道技術或開發自己專用的協議棧,其實VPN的隧道模式 或者傳輸模式均是該方式的一個特例。這種方式需要改動局域網一方現有的網關,或者是在改網關上加裝軟件,這樣公網地址的一方把數據封裝好(封裝的數據中有 足夠多的信息,比如數據本來的端口呀,局域網的一些信息等,這些需要認真考慮),可能會有幾層封裝,進行壓棧操作,在局域網網關接受到數據後收到標識爲公 網一方發的數據包就剝去TCP層,然後一層層地解開,執行出棧操作,然後轉發到相應的局域網目標地址,協議棧是網關之上的。有公網地址一方只要通過第三方 服務器得到局域網一方想關必要信息就能夠連接到網關之後的局域網機器。這種方式是真正意義上的從公網地址訪問局域網地址,但是實現起來代價比較大。
e.) 局域網一方如果是用Liunx或BSD做的網關,則該網關若配製成PPTP或者其他的VPN或者同類模式,則也可以由有公網地址一方直接連接,當然這也需 要通過第三方服務器來得知這邊網關和局域網的地址等信息,有公網地址的一端經過接通VPN模式後可以直接訪問這一方的局域網地址。
f.) 若局域網這一端網關採用了路由模式,還可以考慮另一種方式,就是修改通訊數據包的源路由,通過指定路由尋址的源路由,在路由尋址的路由信息最後加上一條就 可以讓數據通過規定的路由路徑到達局域網的機器,不過採用標準的路由上網的網關不是很多。這種方式通過啓用IP數據包的源路由選擇選項,啓用源路由選項 後,源路由信息指定的路由使數據流能夠越過默認的路由,IP數據包能夠選擇它所希望的到達最終目標的路徑,並且能夠把這種消息公佈給沒一個路由器。
g.) 如局域網一方採用NAT透明代理方式上網則可以通過另一種方式實現這個點對點的通信,局域網一端先對第三方服務器發起一個socket連接,這個第三方服 務器就得到並收集這局域網一邊的socket連接信息,例如socket號,有公網地址的一方通過這個第三方服務器得到局域網一方的socket信息後直 接向局域網一方的網關的該socket發起socket連接,則點對點的通信就可以建立,不過此種方式僅限NAT透明代理模式,而且由於該類連接是非安全 連接,所以不是特別穩定,通過UDP協議往往成功率能夠高一些。
h.)
STUN方式的穿越
STUN的全稱是Simple Traversalof UDP Through Network Address translators,即UDP對NAT的簡單穿越方式。應用程序(即STUN CLIENT)向NAT外的STUN SERVER通過UDP發送請求STUN 消息詢問自身的轉換後地址,STUN SERVER收到請求消息,產生響應消息,響應消息中攜帶請求消息的源端口,即STUN CLIENT在NAT上對應的外部端口。然後響應消息通過NAT發送給STUN CLIENT,STUN CLIENT通過響應消息體中的內容得知其在NAT上對應的外部地址,並且將其填入以後呼叫協議的UDP負載中,告知對端,同時還可以在終端註冊時直接注 冊這個轉換後的公有IP地址,這樣就解決了H.323/MGCP/SIP穿越NAT的通信建立問題以及作爲被叫時的問題。本端的接收地址和端口號爲NAT 外的地址和端口號。由於通過STUN協議已在NAT上預先建立媒體流的NAT映射表項,故媒體流可順利穿越NAT。
需要注意的是,NAT/PAT對於地址轉換關係是有一定生命期的,某個地址轉換後在一段時間內沒有被使用將會被清除,當這個業務流再次出現時,將會建立一 個新的地址轉換關係,這就意味着STUN的詢問過程以及終端的註冊過程都需要再執行一遍才能保證通信的正確。解決這個問題一個比較通行的方案是採用某種方 式保持NAT/PAT的轉換關係,例如在NAT/PAT生命期內重複註冊一次,比如NAT/PAT的生命期是3分鐘,那麼就將註冊重複週期設置爲2分鐘。
另外STUN server並非指一個專用的服務器,而是指一種功能、一個協議,我們可以在softswitch或者任何一個需要此功能的服務器上內置此協議。
NAT可以細分爲幾種操作模式,其中有一種稱爲symmetric NAT(對稱NAT)。所謂對稱NAT是指當私網內的用戶A訪問公網用戶B時,NAT爲A到B的訪問
所形成的地址對應關係只能服務於A與B之間的通信。雖然A已經擁有了公有地址A',但A'並不能爲其它用戶使用以達到與A通信的目的。這是出於安全性考慮的一種設計。一些功能較強的NAT提供這種可選工作模式。
當NAT採用這種對稱模式工作時,STUN的方案就會出現問題。
假 如我們在softswitch上提供STUN server功能,終端A通過STUN可以獲得NAT爲終端A與softswitch之間通信分配的地址A',並將這個地址註冊在softswitch 上,當一個公網上的終端B呼叫終端A時,A'和B通過softswitch完成呼叫建立過程。當B試圖向A'發送媒體流時,問題就出現了。因爲對稱NAT 只允許從softswitch發送數據給地址A',從B發送的媒體流將被丟棄。所以STUN無法應用於工作在對稱模式的NAT
STUN協議最大的優點是無需現有NAT/FW設備做任何改動,同時STUN方式可在多個NAT串聯的網絡環境中使用
STUN的侷限性在於STUN並不適合支持TCP連接的穿越,同時STUN方式不支持對對稱NAT(Symmetric NAT)
i.)
TURN又稱SPAN(Simple Protocol for Augmenting NATs)方式

TURN方式解決NAT問題的思路與STUN相似,也是基於私網接入用戶通過某種機制預先得到其私有地址對應在公網的地址(STUN方式得到的地址爲出口 NAT上的地址,TURN方式得到地址爲TURNServer上的地址),然後在報文負載中所描述的地址信息直接填寫該公網地址的方式,實際應用原理也是 一樣的。
TURN的全稱爲Traversal Using RelayNAT,即通過Relay方式穿越NAT,TURN應用模型通過分配TURNServer的地址和端口作爲客戶端對外的接受地址和端口,即私網 用戶發出的報文都要經過TURNServer進行Relay轉發,這種方式應用模型除了具有STUN方式的優點外,還解決了STUN應用無法穿透對稱 NAT(Symmetric NAT)以及類似的Firewall設備的缺陷,即無論企業網/駐地網出口爲哪種類型的NAT/FW,都可以實現NAT的穿透,同時TURN支持基於 TCP的應用,如H323協議。此外TURN Server控制分配地址和端口,能分配RTP/RTCP地址對(RTCP端口號爲RTP端口號加1)作爲本端客戶的接受地址,避免了STUN應用模型下 出口NAT對RTP/RTCP地址端口號的任意分配,使得客戶端無法收到對端發過來的RTCP報文(對端發RTCP報文時,目的端口號缺省按RTP端口號 加1發送)
TURN的侷限性在於所有報文都必須經過TURNServer轉發,增大了包的延遲和丟包的可能性。
j.)
UPnP(Universal Plug and Play)
UPnP技術對即插即用進行了擴展,簡化了家庭或企業中智能設備的聯網過程。結合了UPnP技術的設備以物理形式連接到網絡中之後,它們可以通過網絡自動彼此連接在一起,而且連接過程無需用戶的參與和使用中央服務器。
UPnP規範基於TCP/IP協議和針對設備彼此間通訊而制訂的其它Internet協議。這就是它之所以被稱作“通用”的原因所在——UPnP技術不依 賴於特定的設備驅動程序,而是使用標準的協議。UPnP設備可以自動配置網絡地址,宣佈它們在某個網絡子網的存在以及互相交換對設備和服務的描述。基於 Windows XP的計算機可以充當一個UPnP控制點,通過程序界面對設備進行發現和控制。 NAT穿越技術允許網絡應用程序對它們是否位於一個具有UPnP能力的NAT設備之後進行檢測。然後,這些程序將獲得共享的公有IP地址,並且配置端口映 射將來自NAT外部端口的數據包轉發到應用程序使用的內部端口上——所有這一切都是自動完成的,用戶無需手動映射端口或者進行其它工作。NAT穿越技術允 許網絡設備或者點對點應用程序通過動態開啓和閉合與外部服務之間的通信端口穿過NAT網關與外界通信
4. 私網地址對私網地址
這種情況下是最複雜的情況,兩個異地的局域網地址直接通過Internet建立連接,這個問題確實有相當的困難,大概有以下幾種解決思路:
a.) 如果兩端局域網網關或防火牆都採用了VPN,這種VPN網關對VPN網關的最大優勢就是經過VPN隧道的封裝之後,兩端局域網虛擬成爲一個局域網,用戶毫 無疑問可以訪問到對方,但是該類方式必須要求用戶的局域網網關或防火牆採用VPN網關對VPN網關模式,此類應用範圍比較窄,在此不做進一步的詳細討論。
b.) 通過代理實現兩端都跟第三方的代理服務器建立連接,然後由於socket的特性,連接建立以後兩邊跟這個代理服務器的數據通信均能夠流暢的進行,然後兩端 的通信通過服務器從中間進行中轉,這種方式的缺點就是所有的數據流量都通過第三方服務器中轉,雖然點對點的通信沒有問題,但是服務器的系統資源開銷比較 大,如果點對點通信的用戶過多則但服務器很難承受,必須增加代理服務器的臺數,可以通過一臺中央管理的服務器進行資源調度和分配,採用分佈式的服務器集羣 來解決
c.) 兩端局域網的網關上安裝專用的特製軟件也可以實現異地局域網之間的通信,例如隧道技術或開發自己專用的協議棧,其實VPN的隧道模式或者傳輸模式均是該方 式的一個特例。這種方式需要改造局域網現有的網關,或者是在該網關上加裝軟件,這樣連接請求一方把數據發出,數據到達網關時由網關進行封裝(封裝的數據中 有足夠多的信息,比如數據本來的端口呀,局域網的一些信息等,這些需要認真考慮),可能會有幾層封裝,進行壓棧操作,在另一方局域網網關接受到數據後收到 標識爲另外一方發的數據包就剝去TCP層,然後一層層地解開,執行出棧操作,然後轉發到相應的局域網目標地址,協議棧是網關之上的。發出連接請求的一方只 要通過第三方服務器得到另一方相關必要信息就能夠連接到網關之後的局域網機器。這種方式需要改動目前網關的配置,或者是說在目前網關上加裝自己的軟件。
d.) 兩方如果是用Liunx或BSD做的網關,則兩個網關若配製成GRE或IptoIP等隧道模式,則也可以直接相互訪問,異地互連的任務由兩個網關來完成 了。這種隧道方式通過使用互聯網的基礎設施(這裏的兩個網關)在網絡終端之間傳遞數據,該數據可以爲不同協議的數據幀或包,隧道協議將其重新封裝然後通過 隧道發送,新的幀頭提供了路由信息。
e.) 若兩個局域網網關均採用了路由模式,還可以考慮另一種方式,就是修改通訊數據包的源路由,通過指定路由尋址的源路由,在路由尋址的路由信息最後和最初加上 兩條就可以讓數據通過規定的路由路徑到達局域網的機器,不過兩端網關均採用標準的路由上網的情況不是很多。這種方式通過啓用IP數據包的源路由選擇選項, 啓用源路由選項後,源路由信息指定的路由使數據流能夠越過默認的路由,IP數據包能夠選擇它所希望的到達最終目標的路徑,並且能夠把這種消息公佈給沒一個 路由器。
f.) 如果兩方均採用NAT透明代理方式上網則可以通過另一種方式實現這個點對點的通信,兩端先對第三方服務器發起一個socket連接,這個第三方服務器就得 到並收集這所有的socket連接信息,例如socket號等,然後若要有兩方要建立連接,怎這個第三方服務器就把發起連接方對方的socket信息給 它,由要求連接方用原來的socket信息重新建立socket連接,則點對點的通信就可以建立,不過此種方式僅限NAT透明代理模式,而且由於該類連接 是非安全連接,所以不是特別穩定,通過UDP協議往往成功率能夠高一些。
g.)其他方式同公網對私網的h.),i.),j.),通過STUN,TURN和Upnp技術進行穿越
4、 平滑地穿越防火牆和NAT還有代理模式的可行性分析
由於IP地址的嚴重不足和安全問題的日益突出,越來越多的企業採用了防火牆或者NAT和代理模式來訪問Internet,這爲很多基於網絡的應用帶來了困 難,如何平滑的穿越現在現有的各類防火牆和NAT成爲很多人關心的問題。下面就穿越防火牆的問題題出一些建設性的建議,並就其可行性進行分析:
1.) 採用“端口反彈”與“HTTP 隧道技術”:
端口反彈就是由防火牆或網關內一端主動連接外面的一端,這種方式可以從互聯網上訪問到局域網裏通過 NAT 代理(透明代理)上網的電腦,並且可以穿過防火牆(包括:包過濾型及代理型防火牆)。
HTTP隧道技術就是把所有要傳送的數據全部封裝到 HTTP 協議裏進行傳送,因此從互聯網上可以訪問到局域網裏通過 HTTP、SOCKS4/5 代理上網的電腦,而且也不會有什麼防火牆會攔截,因爲所有的防火牆和網關都會認爲對外界80端口的訪問是合法請求。
所以採用這兩種方式結合後只要能瀏覽網頁的電腦,都能通過Internet訪問。包括撥號上網、ISDN、ADSL、DDN、Cable Modem、NAT 透明代理、HTTP 的 GET 型代理、HTTP 的 CONNECT 型代理、SOCKS4 代理、SOCKS4A 代理、SOCKS5 代理。

2.)通過隧道模式傳輸,隧道方式在網絡終端之間傳遞數據,該數據可以爲不同協議的數據幀或包,隧道協議將其重新封裝然後通過隧道發送,新的幀頭提供路由信息,常見的如VPN網關對VPN網關等方式。
3.) 通過第三方的socket5代理服務器穿透防火牆

4.) 通過某一固定端口傳輸,某些應用,例如H.323的應用會通過動態分配的端口來進行數據的傳輸,這無疑給穿越防火牆和網關帶來了麻煩,但是又不能能夠在防火牆上打開所有的高端端口,此時將所有的通信都封裝到一個固定的端口然後再進行傳輸就非常有必要。

5.) 通過http協議進行封裝,並採用80端口進行傳輸,這種方式是最有效的,這種http隧道的封裝方式跟普通的上網請求沒有什麼不同,但是不管那種類型的 防火牆或網關都會允許對外界80端口的訪問,而且通信內容還是通過http協議封裝的,到了另一端後再進行剝離,恢復出原來的數據。
6.) 在防火牆沒有阻塞的高位TCP端口或者防火牆開放的端口建立連接.例如可以放在***TP端口, 大多數防火牆允許e-mail流量通行,利用這種特性可以通過***TP之類的端口穿透防火牆。
7.) 大多防火牆設置成允許類似DNS的UDP報文的通行. 可以利用這個弱點通過DNS的UDP端口封裝和傳輸報文,穿透防火牆。
8.) Ping是通過發送和接受ICMP包檢測機器活動狀態的通用辦法之一. 許多防火牆允許外界ping它內部的機器. 可以將數據封裝進Ping的ICMP包, 在ping的機器間形成一個通道.通過這種方式也可以穿透防火牆。
9.)通過啓用IP數據包的源路由選擇選項,啓用源路由選項後,源路由信息指定的路由使數據流能夠越過默認的路由,IP數據包能夠選擇它所希望的到達最終目標的路徑,並且能夠把這種消息公佈給沒一個路由器,這種包就可能繞過防火牆。
10.) 通過將通信數據分割成小的TCP碎片,繞過防火牆的封殺,穿透防火牆。
5、 總結
以上僅對點對點通訊的實現和穿越網關和防火牆的一些想法進行分析,不足和遺漏之處請指正。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章