Webrtc 常规计算机的静态和公共IP地址
我想用WebRTC在浏览器上做一个消息传递应用程序,但我想摆脱像STUN和TURN服务器这样的第三方(我也想摆脱信令服务器,但首先要做的是)。我希望用户在浏览器Webrtc 常规计算机的静态和公共IP地址,webrtc,ipv6,p2p,nat,ipv4,Webrtc,Ipv6,P2p,Nat,Ipv4,我想用WebRTC在浏览器上做一个消息传递应用程序,但我想摆脱像STUN和TURN服务器这样的第三方(我也想摆脱信令服务器,但首先要做的是)。我希望用户在浏览器localStorage中以键值方式保留联系人:人名=>IP地址 我真的不在乎用户如何找到自己的公共IP地址(他们可以做一个ipconfig,因为没有web API来检索它),也不在乎他们如何分发它(他们可以使用像Messenger这样的集中式服务将公共IP地址提供给朋友,或者他们可以在名片上使用二维码) 但我的主要问题是,我希望这些公共
localStorage
中以键值方式保留联系人:人名=>IP地址
我真的不在乎用户如何找到自己的公共IP地址(他们可以做一个ipconfig
,因为没有web API来检索它),也不在乎他们如何分发它(他们可以使用像Messenger这样的集中式服务将公共IP地址提供给朋友,或者他们可以在名片上使用二维码)
但我的主要问题是,我希望这些公共IP地址是静态的,因为我不想在每次网关更改我的公共IP地址时通知我的所有朋友更新他们的联系文件
在IPv4中,可用地址太少(只有40亿),所以公共静态地址都保留给网站和住宅网关。每当我想访问Internet时,我的网关都会为我的计算机打开一个特定的端口。例如,如果我的网关具有公共地址1.2.3.4
,则我的计算机的“公共地址”将暂时为1.2.3.4:3000
。这个过程称为NAT。要找到自己的“公共地址”,必须向STUN服务器发送请求,该服务器将用它看到的IPv4地址和端口进行响应。但是网关会在某个点关闭端口的连接,所以这不是我想要的公共静态地址
但在IPv6中,它是不同的,可能的地址数量高得离谱(2^128),因此理论上我们可以给世界上每台计算机一个静态公共地址。NAT基本上是无用的(我这里不是说防火墙)。但同样存在一个问题,在IPv6中,有一个地址是静态的但不是公共的,还有一个或多个地址是公共的但不是静态的。所以IPv4并没有真正改变什么,它仍然不能解决我的问题
我有两个问题:
- 如何为普通计算机提供公共和静态地址?我不希望我的用户干预他们的路由器/ISP或在他们的计算机上安装任何东西
- 为什么我们都没有静态和公共IPv6地址?这背后有设计选择吗
谢谢您的帮助。您的问题不是真正的编程问题,因此我假设您需要了解这一点,因为您正在开发使用IPv6的软件。从应用程序的角度来看:
en2: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
ether c8:e0:eb:5c:af:61
inet6 fe80::1074:8568:e447:d9e3%en2 prefixlen 64 secured scopeid 0x12
inet6 2a02:xxxx:xxxx:xxxx:3e:873f:837:1417 prefixlen 64 autoconf secured
inet6 2a02:xxxx:xxxx:xxxx:b19c:71c5:1de8:8fde prefixlen 64 autoconf temporary
en2:flags=8863 mtu 1500
乙醚c8:e0:eb:5c:af:61
inet6 fe80::1074:8568:e447:d9e3%en2预桥64安全作用域ID 0x12
inet6 2a02:xxxx:xxxx:xxxx:3e:873f:837:1417预桥64自动锁紧
inet6 2a02:xxxx:xxxx:xxxx:b19c:71c5:1de8:8fde预桥64自动连接临时
您可以看到长期安全地址和短期临时地址
如果不知道您开发的是哪种操作系统和哪种编程语言,我将无法进一步帮助您。请调整您的问题以包含该信息。“…住宅网关不会将静态公共IPv6地址分配给与其连接的计算机…”现代主机操作系统用于IPv6寻址。可以禁用该功能,但主机配置在这里是离题的。谢谢您的回答。对不起,我的问题一点也不清楚,我已经对它进行了大量的编辑。现在几乎是同一个问题了。