我不明白为什么需要它。难道数据包路由不是路由器和交换机等网络设备的责任吗?它们应该找到从网关到终端用户设备的最短路径(实际上,路由器记住了之前发现的这些路由)。
此外,NAT协议用于将“内部IP”转换为“外部IP”及其相反操作。
那么,为什么其他用户需要熟悉我的内部网络设置呢?
NAT是一种权宜之计,旨在节省IPv4地址,直到IPv6普及,但它破坏了IP的端到端连接承诺。因此,某些事情无法通过NAT正确工作。有各种各样的权宜之计来解决NAT问题,而ICE就是其中的一部分。这在RFC 5245, Interactive Connectivity Establishment (ICE): A Protocol for Network Address Translator (NAT) Traversal for Offer/Answer Protocols中有所解释。
- 介绍
RFC 3264 [RFC3264]定义了一种用于建立多媒体会话的Session Description Protocol(SDP)消息[RFC4566]的两阶段交换机制。这种提议/回答机制被诸如Session Initiation Protocol(SIP)[RFC3261]等协议所使用。
使用提议/回答的协议在网络地址转换器(NATs)中操作起来很困难。因为它们的目的是建立媒体数据包的流,所以它们倾向于在其消息中携带媒体源和接收器的IP地址和端口,这已知在NAT中存在问题[RFC3235]。这些协议还试图直接在参与者之间创建媒体流,以便它们之间没有应用层中介。这样做是为了减少媒体延迟、减少数据包丢失和降低部署应用程序的运营成本。然而,这在NAT中很难实现。对此原因的全面处理超出了本规范的范围。
已经定义了许多解决方案,允许这些协议通过NAT进行操作。这些包括应用层网关(ALGs)、中间盒控制协议[RFC3303]、原始的Simple Traversal of UDP Through NAT(STUN)[RFC3489]规范,以及特定领域IP[RFC3102][RFC3103]和会话描述扩展,如用于实时控制协议(RTCP)[RFC3605]的Session Description Protocol(SDP)[RFC4566]属性。不幸的是,这些技术都有优缺点,使每种技术在某些网络拓扑中最优,但在其他情况下则是较差的选择。结果是管理员和实现者对其解决方案将部署的网络拓扑做出假设。这引入了复杂性和脆弱性到系统中。所需要的是一个单一的解决方案,足够灵活,能够在所有情况下都很好地工作。
本规范将交互式连通性建立(ICE)定义为基于UDP媒体流的NAT遍历技术(尽管ICE可以扩展到处理其他传输协议,例如TCP[ICE-TCP]),由提议/回答模型建立。ICE是提议/回答模型的扩展,通过在SDP提议和回答中包含多个IP地址和端口来工作,这些IP地址和端口随后通过对等连接性检查进行测试。在SDP中包括的IP地址和端口以及连接性检查是使用修订后的STUN规范[RFC5389]执行的,现在已重命名为用于NAT的会话遍历实用程序。新名称和新规范反映了它作为与其他NAT遍历技术(即ICE)一起使用的工具的新角色,而不是原始STUN规范所使用的独立NAT遍历解决方案。ICE还利用了绕过NAT的遍历(TURN)[RFC5766],这是STUN的一个扩展。因为ICE为每个媒体流交换了多个IP地址和端口,所以它还