铁通用户访问不同的网络,IP地址和端口都可能会不一样,是否有办法实现UDP穿透呢?
解决方案 »
- 点击右键出现内存读错误?
- 线程函数中是怎么调用其他成员函数的!
- 及求代码:24位位图转化为8位灰度图,然后8位灰度图再转换成二值图(论坛里已有的代码不太符合要求)
- 怎么看vc源码?
- 关于COM的一个问题
- 请帮我解决一个窗口显示的问题,多谢了
- 我从一个数据库中取出数据放入另一个数据库中,但有一些问题想请教大家?
- 有哪位大虾帮我看一下这段代码,,,请写一些说明,,,我不能理解,,急!!!
- 我想做个办公室文档管理系统
- 究竟在那些情况下会出现DEBUG ERROR的错误?
- 工具栏添加图片的问题,怎么去掉按钮的风格?
- 同样的代码(使用sqlite),放在lib里支持中文路径,但放在MFC中就不支持了,为什么?
在服务器交换A和B两个地址后,A和B是需要向对方发送连接消息的(俗称打洞),知道双方都收到对方的链接消息了,才能算是穿透成功
看下这个,希望对你理解上有帮助~
普通的电信,联通,一般的小区宽带也都打洞成功。一方是电信/网通,准确的说是Cone NAT,而另一方是铁通的话,也已经成功实现打洞。剩下的问题就是双方都是铁通的话,我实在是没办法实现穿透,所以才上来提问的。
还有就是你的接入IP是什么形式的?局域网还是广域网?
你说如果两个都是铁通的,就实现不了穿透,是不是铁通做了什么P2P之类的限制?
A前面的NAT设备是基于五元组的,例如:A--NAT---Server(固定IP).经过NAT之后是这样的:(IP1:Port1 --- IP2:80)
IP1是NAT之后的IP、Port1是NAT之后的Port。IP2、80是你固定IP的端口和IP。此时,你让B给A发消息的时候,IP是这样的:
IPb:PORT2----IP1:Port1(IP1、PORT1是你在Server上记录下来的)。但是,A前面的NAT设备发现IPb、PORT2不是由A访问过的地址和端口,因此是不让进入,这种属于一种严格的地址转化方式,现在大部分设备都是这样的。因此,你必须让B有能力伪造固定IP的源地址和端口对A发送报文。采用如下的报文发送:
IP2:80---->IP1:Port1。这个报文是能穿越NAT的。但是麻烦的问题是这样的:运营商网络中,很可能会禁止非本机IP地址发出的报文。所以,NAT穿越是很困难的。尤其是两台处于私网的主机的穿越。