我正在尝试一些p2p网络。 经过研究后,我了解到的最大障碍之一是“如果客户端位于NAT /防火墙后面怎么办” ,后来我发现了打孔技术,但并不一定保证它能正常工作。
据我所知,我不理解为什么它可能会失败,这是我到目前为止所知道的:
根据上图,这就是我了解如何建立成功连接的方式。
- 爱丽丝通过创建与目录服务器的连接来加入网络(1) 。 发生这种情况时, Alice的 NAT将创建一个从其公共ip到其本地ip的映射。
- 目录服务器接收连接并将Alice的公共
ip:port
存储在目录中 - 鲍勃 (2)做同样的事情,加入网络并在目录中发布他的
ip:port
- 爱丽丝想和鲍勃交流。 因此,她从目录中查找Bob的
ip:port
。 (3) - 爱丽丝在鲍勃的
ip:port
上发送她从服务器获取的数据。 (5) - 由于Bob还具有从is
ip:port
到其本地ip:port
的映射,因此NAT仅将在Bob的公共ip:port
上接收到的所有数据转发到他的计算机。 - 爱丽丝的同作品
我希望我对自己了解的解释很清楚。 我的问题是,对此有何困难或不可靠? 我肯定很想念一些东西。 你能解释一下这是什么吗?