【问题标题】:Connect an ip behind nat using sockets使用套接字在 nat 后面连接一个 ip
【发布时间】:2013-03-07 19:39:00
【问题描述】:

考虑一个通过电话 A 连接到 wifi 的电话,地址为动态 Ip ex:192.168.0.34 并通过服务器套接字在 port 7567, 进行监听电话 B 连接公共 ip 上的那个 10.0.0.56 我有 wifi 路由器 ip 说 ex 55.56.89.76

【问题讨论】:

    标签: networking network-programming


    【解决方案1】:

    如果您不使用端口转发,则无法直接连接到 NAT 后面的客户端。但是有一种称为打孔的技术可以通过 NAT 打开端口。

    来自Wikipedia

    打孔是一种计算机网络技术,用于在位于限制性防火墙后面的不同组织中的两方之间建立通信。用于在线游戏、P2P 和 VoIP 等应用程序,两个客户端都与不受限制的第三方服务器建立连接,该服务器为它们发现外部和内部地址信息。由于每个客户端都向服务器发起了请求,因此服务器知道为该会话分配的 IP 地址和端口号,并与另一个共享。拥有有效的端口号会导致防火墙接受来自每一侧的传入数据包。 ICMP打孔、UDP打孔和TCP打孔分别使用Internet控制消息、用户数据报和传输控制协议。使用 TCP 恶意打孔,可以将压缩的 SYN 数据包发送到公共 ACK 路径。许多软件都这样做。

    另请参阅与this topic 相关的问题。

    【讨论】:

    • 但是并非所有路由器都支持打孔,对,基本上我希望制作一个消息传递应用程序,在服务器端我只需要维护一个 IP 地址和端口数据库以及何时需要发送消息共享我只是与运行侦听套接字的 ip 和端口建立连接以接收消息
    • 我认为在这种情况下你需要一个服务器来转发你需要的信息。
    • 我该怎么做你能给我一些示例链接
    • 这取决于您的服务器。您使用哪种操作系统?您最喜欢哪种编程语言?
    • linux作为操作系统,java作为语言
    猜你喜欢
    • 2011-07-01
    • 2012-03-27
    • 2013-12-09
    • 2018-07-12
    • 2012-12-31
    • 1970-01-01
    • 1970-01-01
    • 2012-07-05
    • 2014-11-12
    相关资源
    最近更新 更多