VOIP NAT穿越之SIP信令穿越
本文原创自 http://blog.csdn.net/voipmaker 转载注明出处。
本文是VOIP通信NAT系列专题的第三篇,
本文论述NAT对SIP协议穿越的影响。SIP协议是基于文本的,而他的一些地址是保存在消息头传输。NAT设备在没开启ALG情况下不会改动消息头地址,
多数client填写的地址都是内网地址,这就导致消息路由问题,SIP 信令穿越涉及两部分,一个是注冊。还有一个是INVITE(呼叫),涉及的消息头为contact头和via头,
contact头是告知对方自己直接可达的地址,via头告知对方,此消息是从哪个地址,哪个port送过来,接收端响应时依据via地址做响应,先说register, client注冊时
会把自己的地址port填写到contact头,但这个地址在nat环境下并无论用。注冊的作用是告知server自己的可达地址,后面有呼叫送给他时server直接送到这个地址就可以,
而client填写的私有地址在nat环境下并不可达。server兴许呼叫直接送这个地址是失败的。解决问题须要client支持 sip outbound, 其原理是server发现假设client是在nat环境下,则记录接收到register请求的地址和port。而不是contact地址和port。 这个地址和port一般是NAT设备给client映射的外部port,而NAT设备维护这个映射是 有时间限制的,为确保这个映射一直开启就须要client周期性发keep-alive包。包的类型有多种,有的直接周期发register,有的发options, rfc5626规范要求TCP用回车换行发送。UDP则用stun
的bind request 保持NAT 映射处于活跃状态。 这就攻克了呼叫client问题。 SIP穿越的还有一个问题是响应发送给谁。前面提到,响应者会依据via头做 response,但via头一般是内网地址。NAT环境下是不可达的,RFC 3581攻克了这个问题,通过在via头中添加 rport和received字段支持此扩展,rport在发起请求者的包中是空的,接收到收到后发现有这两个头,接收端会检測实际收到的包的地址和port,把这两个值填写到recived和rport中,告知请求发起者,同一时候在响应请求时把响应向这个地址和port发送,通常这个地址和port是NAT设备映射的地址和port。
至此SIP信令穿越问题完美解决。
下一篇文章讲述VOIP NAT穿越 之媒体穿越。
VOIP NAT穿越之SIP信令穿越的更多相关文章
- sip信令跟踪工具sngrep
概述 在VOIP的使用过程中,最常见的问题就是信令不通和语音质量问题. 通常的问题跟踪手段包括日志分析.抓包分析. 抓包的工具有wireshark.tcpdump等等,如果是只针对sip信令的抓包,则 ...
- SIP信令跟踪工具HOMER
概述 HOMER是一款100%开源的针对SIP/VOIP/RTC的抓包工具和监控工具. HOMER是一款强大的.运营商级.可扩展的数据包和事件捕获系统,是基于HEP/EEP协议的VoIP/RTC监控应 ...
- 《FreeSWITCH: VoIP实战》:SIP 模块 - mod_sofia
SIP 模块是 FreeSWITCH 的主要模块,所以,值得拿出专门一章来讲解. 在前几章时里,你肯定见过几次 sofia 这个词,只是或许还不知道是什么意思.是这样的,Sofia-SIP 是由诺基亚 ...
- SIP穿越NAT SIP穿越防火墙-SBC
FireWall&NAT FireWall是一种被动网络安全防卫技术,位于网络的边界.在两个网络之间运行訪问控制策略.防止外部网络对内部信息资源的非法訪问,也能够阻止特定信息从内部网络被非法输 ...
- [转]SIP穿越NAT&FireWall解决方案
原文链接(也是转载)http://blog.csdn.net/yetyongjin/article/details/6881491.我修改了部分错字. SIP从私网到公网会遇到什么样的问题呢? 1 ...
- [转]UDP/TCP穿越NAT的P2P通信方法研究(UDP/TCP打洞 Hole Punching)
[转]UDP/TCP穿越NAT的P2P通信方法研究(UDP/TCP打洞 Hole Punching) http://www.360doc.com/content/12/0428/17/6187784 ...
- 反弹,反向穿越防火墙,NAT网关等乱七八糟的术语
反弹,反向穿越防火墙,反向穿越NAT网关等一切与反向有关的网络活动,往往都是指同一回事情. 以前的木马都是客户端(攻击者)控制服务器(用户),把配置好的服务器发给用户来攻击,叫做正向. 现在的木马代码 ...
- Open Source VOIP applications, both clients and servers (开源sip server & sip client 和开发库)
SIP Proxies SBO SIP Proxy Bypass All types of Internet Firewall JAIN-SIP Proxy Mini-SIP-Proxy A very ...
- Android Sip学习(三)Android Voip实现
Android Sip学习(三)Android Voip实现 Android Sip学习(准备知识)SIP 协议完整的呼叫流程 Android Sip学习(一)Android 2.3 APIs S ...
随机推荐
- JAVA-JSP内置对象之out对象
相关资料:<21天学通Java Web开发> out对象1.out对象用来向网页输出信息. 方法 返回值 方法说 ...
- 连接池(Connection Pool)技术
解释: 连接池(Connection Pool)技术的核心思想是:连接复用,通过建立一个数据库连接池以及一套连接使用.分配.管理策略,使得该连接池中的连接可以得到高效.安全的复用,避免了数据库连接频繁 ...
- Python的可视化包 – Matplotlib 2D图表(点图和线图,.柱状或饼状类型的图),3D图表(曲面图,散点图和柱状图)
Python的可视化包 – Matplotlib Matplotlib是Python中最常用的可视化工具之一,可以非常方便地创建海量类型地2D图表和一些基本的3D图表.Matplotlib最早是为了可 ...
- C# if为false仍然进入方法体,==和qeual结果不一致
场景: 代码: if( e.Key == Key.Tab) { // ... } 断点调试:结果为false,进入方法体 ??? 更改为: if(Key.Tab.Equals(e.key)) { ...
- [命令]在uboot下查看文件系统的目录结构
在uboot下敲help可以查看该版本的uboot支持哪些命令 ls mmc 1:1 ls mmc 1:2 可以查看mmc设备上对应的文件目录,支持多种文件系统格式,如fat32/ext
- JAXP操作xml
DOM对象详解1.基本的DOM对象 DOM的基本对象有5个:Document,Node,NodeList,Element和Attr.下面就这些对象的功能和实现的方法作一个大致的介绍. Document ...
- 枚举Enum和常量0之间的恩怨
1,任何为0的常量表达式都能隐式的转换成枚举Enum. 对于这一点,在程序中没少吃苦头.特别是对于函数重载的情况,往往让人一头雾水. 看看下面的代码(摘自MSDN),你能猜到输出吗? public e ...
- android 图片处理
一.缩放 指宽.高缩放 (1)按比例缩放 在开发图片浏览器等软件是,很多时候要显示图片的缩略图,而一般情况下,我们要将图片按照固定大小取缩略图,一般取缩略图的方法是使用BitmapFactory的de ...
- Opengl绘制我们的小屋(二)第一人称漫游
这章我们先讲第一人称漫游的实现.在openTK里,我们用函数Matrix4.LookAt(caram.Eye,caram.Target,Vector3.UnitY)来放置摄像机,其中三个参数分别与摄像 ...
- DataFrame重命名单个column
由于当时的需求我的a表和b表的公共键名称不一样 例如这个 那么我就可以进行重命名: df1 = DataFrame(np.arange().reshape((, )), columns=['a', ' ...