路由器上UDP打洞需要的心跳时间最短要多少
路由器UDP通信端口开放的维持时间,都说会有一个很短的维持时间,也说每种路由器都不一样,那么有没有一个经验值,最短是多少呢?设的 太短 对服务器压力不小,设的太长,可能会导致有些路由器时间超了。 UDP这个回收是和网络的繁忙程度有关的
不懂帮顶,以前研究过UDP打洞,发现对我来说有点难,就先放弃了,在一篇论文里中提到NAT设备最短只有20秒~
以下为论文的中文翻译:
3.6 UDP在空闲状态下的超时问题
由于UDP转换协议提供的“洞”不是绝对可靠的,多数NAT设备内部都有一个UDP转换的空闲状态
计时器,如果在一段时间内没有UDP数据通信,NAT设备会关掉由“打洞”操作打出来的“洞”,
做为应用程序来讲如果想要做到与设备无关,就最好在穿越NAT的以后设定一个穿越的有效期。
很遗憾目前没有标准有效期,这个有效期与NAT设备内部的配置有关,最短的只有20秒左右。
在这个有效期内,即使没有p2p数据包需要传输,应用程序为了维持该“洞”可以正常工作,也
必须向对方发送“打洞”维持包。这个维持包是需要双方应用都发送的,只有一方发送不会维持
另一方的session正常工作。除了频繁发送“打洞”维持包以外,还有一个方法就是在当前的“洞”
有效期过期之前,p2p客户端双方重新“打洞”,丢弃原有的“洞”,这也不失为一个有效的方法。
以下为原版论文,UDP超时问题在3.6节
TCP 打洞时间是不是好一些,当然服务器比较累。 多谢楼上各位!
我刚才搜索了一下才了解打洞是什么意思,好像目的就是为了两个内网的机器能够直接相互通信,而甩开位于公网的中间服务器吧。
还有什么好处吗?在实际生活中,还有什么意义吗?因为现在使用QQ什么的,给人的感觉不都是内网内的机器在直接互相通信吗?虽然这中间有腾讯的服务器进行转发。 主要的意义就是可以提高实时性 TCP打洞太复杂 目前有几个标准 stun turn 针对不同场景的 kevin_me 发表于 2016-4-28 11:42
我刚才搜索了一下才了解打洞是什么意思,好像目的就是为了两个内网的机器能够直接相互通信,而甩开位于公网 ...
主要是为了应对NAT NAT导致设备不能直接互联互通 还有,最简单但是有点危险的方式是用upnp,不过很多路由器是关闭了upnp 的 不太会这样设计,因为一部分路由不支持UDP的端口映射 udp心跳时间最好小于30秒。 赶快上ipv6吧,ipv6就没有这个问题了 duedue 发表于 2016-4-28 12:28
主要的意义就是可以提高实时性
难道在同一个局域网内的两台机器上的QQ 通过打洞,就可以不经过腾讯的服务器了?我怎么感觉怎么着都是会通过腾讯服务器的啊 imjacob 发表于 2016-4-28 13:19
难道在同一个局域网内的两台机器上的QQ 通过打洞,就可以不经过腾讯的服务器了?我怎么感觉怎么着都是 ...
局域网内的两个QQ客户端之间发生超大文件,速度一般逼近网络带宽,感觉貌似没有经过腾讯的服务器了吧 imjacob 发表于 2016-4-28 13:19
难道在同一个局域网内的两台机器上的QQ 通过打洞,就可以不经过腾讯的服务器了?我怎么感觉怎么着都是 ...
可能是腾讯服务器根据收发双方的WAN IP来决定 该次通话是否为内网。如果是内网的话 相当于路由器上的一个端口发数据给另一个端口 就相当于是内网通信 duedue 发表于 2016-4-28 15:30
可能是腾讯服务器根据收发双方的WAN IP来决定 该次通话是否为内网。如果是内网的话 相当于路由器上的一 ...
懂了,谢谢两位 学习的,路过 用 tcp吧,走 mqtt.全世界都说好 wxws_wxws 发表于 2016-4-28 22:05
用 tcp吧,走 mqtt.全世界都说好
mqtt 也是实现应用层的互联互通 LZ是想打洞,实现的代价稍小一点,不过可能风险更大吧 wxws_wxws 发表于 2016-4-28 22:05
用 tcp吧,走 mqtt.全世界都说好
用mqtt和 udp打洞有什么关系啊?不懂,请教 用TCP吧,UDP不可靠因素太多,很难做负载均衡
页:
[1]