发新话题
打印

P2P 之 UDP穿透NAT的原理与实现(附源代码)

此时,Client A与Client B都可以与Server S通信了。如果Client A此时想直接发送信息给Client B,那么他可以从Server S那儿获得B的公网地址187.34.1.56:40000,是不是Client A向这个地址发送信息Client B就能收到了呢?答案是不行,因为如果这样发送信息,NAT B会将这个信息丢弃(因为这样的信息是不请自来的,为了安全,大多数NAT都会执行丢弃动作)。现在我们需要的是在NAT B上打一个方向为202.187.45.3(即Client A的外网地址)的洞,那么Client A发送到187.34.1.56:40000的信息,Client B就能收到了。这个打洞命令由谁来发呢,呵呵,当然是Server S。

问题:
……现在我们需要的是在NAT B上打一个方向为202.187.45.3(即Client A的外网地址)的洞……
请问如何理解这个洞的含义,我认为这个“洞”应该是一种从内网向公网的一个有效通讯,但这里“在NAT B上打一个方向为202.187.45.3(即Client A的外网地址)洞”就是说从B向A的外网地址发一个信息,这样NAT B应是会将其丢弃的("(因为这样的信息是不请自来的,为了安全,大多数NAT都会执行丢弃动作)"),既然丢弃了,那这个洞还算不算打通了呢?

TOP

发新话题