通过internet发送UDP数据报

sending UDP datagrams via internet

本文关键字:数据报 UDP 发送 internet 通过      更新时间:2023-10-16

我是一个网络新手…我有一个(愚蠢的?关于UDP通信的问题。

我基于boost::asio库创建了两个简单的程序:一个服务器和一个客户端。这两个程序通过UDP套接字通信。客户端连接到服务器并开始传输数据报。

它在我的局域网工作得很好。我使用IP地址连接到服务器(如。192.168.1.111)。

如果我的服务器应用程序在其他局域网工作,客户端必须通过internet连接怎么办?我如何连接到服务器?

我知道的唯一可能的解决方案是:

  • 端口转发(不安全?)
  • VPN(过于)

有更好的解决方案吗?

一些应用程序(如Skype或LogMeIn…)如何在没有VPN/端口转发的情况下工作,并且一个LAN中的用户可以到达其他LAN中的任何计算机?

有更好的解决方案吗?

是的。

Skype使用孔打孔技巧。

假设A想联系B:

  • A和B连接到服务器C

  • 服务器C告诉B发送假UDP数据包给A (IP和端口使用)由A为Skype连接)有效地在它自己的穿孔(B)防火墙

  • 此数据包被A丢弃(它来自NAT外),但现在A可以向B发送UDP数据包,这将使它们通过防火墙(B)路由器认为这是对[dummy]数据包的响应

这篇文章更详细地描述了它:How-Skype-Co-get-round-firewalls