-
Notifications
You must be signed in to change notification settings - Fork 213
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
服务端C外网运行,客户端A内网虚机机运行,客户端B远程控制家里机器运行。A向B发送消息成功,B向A发送消息不成功。 #3
Comments
看样子是 |
从上面的截图得到的结论是, |
@andy-da Hi andy, 我新添加了一个python脚本, 基于classic STUN协议来精确检测NAT类型, 见https://github.com/pannzh/P2P-Over-MiddleBoxes-Demo/tree/master/stun. |
INFO:root:running test I with stun.voipbuster.com:3478 |
外网测试要指定local address, 因为自动获取的是0.0.0.0所以不匹配就走到下面流程了; 新的客户端简化了操作流程, 启动时就指定server地址, login/logout/list 不需要带参数了 |
如果不确定自己是否是在NAT之后, 可以指定网络接口的本地地址运行, 如:
应该就能获得正确的结果了. |
client 启动参数是 server:port, 对于你的地址是
|
服务端C运行在公网:IP 121.199.46.119
客户端A运行在内网:IP 192.168.1.173 -> 外部IP 58.63.3.111 的NAT为Rristrict Cone NAT
客户端B运行在外网:IP 192.168.1.11 -> 外部IP 59.41.162.249的NAT为Symmetric NAT
UDP打洞成功后,A、B可互发消息而不需要经过C。
TCP打洞比UDP打洞难实现吗?看你写的文章里提到相对于UDP成功率较低。 |
TCP打洞和UDP类似,难点在于TCP建立连接要三次握手,但握手的过程通常是操作系统控制的,比如一个connect系统调用。要想三次握手能按顺序正确到达并且被对方收到,要比较精确地控制每个TCP包(SYN/ACK/SYNACK),新版的STUN协议(RFC5389), 以及ICE协议(RFC5245)有对TCP打洞的相关介绍,你可以参阅一下。
|
打洞成功后,客户端A向B发消息成功,客户端B向A发消息不成功。
测试环境,服务端C在公网上,客户端A在机器1虚拟机下运行,客户端B远程控制机器2运行。
The text was updated successfully, but these errors were encountered: