<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > P2P網(wǎng)絡(luò )“自由”穿越NAT的“秘密”

P2P網(wǎng)絡(luò )“自由”穿越NAT的“秘密”

作者: 時(shí)間:2013-05-30 來(lái)源:網(wǎng)絡(luò ) 收藏

1. Full Cone:來(lái)自相同的內部地址的請求消息映射為相同的外部地址,與外部地址(目的地址)無(wú)關(guān)。映射關(guān)系為P:p#8596;A:b,任何外部主機可通過(guò)(A:b)發(fā)送到數據到(P:p)上。
2 . Restricted Cone:來(lái)自相同的內部地址的請求消息映射為相同的外部地址,返回的數據只接受該內部節點(diǎn)曾發(fā)數據的那個(gè)目的計算機地址X。映射關(guān)系為P:p#8596;A:b#8596;X,只有來(lái)自X的數據包才可通過(guò)(A:b)發(fā)送到數據到(P:p)上。
3. Port Restricted Cone:來(lái)自相同的內部地址的請求消息映射為相同的外部地址,返回的數據只接受該內部節點(diǎn)曾發(fā)數據的那個(gè)目的地址X:x。映射關(guān)系為P:p#8596;A:b#8596;X:x,只有來(lái)自X:x的數據包才可通過(guò)(A:b)發(fā)送到數據到(P:p)上。
4. Symmetric(對稱(chēng)) :只有來(lái)自相同的內部地址(P:p),并且發(fā)送到同一個(gè)地址(X:x) 的請求消息,才被映射為相同的外部地址(A:b),返回的數據只接受該內部節點(diǎn)曾發(fā)數據的那個(gè)目的地址X:x。映射關(guān)系為P:p#8596;A:b#8596;X:x,當(P:p)訪(fǎng)問(wèn)(Y:y)時(shí),映射為P:p#8596;B:c#8596;Y:y。
  
P2P利用STUN穿越
  
位于后面終端A與B要穿越NAT直接通訊,可以借助在公網(wǎng)上的第三者Server來(lái)幫助。
  
穿越NAT的情況分為為兩種方式:

1、一方在NAT之后,一方在公網(wǎng)上。這種情況相對簡(jiǎn)單,只要讓NAT之后的終端先發(fā)起通訊,NAT就沒(méi)有作用了,它可以從Server上取得另一個(gè)Peer的地址,主動(dòng)連接,回來(lái)的數據包就可以方便地穿越NAT。

2、雙方都在NAT之后,連接的成功與否與兩個(gè)NAT的類(lèi)型有關(guān)。主要的思路的先通過(guò)終端與Server的連接,獲得兩個(gè)終端在NAT外部的地址(IP與端口號),再由終端向對方的外部地址發(fā)邀請包,獲取自己與對方通訊的外部地址,俗稱(chēng)為“打洞”。關(guān)鍵是獲取了NAT外部映射的地址,就可以發(fā)包直接溝通,建立連接。但當一方是對稱(chēng)型,另一方是Port Restricted或對稱(chēng)型時(shí),無(wú)法有效獲取外部地址,邀請包無(wú)法到達對方,也就無(wú)法穿越NAT。具體的分析可以根據兩個(gè)NAT的類(lèi)型分成若干情況分析,這里給一般的穿越例子。

實(shí)例:UDP穿越NAT:
  
A登錄Server,NAT A分配端口11000,Server得到A的地址為100.10.10.10:11000
  
B登錄Server,NAT B分配端口22000,Server得到B的地址為200.20.20.20:22000
  
此時(shí)B會(huì )把直接來(lái)自A的包丟棄,所以要在NAT B上打一個(gè)方向為A的洞,那么A就可以向200.20.20.20:22000發(fā)送數據了
  
打洞的指令來(lái)自Server。B向A的地址100.10.10.10:11000發(fā)一個(gè)UDP報文,被NAT A丟棄,但在NAT B上建立映射記錄,NAT B不在丟棄來(lái)自A的報文。
  
Server通知A可以通訊,A發(fā)起數據UDP包給B,NAT B放行,B收到A的包,雙方開(kāi)始通訊
  
注:若是對稱(chēng)NAT,當B向A打洞的端口要重新分配(NAT A不會(huì )再分配11000端口),B無(wú)法獲取這個(gè)端口,所以不適用本方法。
  
實(shí)例:TCP穿越NAT:

A登錄Server,NAT A分配端口11000,Server得到A的地址為100.10.10.10:11000
B登錄Server,NAT B分配端口22000,Server得到B的地址為200.20.20.20:22000
A向B發(fā)送TCP數據包SYN:192.168.10.11:1234=>200.20.20.20:22000,在NAT A上打洞
B向A發(fā)送TCP數據包SYN:192.168.20.22:1234=>100.10.10.10:11000,在NAT B上打洞

通道建立,A與B三次握手建立TCP連接

p2p機相關(guān)文章:p2p原理



上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: P2P網(wǎng)絡(luò ) NAT IP地址

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>