NAT打洞
关于端口限制型与对称型打洞,假如A是端口限制性NAT,B是对称型NAT,C是服务器
1、A与C、B与C进行一次通讯,假设A发给C的IP和端口是IPA:PORTA,B发给C的IP和端口是IPB:PORTB1
2、C给B发消息,让B与A进行一次通讯,假设B发给A的IP和端口是IPB:PORTB2,B就有A的映射关系了,B能给A发了,B等A的回复
3、C给A发消息,让A给B回复,A给B的回复的IP和端口是IPA:PORTA,A也能给B发了
这样不是也能打洞吗,为什么其他地方都说端口限制型与对称型不能打洞,哪里有问题吗
![](https://profile-avatar.csdnimg.cn/e8129136381440999114a356be3985a3_small_planet.jpg!4)
端口限制型与对称型为什么不能打洞
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
4条回答 默认 最新
- 阿里嘎多学长 2024-05-20 12:36关注
以下内容由CHATGPT及阿里嘎多学长共同生成、有用望采纳:
您想要解决的问题:
您提问的目的是想要理解端口限制型NAT(Port Restricted Cone NAT)和对称型NAT(Symmetric NAT)为什么不能实现NAT穿透(NAT Hole Punching),以及在您提供的通信场景中,为什么这种打洞方式不能成功。
问题出现原因:
在端口限制型NAT和对称型NAT中,NAT设备会根据会话的发起者和目标来创建和维护映射关系。端口限制型NAT只允许从内部网络发起的特定外部端口的流量,而对称型NAT则要求每个会话的源地址和目的地址都必须是唯一的,即每次通信都需要建立一个新的映射。
在您描述的场景中,A和B分别与C通信,C尝试协助A和B建立直接的通信连接。然而,由于端口限制型NAT和对称型NAT的限制,直接使用A和B之间通信的IP和端口可能无法成功建立连接。
-
端口限制型NAT:它只允许从内部网络发起的特定外部端口的流量。如果B没有主动向A发起连接,那么A的端口限制型NAT可能不会为B的IP和端口创建映射,从而导致B无法向A发送数据。
-
对称型NAT:它要求每个会话都必须是唯一的,这意味着即使B知道了A的IP和端口,由于没有主动从B发起到A的会话,对称型NAT也不会为这种通信创建映射。
问题解决方案:
要解决这个问题,通常需要使用第三方服务器(如C)来协助建立连接。然而,由于端口限制型和对称型NAT的限制,这种方法可能不总是有效。以下是一些可能的解决方案:
-
使用第三方中继服务:通过一个支持NAT穿透的中继服务,A和B可以通过该服务交换数据,而不是直接通信。
-
使用UPnP或NAT-PMP协议:这些协议可以帮助NAT设备自动配置端口映射,从而允许A和B之间的直接通信。
-
使用STUN/TURN/ICE协议:这些协议是专门为NAT穿透设计的,可以动态地发现和建立通信路径。
提供代码:
由于这个问题主要涉及网络层面的配置和协议,而不是具体的编程代码,因此不提供具体的代码示例。
代码运行方式:
这个问题的解决方案通常涉及网络配置和协议的使用,而不是运行代码。如果需要实现上述解决方案,可能需要在网络设备上进行配置,或者使用支持这些协议的软件。
代码预期运行结果:
由于没有具体的代码示例,无法提供预期的运行结果。但是,如果成功实现了NAT穿透,预期结果是A和B能够直接通信,无需通过第三方服务器。
推荐相关链接:
解决 无用评论 打赏 举报 编辑记录 -
悬赏问题
- ¥200 csgo2的viewmatrix值是否还有别的获取方式
- ¥15 Stable Diffusion,用Ebsynth utility在视频选帧图重绘,第一步报错,蒙版和帧图没法生成,怎么处理啊
- ¥15 请把下列每一行代码完整地读懂并注释出来
- ¥15 pycharm运行main文件,显示没有conda环境
- ¥15 寻找公式识别开发,自动识别整页文档、图像公式的软件
- ¥15 为什么eclipse不能再下载了?
- ¥15 编辑cmake lists 明明写了project项目名,但是还是报错怎么回事
- ¥15 关于#计算机视觉#的问题:求一份高质量桥梁多病害数据集
- ¥15 特定网页无法访问,已排除网页问题
- ¥50 如何将脑的图像投影到颅骨上