4種NAT打洞:完全錐體、IP受限型、(IP和)端口受限型、對稱型。其三種都很好理解,唯獨對稱型比較不好理解,這裏做些自己的理解。
對稱型:是指UDP打洞時,一個請求對應一個映射關係。
clientA (x,y) -----------> 網關(A,b)------------>S(m, n)
clinetB(p,q) -----------> 網關(C,d)------------>S(m, n)
clientA向server S發起連接時,告訴S其公網地址和端口爲 A,b
clientB向server S發起連接時,告訴S其公網地址和端口爲C,d
假設server S分別告知clientA、clientB對方地址,並且clientA、clientB分別發起一條向對方的請求(該請求一定無法到達),按照對稱型NAT規則,此時會有這樣一個情況:
對於A的網關,將會新增一條如下的映射:
clientA (x,y)-----------> 網關(A,t)----------------->clientB (C, d)
對於B的網關,將會新增一條如下的映射:
clientA (p,q)-----------> 網關(C,r)----------------->clientA (A,b)
請注意:clientA (x,y)-----------> 網關(A,t)和clientA (p,q)-----------> 網關(C,r)
由於對稱型的NAT原理,由於端口映射的隨機性,新的端口我們不得而知,因此對稱型的NAT在這種情況下是無法打通的