论文部分内容阅读
VoIP(Voice over IP)是一种以IP电话为主,并推出相应的增值业务的技术。VoIP最大的优势是能广泛地采用Internet和全球IP互连的环境,提供比传统业务更多、更好的服务。它也是目前Internet应用领域的一个热门话题。同时,由于SIP协议与H.323协议相比具有更大的优势,所以VoIP系统越来越多的采用SIP协议。本文对基于SIP协议的VoIP系统中关键技术进行了研究,无疑具有重要的实用意义。VoIP的大规模应用将极大地增加对IP地址的需求。当前VoIP重点考虑使用NAT穿越技术来解决地址匮乏的问题。与支持HTTP等数据穿越的传统NAT防火墙不同的是,基于H.323、SIP等协议的VoIP应用需通过信令消息中的IP地址和端口来实现目的地寻址,因此NAT穿越时不仅需要对TCP/UDP层的端口信息以及IP层的源地址和目的地址进行变换,还需对IP包载荷中的相关地址信息进行变换。因此NAT穿越问题是目前开展VoIP业务最大的障碍,迫切需要解决。本文首先分析了基于SIP的VoIP系统中相关协议,介绍了防火墙与NAT以及Linux下防火墙和NAT的实现方式,并介绍了目前业界NAT穿越的几种解决方案。本文着重给出了一种Linux平台上应用层网关(ALG)解决NAT穿越的具体实现方案。实现方案归纳了SIP穿越NAT时所需修改的字段以及修改方法,并提出了一个ALG状态机,该状态机不仅能够使SIP信令顺利穿越NAT还可以记录当前SIP通话状态并控制RTP媒体信道。本文遵循软件工程的要求,对方案进行了功能测试、性能测试等。研究和实践表明,本文所提出的ALG的方案能够有效的解决典型的SIP穿越NAT问题,为VoIP的大规模应用提供了参考。