网络打洞
来源:互联网 发布:电钢琴 耳机 知乎 编辑:程序博客网 时间:2024/05/17 04:41
文章转摘自互联网。
简单的就是A通知服务器,让服务器告诉 B要通信,然后让B打洞,这样,A 就可以同B通信了
这中间,首先要服务器作一个沟通的作用
所谓的“打洞”过程就是从服务器上得到目标主机的外网地址和端口。
再向这个地址和端口发送一个UDP数据包。
应该是:
A通过S知道B的外部ip port,S告诉B A的ip port,B给A发包,这样
A发给B的包,到B的网关,就给B了。
如果A直接发包给B,B事先没有给A发数据,则B的网关收到A的包大多数情况直接丢弃。
实际上B是告诉自己的网关,从A过来的数据允许放行
ClientA,ClientB都连接上Server。此时ClientA和ClientB都有各自的外网地址和端口。
如果ClientA 要发送消息给ClientB:
1,ClientA发送一个消息给Server,消息内容是要求ClientB 发一个打洞消息给Client A。
2,ClientB发一个UDP包到ClientA的外网地址和外网端口。(就是所谓的打洞)。
NAT B会记录下ClientA的外网地址和端口,以后从这个地址和端口发过来的数据就会转发给ClientB
3,Client A 发送实际的消息(UDP包)给Client B
4,NAT B 发现是ClientA的地址和端口,就把这个UDP包转发给ClientB,ClientB就收到Client A的数据了。
其中1,3步基本上是同时的。
经过我的实验,发现经常在第二步出错,程序让ClientB一直发UDP包到ClientA的外网地址和端口,但是NAT B并没有打开一个洞让ClientA发的UDP包进来,
以至于后面的步骤无法完成。
- 网络打洞
- UDP之网络打洞
- UDP网络打洞
- 技巧_网络_UDP打洞
- 打洞,,
- Udp打洞,判断Nat网络类型
- UDP通信之网络打洞【转】
- 局域网中解决网络穿越(实现打洞)
- 内网打洞技术:花生棒解决无固定IP地址网络环境
- TCP打洞
- TCP打洞
- tcp打洞
- udp打洞
- p2p 打洞
- UDP打洞
- udp打洞
- NAT打洞
- TCP打洞
- C++中不同类型数据之间的转换(调用库函数)
- 关于Samsung S4开发蓝牙4.0应用的资料及官方demo的讨论。
- bat 指定每一周的某一天(比如周五) 执行某一程序(比如飞鸽)
- 使用友盟总结
- QQ聊天记录
- 网络打洞
- C++之this指针与另一种“多态”
- PHP Session 超时的问题
- 关于oracle 安装下的LINUX系统参数的优化
- 状态压缩DP——SGU 131
- SetProcessWorkingSetSize 函数
- linux查看java jdk安装路径和设置环境变量
- 如何成为一位卓越的技术经理?
- 打开文件对话框和打开文件夹对话框代码