如何知道NAT背后的公共ip和端口



我有一个NAT后面的客户端和一个可以通过这台计算机访问的服务器

像这样的东西:

  local ip    external ip IPe
              external port Pe
C --------- | ----------------- S
           NAT

我想让S知道C IPe和Pe用于在这两个之间传输

我该怎么做?

我使用的是python

如果S是服务器,则只执行

 conn, addr = s.accept()

否则,如果C对S一无所知这里有一个适合您的解决方案:您应该使用一个中间服务器来为您解决通信问题。

  1. C连接到服务器并发送他的外部端口号(IPe由服务器自动知道)
  2. 服务器存储IPe和Pe
  3. S向服务器请求C,并获得IPe和Pe
  4. 然后S可以自己联系C

要求:

  • TCP连接
  • S和C是客户端
  • 中间服务器

注意:秘密是C和S都知道服务器

最新更新