论文部分内容阅读
NGN(Next Generation Network,下一代网络)是基于分组技术的网络,能提供多种电信级业务,满足人们对各种新业务的需求[1]。其中,在NGN上提供实时语音和多媒体业务是当前的热点。与此同时,人们注意到,全球的IP地址资源匮乏。解决IP地址匾乏问题的方案主要有CIDR,NAT和IPv6,其中NAT是一种已经广为使用的技术。当位于内部网络的节点与公众网络进行通信时,在IP分组从源地址在到达目的地址的过程中,NAT修改该IP分组中的源、目的地址和源、目的端口,通过这种修改将私有IP地址映射到全球唯一的IP地址。而基于SIP协议的多媒体通信需要通过信令消息中的IP地址和端口来实现目的地寻址,因此内网的用户在穿越NAT和外网用户通信时不仅需要对TCP/UDP层的端口信息以及IP层的源地址和目的地址进行转换,还需要对IP分组中的信令消息所涉及的私有地址进行转换,由此产生了SIP协议的NAT穿越问题。随着NGN开始步入商业性的规模应用,SIP协议作为目前通信界最活跃的通信协议之一,研究SIP协议的NAT穿越问题无疑具有十分重要的实用意义。本文在介绍SIP及其相关协议的基础上,对NAT的工作机制进行了分析,深入研究SIP穿越NAT的过程,在此基础上分析了三种NAT穿越的解决方案:客户端解决方案,路由边界解决方案和服务器端解决方案。通过比较各自的优缺点,本文决定使用STUN协议来解决SIP穿越NAT的问题。基于跨平台的思想,本文使用java语言对STUN协议进行开发,为位于内部网络的终端设备能够探测NAT的存在以及NAT的类型提供了设计方案并给予相关实现,同时为STUN客户端嵌入SIP用户代理设计了嵌入方案。