Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用STUN将UDP发送到nat后面的客户端_Udp_Stun - Fatal编程技术网

使用STUN将UDP发送到nat后面的客户端

使用STUN将UDP发送到nat后面的客户端,udp,stun,Udp,Stun,我想测试stun客户端/服务器以及从服务器端到客户端发送udp流量 我在本地机器上运行stun客户端,得到以下结果 Lenovo-Z50-70:~/iop-bb$ stun -v my_stun_server STUN client version 0.96 Opened port 22948 with fd 3 Opened port 22949 with fd 4 Encoding stun message: Encoding ChangeRequest: 0 About to send

我想测试stun客户端/服务器以及从服务器端到客户端发送udp流量

我在本地机器上运行stun客户端,得到以下结果

Lenovo-Z50-70:~/iop-bb$ stun -v my_stun_server
STUN client version 0.96
Opened port 22948 with fd 3
Opened port 22949 with fd 4
Encoding stun message: 
Encoding ChangeRequest: 0

About to send msg of len 28 to 212.227.107.179:3478
Encoding stun message: 
Encoding ChangeRequest: 4

About to send msg of len 28 to 212.227.107.179:3478
Encoding stun message: 
Encoding ChangeRequest: 2

About to send msg of len 28 to 212.227.107.179:3478
Received stun message: 88 bytes
MappedAddress = 41.224.250.29:22948
SourceAddress = 212.227.107.179:3478
ChangedAddress = 127.0.0.1:3479
XorMappedAddress = 41.224.250.29:22948
ServerName = Vovida.org 0.96
Received message of type 257  id=1
  • 在服务器端,我执行以下命令,echo“hello”| nc-w1-u41.224.250.2922944
  • 但是,在客户端,我没有收到数据包。 有什么建议吗

    在服务器端,我执行以下命令,echo“hello”| nc-w1-u41.224.250.2922944


    这是否在之前从该客户机或使用地址“41.224.250.29 22944”收到任何数据包?否则,客户端NAT将不允许此传入流量,除非它是一个完整的锥形NAT。同样重要的是,客户机正在使用一个套接字,该套接字准备从该外部源接收任何数据包。基本上,您必须确保该外部源具有绑定。

    您需要在两侧匹配端口,并在获得公共ip和端口后执行打孔步骤

    您运行了一个stun客户端,该客户端在本地端口22948上侦听服务器(在端口3478上侦听)。从该端口向服务器发送stun绑定请求

    服务器返回一个响应,表明您的公共ip:端口为
    41.224.250.2922948

    现在您知道本地ip(例如192.168.1.2)映射到41.224.250.29,本地端口22948映射到公共端口22948

    理论上,您可以在客户端端口22948和服务器3478之间开始通信,但服务器已经在使用3478。您需要使用从晕眩响应中获得的相同端口执行打孔步骤

    打孔步骤与你的其他服务是这样的。客户端从端口22948发送到服务器(例如端口9876)

    服务器可能会响应:

    echo "I see you" | nc -p 9876 41.224.250.29 22948
    
    echo "I see you" | nc -p 9876 41.224.250.29 22948