自动访问 P2P 应用程序的端口 4900
当用户位于阻止外部访问端口 4900 的路由器后面时,点对点 (P2P) 应用程序通常会遇到困难。本文探讨了克服这一障碍的自动化解决方案。
建立 P2P 连接
该过程涉及以下关键步骤:
-
套接字创建:为每个分配了 IP 地址的网络适配器在端口 4900 上创建 UDP 套接字。
-
外部地址发现:利用 STUN 或 TURN 服务器来识别您的外部 IP 地址以及内部端口 4900 的外部端口映射。如果您的路由器支持,请考虑使用 UPnP。
地址交换和连接启动
-
地址发布:通过中央平台或服务发布发现的候选地址(IP 和端口对)。
-
候选交换:收到连接请求后,远程客户端也会确定其候选列表并共享它。
打孔技术
-
测试消息交换:在双方地址候选者之间交换测试消息。
-
回复确认:消息接收成功会触发回复发送回原地址。
-
可靠连接建立:这个迭代过程最终识别出一对适合可靠数据报交换的地址。
支持技术和协议
多项技术促进了这一过程:
-
STUN(NAT 会话遍历实用程序): 发现 NAT 和防火墙后面的客户端的外部 IP 地址和端口映射。
-
TURN(使用 NAT 周围的中继进行遍历): 在直接连接被阻止时为 P2P 连接提供中继。
-
ICE(交互式连接建立):定义 P2P 中 STUN 和 TURN 使用协议的框架。
-
WebRTC: 一个 ICE 变体,具有现成的库,用于使用 STUN 和 TURN 的 P2P 会话。
-
UPnP(通用即插即用)和 IGD(互联网网关设备协议):在兼容路由器上启用自动端口映射。
推荐图书馆
多个库简化了 ICE 实现:
-
libnice:Linux 的开源 ICE 实现。
-
libjingle: Google 开发的 Windows 和 Linux ICE 实现。
-
PJNATH: 集成在 PJSIP 库套件中的 ICE 堆栈,支持各种平台。
以上是P2P应用如何通过防火墙和NAT自动访问4900端口?的详细内容。更多信息请关注PHP中文网其他相关文章!