打洞技术说明-代码流程

来源:互联网 发布:c语言如何实现多线程 编辑:程序博客网 时间:2024/06/06 04:03

说明:检测服务器有两台

1、验证是不是公网IP   请求NAT服务器返回自己外网IP PORT

     给NAT服务器发送5次,

     五次均没有收到回复则认为UDP被封了,不再往下进行,利用TCP去连接NAT服务器,能收到回复则NAT=TCP

 

     有一次能收到回复比较,如果满足(myPriIp ==ip_return1 && myPriPort == port_return1)

     则不再往下进行,即为public net

 

     不满足(myPriIp == ip_return1 &&myPriPort == port_return1)则继续往下进行

 

2、验证是不是full cone nat(NAT服务器让另台服务器直接给客户发送的

说明:该种类型只要client主动给外网发送消息,此时通过NAT的路就有了,只要是外部机子发往

该NAT上记得外网IP PORT就会直接转给client的

     给NAT服务器发送5次,

     有一次能收到回复,即为full cone nat

 

     五次均没有收到回复则继续往下进行

 

3、验证是不是symmetric nat请求另台服务器返回自己外网IP PORT

说明:该种类型client主动给外网A发送消息,此时通过NAT的路就有了,再当client主动给外网B发送消息,

由于外部IP 或者PORT不同,所以通过NAT时候发现是给外部不同主机发送的,就会给A和B使用不同的PORT

     给NAT服务器发送5次,

     五次均没有收到回复则认为UDP被封了,不再往下进行,利用TCP去连接NAT服务器,能收到回复则NAT=TCP

 

     有一次能收到回复比较,如果满足ip_return1!=ip_return2 || port_return1!=port_return2则不再往下进行,即为symmetric nat,接着用TCP去连接NAT服务器,能收到回复则NAT=TCP

 

     不满足ip_return1!=ip_return2 ||port_return1!=port_return2则继续往下进行

 

4、验证是不是Restricted Cone natNAT服务器用不同于接收端口给客户发送的只限制同一IP

说明:该种类型client主动给外网A发送消息,此时通过NAT的路就有了,由于NAT是IP限制的,因此外部主机A可以使用不同端口发送消息给client

     给NAT服务器发送5次,

     有一次能收到回复,即为Restricted Cone nat

 

     五次均没有收到回复则继续往下进行

 

5、验证是不是Port Restricted ConenatNAT服务器用该接收端口给客户发送的既限制IP又限制PORT

说明:该种类型client主动给外网A发送消息,此时通过NAT的路就有了,由于NAT是PORT限制的,因此外部主机A只能 之前端口发送消息给client

     给NAT服务器发送5次,

     有一次能收到回复,即为Port Restricted Conenat

0 0