我與私人和公共udp港口有一段艱難時期。我正在做一個客戶端服務器的VoIP程序,並有一些問題。私人與公共港口
1)私有端口是你在bind()中使用的端口嗎?
2)公共端口是否由防火牆指定?因爲它是我的本地網絡之外可見的端口。
3)當我在本地網絡上的兩臺機器之間進行調試時,我指定將/ recv發送到專用端口,並且通信起作用。如果我要與網絡外的客戶進行通信,我會使用公共端口,對嗎?
4)本地網絡上的兩臺主機是否有任何方式在公共端口上進行通信?因爲這就是它的發佈模式,所以確保它可以正常工作是一件好事。
5)路由器將發送到公共端口的數據包轉發到專用端口上的應用程序列表中?所以發送者(如果在本地網絡之外)指定公共端口而不是私有端口。
希望是明確的,只是要求否則!
在此先感謝! Johan
這個想法是使用holepunching,對不起,我應該提到,而不是。客戶端將數據包發送到服務器,然後服務器將端口信息和IP轉發給其他客戶端。服務器不在NAT後面(通過端口轉發)。您提到,雖然收件包的地址必須與我們發送的數據包的地址相同。我明白爲什麼,但不會防止打洞?我的意思是打孔的想法是客戶端向服務器開放公共端口,然後服務器告訴客戶端彼此,因此客戶端可以在這些端口上與每個端口進行通信。 – KaiserJohaan 2011-02-01 13:53:15