【问题标题】:private vs public ports私有与公共端口
【发布时间】:2011-06-18 22:11:12
【问题描述】:

我在使用私有和公共 udp 端口​​时遇到了困难。我正在做一个客户端-服务器 VoIP 程序并且有一些问题。

1) 私有端口是您在 bind() 中使用的端口,对吗?

2) 公共端口是由防火墙分配的吧?因为它是我本地网络外部可见的端口。

3) 当我在本地网络上的两台机器之间进行调试时,我指定两者都发送/接收到专用端口,并且通信正常。如果我要与网络外的客户端通信,我会使用公共端口,对吗?

4) 本地网络上的两台主机有什么方法可以在公共端口上通信吗?因为这就是它在发布模式下的样子,所以最好确保它能够正常工作。

5) 路由器会将发送到公共端口的数据包转发到在私有端口上侦听的应用程序吗?所以发件人(如果在本地网络之外)指定公共端口而不是私有端口。

希望这很清楚,否则请询问!

提前致谢! 约翰

【问题讨论】:

    标签: c++ winapi sockets udp winsock


    【解决方案1】:

    1) 私有端口是您使用的端口 在 bind() 中对吗?

    没错。

    2) 公共端口由 防火墙对吗?因为它是港口 在我的本地网络之外可见。

    嗯,是的,但它不完全是防火墙。这是NAT。当然,NAT 可以(并且通常是)在防火墙中实现,但也有不使用任何 NAT 的防火墙。另一件需要注意的是,您可能有多个级别的 NAT(例如在家中的一个,在 ISP 中的一个),在这种情况下,将最外层 NAT 分配的端口称为公共端口可能是有意义的。

    3) 当我在两个之间调试时 我本地网络上的机器,我是 指定两者都发送/接收到 私人港口,通讯工程。 如果我要与一个 我将使用我的网络之外的客户端 公共端口,对吧?

    这取决于网络设置。由于您在问题中提到“客户端-服务器”,我假设客户端“连接”(发送第一个数据包)到服务器。如果服务器不在任何 NAT 之后,则其公共 IP/端口对将与本地 IP/端口对相同。但是如果服务器位于 NAT 之后,那么您就不能直接连接到它,因为它还没有分配公共端口。仅仅打开一个端口不会导致 NAT 分配一个公共端口,您需要从该端口实际发送一些东西。

    因此,如果您的服务器在 NAT 之后,那么它必须充当客户端,并且客户端必须充当服务器,前提是客户端也不在 NAT 之后。如果双方都在 NAT 之后,那么您将需要第三方非 NATed 服务器来执行hole punching。请注意,在使用打孔时,通常会同时使用私有和公共端点,以防万一双方碰巧在同一个 LAN 中。

    4) 有没有办法让两台主机上 本地网络进行通信 公共端口?因为那是什么 它将处于发布模式,它 最好确保它有效。

    这取决于 NAT 设置。它可以忽略来自 LAN 内部的所有内容,并将 NAT 的公共地址作为目标。例如,我什至无法从家里的 PC 上 ping 我自己的公共地址。

    5) 路由器会转发数据包吗 发送到公共端口 应用程序监听私有 港口?所以发件人(如果在 本地网络)指定公共 端口而不是私有端口。

    请参阅我对 3) 的回答。当然,它会在分配公共端口后立即转发数据包,因为这是它首先分配的。但它可能会检查传入的数据包是否来自与导致端口打开的数据包发送到的相同地址和端口,因此它是对先前发送的数据包的有效响应,而不仅仅是一些随机的黑客试图破解在。

    【讨论】:

    • 这个想法是使用打孔,抱歉我应该提到它。客户端向服务器发送数据包,然后服务器将端口信息和 IP 中继给其他客户端。服务器不在 NAT 之后(通过端口转发)。您提到过,传入数据包的地址必须与我们发送的数据包的地址相同。我明白为什么,但这不会阻止打孔吗?我的意思是打孔的想法是客户端向服务器打开公共端口,然后服务器告诉客户端彼此,因此客户端可以在这些端口上与每个客户端通信。
    • @Kaiser,为什么会阻止打孔?当然,当一个客户端向另一个客户端发送数据报时,它可能会被丢弃。但是随后另一个客户端将发送回复(它通过服务器知道有通信尝试),这一次它将通过 - 因为第一方的 NAT 认为它是对先前发送的数据包的回复(并被另一方丢弃,但第一方的 NAT 不知道)。不过,您应该阅读我提供链接的文章,因为打孔还有更多内容。
    猜你喜欢
    • 2020-02-04
    • 2011-01-05
    • 2017-11-16
    • 2014-10-07
    • 1970-01-01
    • 2014-09-21
    • 1970-01-01
    • 2016-01-03
    • 1970-01-01
    相关资源
    最近更新 更多