Nat类型检测工具揭秘:Port Restricted与Symmetric NAT详解,如何精准检测?

检测维修 0 99

3. 端口受限圆锥形网络地址转换:它属于受限圆锥形网络地址转换更受限制的版本。只有在内部主机曾经向外部主机发送过报文的情况下,这里假设外部主机的IP地址是Z且端口是P,之后外部主机才能够把Y里的信息当作目标地址以及目标端口,向内部主机发送用户数据报协议报文,与此同时,其请求报文的源端口必须是P,这一要求不但进一步强化了对于外部报文请求来源的限制,进而比受限圆锥形更具备安全性 。

4. 对称网络地址转换(Symmetric NAT):这是一种转换方式,它比所有的圆锥型网络地址转换(Cone NAT)都要更为灵活:在圆锥型网络地址转换(Cone NAT)里,内部主机的内部元组与外部元组的转换映射关系,是独立于内部主机所发出的用户数据报协议(UDP)报文中的目标地址及端口的,也就是说与目标元组无关;在对称网络地址转换(Symmetric NAT)中,目标元组则成为了网络地址转换(NAT)设备建立转换关系的一个重要考量因素:只有来自于同一个内部元组,并且针对同一目标元组的请求,才会被网络地址转换(NAT)转换至同一个外部元组,不然的话,网络地址转换(NAT)将为之分配一个新的外部元组;举个例子,当内部主机以相同的内部元组对两个不同的目标元组发送用户数据报协议(UDP)报文时,这时网络地址转换(NAT)将会为内部主机分配两个不同的外部元组,并且建立起两个不同的内、外部元组转换关系。在这个时候,唯有接收到了内部主机所发送的数据包的外部主机,才能够向内部主机返回UDP报文,此处对于外部返回报文来源的限制,是和Port Restricted Cone相符的。不难发现,如果说Full Cone是要求最为宽松的NAT UDP转换方式,那么,Symmetric NAT就是要求最为严格的NAT方式,它不一样在转换关系的建立上有所体现,并且也在对外部报文来源的限制层面有所体现。

第二部:NAT类型检测

预先存在的条件是,存在一个具备公网性质的Server,且且该Server绑定了两个有着公网属性的IP地址,这儿两个IP地址分别是IP-1以及IP-2 。此Server针对(IP-1,Port-1)以及(IP-2,Port-2)展开UDP监听操作,并且会依据客户端所提出的要求来予以应答。

首先,进行检测,检测的内容是,客户端有没有进行UDP通信的能力,还有,客户端是不是处于NAT之后?

客户端去建立UDP socket,接着运用这个socket,朝着服务器的(IP - 1, Port - 1)发送数据包,以此要求服务器返回客户端的IP以及Port,客户端发送请求之后马上开始接受数据包,要去设定socket Timeout(300ms),从而防止出现无限堵塞的情况,重复这个过程若干次。假设每一回都出现超时状况,没办法接收到服务器给出的回应,那么也就表明客户端没办法开展UDP通信,有可能是防火墙或者NAT对UDP通信予以阻止,如此一来这般的客户端也就没办法进行P2P了(检测停止)。

当客户端能够接收到服务器的回应之时,需将服务器返回的客户端的(IP,Port),与这个客户端socket的(LocalIP,LocalPort)作比较。若二者完全相同,那么客户端不在NAT后,如此这般的客户端具备公网IP,能够直接对UDP端口进行监听,以接收数据来开展通信(检测停止)。反之,若客户端在NAT后,便要做进一步的NAT类型检测(继续)。

第二步:检测客户端NAT是否是Full Cone NAT?

Port Restricted Cone NAT_Symmetric NAT_nat类型检测工具

客户端构建UDP socket,之后运用这个socket朝着服务器的(IP - 1,Port - 1)发送数据包,借此要求服务器利用另一对(IP - 2,Port - 2)依照客户端的请求回发一个数据包,客户端在发送请求后即刻着手接受数据包,并且要设定socket Timeout(300ms),以此防止出现无限堵塞状况,重复这一过程若干回。要是每一回都出现超时情况,没办法接收到服务器给出的回应,那就表明客户端的NAT并非是一个Full Cone NAT,其具体类型有待后续进一步检测(持续进行)。要是能够接收到服务器从(IP - 2,Port - 2)那儿返回的应答UDP包,那就说明客户端是一个Full Cone NAT,如此这般的客户端能够开展UDP - P2P通信(检测终止)。

第三步:检测客户端NAT是否是Symmetric NAT?

客户端去建立UDP socket,接着运用这个socket朝着服务器的(IP - 1, Port - 1)发送数据包,此数据包要要求服务器返回客户端的IP以及Port,之后客户端发送请求后马上就开始接受数据包,并且要设定socket Timeout为(300ms),以此来防止出现无限堵塞的情况,然后重复这个过程,一直到收到回应,这是因为第一步确保了这个客户端能够进行UDP通信,所以是一定能够收到回应的。

把同样的方式运用起来,借助一个socket朝服务器的(IP - 2, Port - 2)去发送数据包,以此要求服务器回馈客户端的IP以及Port 。

针对从服务器返回的客户端的(IP,Port),对上面两个过程的情况予以比较,要是两个过程返回的(IP,Port)之中存在一对不一样,那就表明客户端属于Symmetric NAT,如此这般的客户端没办法开展UDP - P2P通信(检测停止)。不然的话就是Restricted Cone NAT,而是否是Port Restricted Cone NAT有待后续检测(继续)。

第四步,检测,客户端NAT,是否是,Restricted Cone NAT,还是,Port Restricted Cone NAT ?

首先,客户端创建UDP socket,接着,使用此socket朝着服务器的(IP - 1, Port - 1)去发送数据包,进而要求服务器运用IP - 1以及一个与Port - 1不同的端口来发送一个UDP数据包以对客户端作出响应,之后,客户端在发送请求后随即着手接受数据包,并且要设定socket Timeout(300ms),以此来防止出现无限堵塞,最后,重复这个过程若干次。要是每一回情况都是超时,没法接收到服务器给出的回应噢,那就表明客户端是一种Port Restricted Cone NAT呢,要是能够收到服务器的响应呀,那就说明客户端是一种Restricted Cone NAT哟。上面所说的这两种NAT都是能够开展UDP - P2P通信哒。

注意,以上的检测进程当中,仅仅阐述了是不是能够开展UDP - P2P模式的打洞通信,具体而言怎样去通信,通常情况下是需要借助于Rendezvous Server的呀。另外呢,对于Symmetric NAT来说,并不是讲其绝对无法进行UDP - P2P模式的达洞通信哟,它是能够开展端口预测打洞的,只是没办法保证获得成功罢了。

相关推荐: