【问题标题】:UDP/TCP Send & Receive without port forwardingUDP/TCP 发送和接收,无需端口转发
【发布时间】:2018-05-08 19:32:15
【问题描述】:

场景:

A想通过端口12345B发送数据。

B 需要端口转发才能接收传入的连接。

B有什么方法可以在不进行端口转发的情况下接收数据?

打孔确实需要一个服务器在中间。那么有没有其他方法可以让中间不需要服务器呢?

UPNP 不是一个好选择,因为我读到它需要路由器启用它。

【问题讨论】:

  • “B 需要端口转发”是您方案的一部分,因此根据定义,您的问题的答案是否定的。
  • 您对向 B 发送数据而不是转发的具体想法是什么?
  • 我的问题是。如果 B 不能或不知道如何转发端口,有没有其他方法可以发送数据?
  • 你到底想做什么?
  • 让B发起连接。

标签: c# tcp udp


【解决方案1】:

它不可能(据我所知)在不共享同一网络的 2 个客户端之间传递 packets 而不引用端口号。并且不管是TCP还是UDP。
您从计算机发送的每个数据都会被转换并打包为一个数据包 - 始终如此!
您使用哪种编程语言都没有关系,因为根据OSI model,它发生在the Network and Transport layers

网络数据包必须包含:

  • 源 IP
  • 源端口
  • 目标 IP
  • 目的港

为了更好地理解,我可以考虑一个小类比:

想象一下,你想去国外拜访一位朋友 国家。
您知道要飞往哪个国家/地区(外部 IP 地址
并且您知道您在这个国家/地区的朋友地址(内部 IP 地址)。
但是当您到达时,您不知道要乘坐哪列火车才能到达您朋友的家(端口号)。
因此,如果不知道确切的火车(端口号),您就无法拜访您的朋友。
如果你去机场问信息站(路由器),这个车次确实存在(路线图/端口转发配置) 他们会指示您需要乘坐的火车在哪里,您将可以拜访您的朋友。

这就是您必须在路由器中配置端口转发的原因 - 以便更新路由映射

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-02
    • 2014-10-04
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多