UDP/TCP 发送和接收,无需端口转发
Posted
技术标签:
【中文标题】UDP/TCP 发送和接收,无需端口转发【英文标题】:UDP/TCP Send & Receive without port forwarding 【发布时间】:2018-05-08 19:32:15 【问题描述】:场景:
A想通过端口12345向B发送数据。
B 需要端口转发才能接收传入的连接。
B有什么方法可以在不进行端口转发的情况下接收数据?
打孔确实需要一个服务器在中间。那么有没有其他方法可以让中间不需要服务器呢?
UPNP 不是一个好选择,因为我读到它需要路由器启用它。
【问题讨论】:
“B 需要端口转发”是您方案的一部分,因此根据定义,您的问题的答案是否定的。 您对向 B 发送数据而不是转发的具体想法是什么? 我的问题是。如果 B 不能或不知道如何转发端口,有没有其他方法可以发送数据? 你到底想做什么? 让B发起连接。 【参考方案1】:它不可能(据我所知)在不共享同一网络的 2 个客户端之间传递 packets 而不引用端口号。并且不管是TCP还是UDP。
您从计算机发送的每个数据都会被转换并打包为一个数据包 - 始终如此!您使用哪种编程语言都没有关系,因为根据OSI model,它发生在the Network and Transport layers
中
网络数据包必须包含:
为了更好地理解,我可以考虑一个小类比:
想象一下,你想去国外拜访一位朋友 国家。 您知道要飞往哪个国家/地区(外部 IP 地址) 并且您知道您在这个国家/地区的朋友地址(内部 IP 地址)。 但是当您到达时,您不知道要乘坐哪列火车才能到达您朋友的家(端口号)。 因此,如果不知道确切的火车(端口号),您就无法拜访您的朋友。 如果你去机场问信息站(路由器),这个车次确实存在(路线图/端口转发配置) 他们会指示您需要乘坐的火车在哪里,您将可以拜访您的朋友。
这就是您必须在路由器中配置端口转发的原因 - 以便更新路由映射
【讨论】:
以上是关于UDP/TCP 发送和接收,无需端口转发的主要内容,如果未能解决你的问题,请参考以下文章
简单的多人游戏网络,无需专用服务器或需要玩家手动转发端口(无 UPnP)