確切地說是穿透NAT,一般使用UDP協(xié)議,TCP協(xié)議也可以穿透,只是好像沒有UDP成功率高。

如果是一般情況,使用STUN協(xié)議.
除了要通信的兩個端點之外,還有一個有公網(wǎng)IP的一個服務(wù)器 STUN server。

一個端點穿過防火墻,發(fā)個消息給STUN server,STUN server收到這個包之后 就可以知道該端點通過防火墻映射后的公網(wǎng)地址。
同樣道理,STUN sever可以得到另外一個端點的通過它的防火墻映射后的公網(wǎng)地址。

STUN server把得到的這兩個地址發(fā)給兩個端點。
端點得到對方端點的公網(wǎng)地址后,就可以給對方端點發(fā)消息。相互就可以通信。


通俗的說,一個端點發(fā)一個UDP消息出去之后,就把自己的墻打了一個洞;另外一個端點也把它的墻打了一個洞。然后雙方都可以向?qū)Ψ降亩窗l(fā)數(shù)據(jù),進行通信?。