如何实现UDP穿透

在讲解UDP穿透之前,首先我们需要先了解为何需要使用UDP穿透?需求是什么?

一、需求

     在不公布IP和端口的情况下,让俩个局域网内的PC端建立连接。

二、环境

普通的家庭电脑(PC端)连接Internet(因特网)时,首先需要通过运营商(拨号)连接到Internet(下面统称外网)中的域名服务器,然后域名服务器会将你的请求转发到实机服务器上,从而实现内外网的连接。

局域网内的机器如何与外网的服务器建立连接

在内网(局域网)中需要注意以下几点:

  • 在同一时间段内,无论局域网中有几台联网设备,对于外网来说都是同一个临时IP。
  • 在同一局域网内的设备连接外网时,IP地址是相同的,端口是不同的。
  • 在局域网内,所有联网设备合用局域网内的同一个临时IP地址。

由于猫或路由器具有一定的防火墙功能,所以局域网内的IP对于外网来说是不可见的。默认情况下猫或路由器是不允许PC(电脑)在外网当服务器的,只有猫或者路由器有相应功能时才允许把局域网内的IP公布到外网中。这样其他机器才可以通过公布的IP和端口访问你的PC端(电脑)。


三、问题

由上述环境我们可以引出以下几个问题:

  • 临时IP:因为局域网的IP是变动的,所以其他机器想要通过IP来主动连接你的PC端就会变得十分艰难;
  • 猫和路由器的防火墙:猫和路由器默认是不允许外网IP主动连接内网的;
  • 安全性:假设你的猫或路由器具有相应的功能,能将你的IP发布到公网中,让你需要的机器连接你的PC端。但是这也会造成一个很严重的安全性漏洞,因为你需求的机器可以连接你的PC,其他的机器也可以通过IP连接你的机器。这样就有可能使你的电脑被他人控制或者你的个人数据泄漏。

四、协议

我们可以通过由环境所引出的问题来进行分析,确认和选择我们所使用的协议。首先在确认协议之前,先要分析协议的特点。在通常的网络变成中,大多数使用的都是TCP协议或者UDP协议。
协议分析

由上图我们可以确定,我们所需要选择的协议使UDP协议,因为UDP协议完美的解决了由环境所引出的问题。


五、方案

协议的确定,我们就可以根据协议的特点来设计方案。通过方案来解决问题,以实现通过UDP穿透建立连接并高效的互相发送数据。

首先我们要确定问题:

  • 问题一:临时IP;

    要解决临时IP问题,就需要在公网中由一个公共的服务器。通过PC端向服务器主动发起UDP请求,并从服务器获取到应答包建立连接。在于服务器连接建立后,到结束之前PC端的IP和端口将是不会改变的,这样就解决了临时IP的问题。

  • 问题二:猫和路由器的防火墙;

    由于在PC端主动发起连接请求时,防火墙会打开一个口子来接收服务器的应答包,以建立连接。这样就成功解决了防火墙的问题。但是,需要注意一点,请求必须由PC端发送防火墙才会打开口子,并且PC端需要接收到服务器的应答包才能确认口子是否已经打开。

  • 问题三:安全性;

    这个问题已经在问题二中已经解决了,由于防火墙的机制,外网IP是无法主动向PC端发起请求的。防火墙将会将这些请求拦截在外。

  • 问题四:如何让主端和从端建立连接;

    由于主端和从端都已经和公共服务器成功建立的连接, 所以公共服务器就同时拥有了主端和从端的IP和端口。只要服务器将双方的IP和端口都发送给对方,这样双方就可以直接建立连接。但是,在双方建立连接后,双方于服务器的连接是不可以中断的。因为在中断与服务器的连接后,局域网内的临时IP和端口将会发生改变,从而进一步断开主端与从端的连接。

在这里插入图片描述

至此,我们就完成并实现了通过UDP穿透来建立双机连接。


六、原理

UDP穿透的原理其实很简单,就是通过利用在公网中公共服务器的IP是固定的和UDP协议的特性来实现的。由于UDP是可以无需应答,并且可以主动发起请求的。所以就可以通过UDP协议建立与公共服务器的连接。在通过公共服务器返回的IP和端口,来与对方PC端建立连接。其中,公共服务器是必须存在的,并且公共服务器的连接是不可中断的。

  • 10
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值