SIP穿越NATFireWall

SIP穿越NAT&FireWallSIP从私网到公网会遇到什么样的问题呢?包的地址转换。SIP消息里面的SIP地址转换。SIP消息里面的SDP中的RTP地址转换。NAT和Firewall的基本原理首先,NAT的几种方式:FullCone:当一台私网内的主机向公网发一个包,其本地地址和端口是{A:B},NAT会将其私有地址{A:B}转换成公网地址{X:Y}并绑定。任何包都可以通过地址{X:Y}送到该主机的{A:B}地址上,NAT会将任何发送到{X:Y}的incoming包的地址{X:Y}转换成{A:B}。Partial/RestrictedCone:当一台私网内的主机向公网发一个包,其本地地址和断口是{A:B},NAT会将其私有地址{A:B}转换成公网地址{X:Y}并绑定。任何包都可以通过地址{X:Y}送到该主机的{A:B}地址上,但是,NAT只为第一个发往{X:Y}的包绑定成{A:B}|{X:Y}<->{C:D},其中{C:D}是那个包的源地址和端口。也就是说,只有来自{C:D}的包才能于主机{A:B}通信。Partial和RestrictedCone的区别是Partial只绑定incomingpacket的IP地址,而RestrictedCone会绑定incomingpacket的IP地址和端口。也就是上面描述的那种情况。SymmetricCone:当一台私网内的主机向公网某台主机发送一个包,{A:B}à{C:D}。NAT会将其地址{A:B}转换成{X:Y},并为其绑定成{A:B}|{X:Y}<->{C:D}。NAT只接受来自{C:D}的incomingpacket,将它转给{A:B}。也就是说,如果私网内的主机要向外面发送一个包,它必须要知道对方的公网IP和端口。但如果对方也是处于一个私网内,它就很难获知对方的公网IP和端口。由此可见,SymmetricCone条件最严格,Partial/RestrictedCone次之,FullCone条件最不严格。下面再看看Firewall的基本策略:lFirewall会判断所有的包是来自内部(Inside)还是外部(Outside)。l一般,允许所有来自inside的包发出去。l一般,允许来自Outside的包发进来,但这个连接必须是由Inside发起的。l一般,禁止所有连接由Outside发起的包发进来。l一般,firewall会允许几个信任的outside主机,他们可以发起建立连接,并发包进来。所有NAT和Firewall都是对于TCP/IP层以下进行处理和过滤的,而SIP应用的地址是在应用层。所以必须采用其他的途径来解决这一问题。针对不同的NAT类型,可以有不同的解决方案。lUPnPlExternalQuerylSTUNlALG其中前3种都是由SIPClient(包括UA和Proxy)通过某种手段或协议在INVITE之前获取自己的公网地址和端口。需要SIPClient提供额外支持,并且也不适应所有的NAT方式。ALG(ApplicationLayerGateway)适应所有NAT方式,并不需要SIPClient做任何额外的支持。它对Application层的SIP信令进行处理和修改,从而做到透明转换地址。下面针对一个案例详细描述ALG的解决方案。SIPALG解决方案ALG修改SIP消息里面的SIP地址和端口和SDP消息里面的RTP地址和端口,其中RTP地址和端口要向RTPProxy请求获得,RTPProxy分配自己的一个空闲的地址和端口,并和这个Call保持映射关系。并为分配给呼叫双方的地址和端口进行绑定,这样,呼叫双方的RTP连接地址都是RTPProxy,由RTPProxy经过中转,发至真正的目的地。假设,有两个SIPClient要进行通信,Ada和Bob,他们分别位于自己的NatServer后面:其中两台NATServer都是SymmetricCone方式。其信令流程如下:1.Ada发起信令,InviteBob。IPPacketIPAddress:From:192.168.1.10:5060To:128.97.41.56:5060(SIPALG)SIPMsgIPAddress:From:192.168.1.10:5060To:128.97.41.56:5060SDPBodyIPAddressforRTP:192.168.1.10:100242.经过NATServer,NAT将其私有地址转换成公网地址,并绑定,由于是采用SymmetricCone方式,所以还绑定目的的IP地址。{192.168.1.10:5060}|{128.96.41.1:5678}<->{128.97.41.56:5060}IPPacketIPAddress:From:128.96.41.1:5678To:128.97.41.56:5060(SIPALG)SIPMsgIPAddress:From:192.168.1.10:5060To:128.97.41.56:5060SDPBodyIPAddressforRTP:192.168.1.10:100243.SIPALG接受到该INVITE,发现其包的IP地址和SIPIP地址不同,就判断其是经过NAT,于是就将其相关的SIPIP地址修改。并检查它的Body中是否是包含SDP信息,如果是,且有RTP地址,SIPALG就会去向RTPProxy请求一个公网RTP地址来代替原有的RTP地址。IPPacketIPAddress:From:128.97...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供参考,付费前请自行鉴别。
3、如文档内容存在侵犯商业秘密、侵犯著作权等,请点击“举报”。

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

客服邮箱:

biganzikefu@outlook.com

所有的文档都被视为“模板”,用于写作参考,下载前须认真查看,确认无误后再购买;

文档大部份都是可以预览的,笔杆子文库无法对文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;

文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为依据;

如果您还有什么不清楚的或需要我们协助,可以联系客服邮箱:

biganzikefu@outlook.com

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

确认删除?