据我所知,ICE协议用于发现从最终用户设备到外部的节点/设备"。
我不明白为什么需要它。不是分组路由是路由器和交换机等网络设备的责任吗?他们应该找到从网关到最终用户设备的最短路径(实际上,路由器会记住他们以前发现的那些路由)。
此外,NAT协议用于转换内部ip"到"外部ip"反之亦然。
再次,
为什么其他用户需要熟悉我的内部网络设置?
答案 0 :(得分:4)
NAT是一种kludge,用于尝试保护IPv4地址,直到IPv6变得无处不在,并且它打破了端到端连接,这是IP的承诺。因此,有些事情无法通过NAT正常工作。围绕NAT kludge有各种各样的工作,而ICE就是其中的一部分。这在RFC 5245, Interactive Connectivity Establishment (ICE): A Protocol for Network Address Translator (NAT) Traversal for Offer/Answer Protocols:
中有解释
- 简介
醇>RFC 3264 [RFC3264]定义会话描述的两阶段交换 用于建立的协议(SDP)消息[RFC4566] 多媒体会议。协议使用此提议/应答机制 例如会话启动协议(SIP)[RFC3261]。
使用提供/回答的协议很难通过网络运行 地址转换器(NAT)。因为他们的目的是建立一个 媒体数据包流,它们往往携带IP地址和端口 已知的消息中的媒体源和接收器 通过NAT [RFC3235]有问题。协议也寻求创造 媒体直接在参与者之间流动,所以没有 应用层介于它们之间。这样做是为了减少 媒体延迟,减少数据包丢失,并降低运营成本 部署应用程序。但是,这很难 通过NAT实现。对此的充分理由是 超出本规范的范围。
已经定义了许多允许这些协议的解决方案 通过NAT运行。这些包括应用层网关(ALG), 中间件控制协议[RFC3303],原始简单 遍历UDP通过NAT(STUN)[RFC3489]规范和Realm 具体IP [RFC3102] [RFC3103]以及会话描述 使它们工作所需的扩展,例如会话描述 实时控制协议的协议(SDP)[RFC4566]属性 (RTCP)[RFC3605]。不幸的是,这些技术都有优点和缺点 在某些网络拓扑结构中,每个网络都是最优的,但是a 别人选择不好。结果是管理员和 实现者正在对该拓扑结构做出假设 将部署其解决方案的网络。这介绍了 系统的复杂性和脆弱性。我们需要的是一个 单一解决方案,足够灵活,可以很好地运作 的情况。
此规范定义了交互式连接建立 (ICE)作为基于UDP的媒体流的NAT遍历技术 (尽管ICE可以扩展到处理其他传输协议,例如 作为TCP [ICE-TCP])由提议/答案模型建立。 ICE是一个 提供/答案模型的扩展,并通过包括一个 SDP中的多种IP地址和端口提供和解答, 然后通过点对点连接测试连接性 检查。 SDP中包含的IP地址和端口 使用修订的STUN规范执行连接性检查 [RFC5389],现在已重命名为NAT的Session Traversal Utilities。该 新名称和新规范反映了其作为工具的新角色 与其他NAT遍历技术(即ICE)一起使用而不是一个 独立的NAT遍历解决方案,作为原始的STUN规范 是。 ICE还利用NAT周围的遍历使用继电器(TURN) [RFC5766],STUN的扩展。因为ICE交换了多样性 每个媒体流的IP地址和端口,它也允许 多宿主和双栈主机的地址选择,以及为此 它弃用RFC 4091 [RFC4091]和[RFC4092]。
的原因
答案 1 :(得分:2)
防火墙。它们通常配置为将来自万维网的任何未经请求的流量反弹给您。他们只赞成你开始与服务器联系,然后只允许向你回流,这就是它。除非你的朋友都拥有静态IP(很少有人可以证明这一点),否则这是一个对等通信的恶劣环境。
ICE尝试通过枚举可能到达另一方的地址和端口来尝试解决此问题,并尝试连接到这些地址,通过在两端发起出站请求,或者如果所有其他方法都失败,则回退到通过一个TURN服务器,如果指定的话。
有关此问题的详情,请参阅此WebRTCHacks article。
为什么其他用户需要熟悉我的内部网络设置?
因为其他用户有时在您的内部网络上。例如局域网游戏。