p2p 內網穿透
cone nat 與symmetric nat
從內網主機發出報文訪問外網目標時,可用四元組[源ip,源埠,目標ip,目標埠]來表示會話:
[私有源位址,私有源埠,全域性目標位址,全域性目標埠]
↓nat
[全域性源位址,全域性源埠,全域性目標位址,全域性目標埠]
nat在對不同的私有源位址進行轉換的時候,可能轉換成同一全域性源位址,也可能轉換成不同的全域性源位址(如果nat位址池配置有多個全域性位址)。
hole punching方法過程
現在主機a欲與b直接進行udp通訊,a傳送請求資訊給server s請求幫助連線b, s把b的全域性和私有插口傳送給a,也把a的全域性和私有插口傳送給b。a和b知道對方的插口後,就會嘗試直接傳送udp報文給對方,既向全域性插口傳送,也向私有插口傳送。私有位址不能被路由,故傳送不會成功。下面討論發向全域性插口的udp報文。
a傳送的第乙個udp報文以b的全域性插口[202.1.1.1:3600]為目標插口,建立了乙個新的udp會話session a-b,在a的內網由插口對[192.168.1.1:4321, 202.1.1.1:3600]標識,在internet上則由插口對[201.1.1.1:6200, 202.1.1.1:3600]標識。
這時b的第乙個報文也傳送給a的全域性插口[201.1.1.1:6200],過程與上面對a的第乙個報文的描述一樣,也建立了乙個新的udp會話session b-a。
如果a的第乙個報文,在b的第乙個報文通過b的nat之前到達了b的nat,而b以a作為訪問目標的會話還未建立(b的nat洞還未開出),b的nat對不請自來的a的報文會丟棄之;這時a的nat洞已經開出,故b的第乙個報文會順利通過a的nat傳送到a。在b的第乙個報文從nat發出後,自己的nat洞也開好了。這樣,a、b雙方nat的洞都開好了,udp通訊就能夠在二者之間直接進行而不再需伺服器s的參與。
symmetric nat
hole punching方法採用準隨機猜測方法與演算法,對映全域性埠變化只在乙個小範圍內,所以通過猜測變化值k來實現內網穿透。
利用P2P點對點技術實現UDP內網穿透
點對點技術在近幾年應用很廣,主要代表有qq skype bt 迅雷 ppstream pplive qvod。我們可以看到,只要是資料量很大,而一般利用中轉伺服器又需要一定規模投入的應用,我們都可以考慮用p2p技術。有兩個好處 1.可以降低成本與投入。2.提高傳輸效能。從上面的描述,我們可以得出兩個...
利用P2P點對點技術實現UDP內網穿透
點對點技術在近幾年應用很廣,主要代表有qq skype bt 迅雷 ppstream pplive qvod。我們可以看到,只要是資料量很大,而一般利用中轉伺服器又需要一定規模投入的應用,我們都可以考慮用p2p技術。有兩個好處 1.可以降低成本與投入。2.提高傳輸效能。從上面的描述,我們可以得出兩個...
Linux n2n內網穿透
內網穿透一般都需要在路由器中用nat指向,或使用如treamviewer之類的工具穿透內網實現遠端控制。n2n與之不同的是,它是p2p。也即是如同treamviewer之類工具使用的是資料從伺服器 而n2n則是點對點的資料直聯。n2n需要乙個supernode,只用於最初的打洞用,之後的互動均為直聯...