簡體   English   中英

公共網絡服務器與NAT后的服務器之間的雙向通信解決方案

[英]Solution for 2-way communcation between public network server and servers behind NATs

我有以下情況,並希望找到解決方案:

專用服務器A位於NAT之后,它沒有固定的公用IP地址。

公用服務器B具有公用IP。

因此,根據業務需求,公共服務器B將需要向私有服務器A發送消息。

我想知道是否有用於此類通信的Java解決方案?

由於私有服務器A沒有固定的IP地址,因此它首先必須具有一種方法來告知公共服務器B其IP /端口等,或者首先啟動類似websocket的連接。 然后使連接保持活動狀態,然后公共服務器B可以將數據發送回服務器A。

這種情況與UDP打孔相似但不完全相同。 由於我是Java新手,所以我想知道是否存在針對這種情況的現有Java庫?

限制是:

  1. 我們不允許配置NAT網絡,這意味着端口轉發不適用。

  2. 將會有許多NAT。 在每個NAT內,將有一個服務器(或群集)與公用服務器通信。 因此,websocket解決方案可能不是最佳解決方案,因為它將使公共服務器保持內存中的許多連接。

謝謝

NAT配置基本上會迫使您從位於NAT后面的服務器A到服務器B建立連接。如果您不想保持連接打開,則服務器A需要定期輪詢以獲取信息,然后斷開連接。 顯然,這會導致延遲。 服務器A在大部分時間內都斷開連接,並且僅在連接后才接收更新。

如果您有如此多的服務器而無法保持套接字連接打開,我會感到驚訝。

Java是附帶問題。 您將用Java打開的任何套接字或websocket都具有其他語言的直接類似物。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM