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 ...
随机推荐
- python中如何使用requests模块下载文件并获取进度提示?
Reference: https://www.zhihu.com/question/41132103 #!/usr/bin/env python3 import requests from conte ...
- JAVA-数据库之添加记录
相关资料:<21天学通Java Web开发> 添加记录1.使用语句对象Statement的executeUpdate()方法可以很方便地实现添加记录.2.只需要在executUpdae() ...
- JS正则验证邮箱的格式(转)
转载自:https://www.cnblogs.com/dyllove98/archive/2013/06/28/3161626.html 一.相关的代码 function test() { var ...
- Python开源机器学习框架:Scikit-learn六大功能,安装和运行Scikit-learn
Python开源机器学习框架:Scikit-learn入门指南. Scikit-learn的六大功能 Scikit-learn的基本功能主要被分为六大部分:分类,回归,聚类,数据降维,模型选择和数据预 ...
- <花荣《至尊狐狸》中国股市精英最优套利战术>读书笔记
书在这里 第一定律:博弈分析是一切实战操作的基础,资金的机会利润由主力投机状态决定,资金的风险承受度由投资标的价值底线锁定 第二定律:套利战术应是背景性的.主动性的.互动性的,是最安全最保守的.最明确 ...
- linux内核seq_file接口
seq相关头文件linux/seq_file.h,seq相关函数的实现在fs/seq_file.c.seq函数最早是在2001年就引入了,但以前内核中一直用得不多,而到了2.6内核后,许多/proc的 ...
- 【LINUX】——gvim中如何配置字体和背景
打开你的.vimrc文件,添加如下内容: set gfn=Tlwg\ Typist\ 16 colorscheme desert 然后保存退出,source .vimrc.如此,每次打开gvim时,加 ...
- 最近玩Bootstrap , 一些小工具 记录在案。
最近玩Bootstrap , 一些小工具 记录在案. 1 定制Bootstrap ,所见即所得的修改Bootstrap的各种变量,即时查看样式的变化. http://bootswatchr.com/ ...
- 请教 JTable 里的单元格如何使得双击进入单元格后,单元格的内容处于全选中状态
http://bbs.csdn.net/topics/390195204 ———————————————————————————————————————— java 达人, 最近在开发一个 java ...
- 高可用保证消息绝对顺序消费的BROKER设计方案
转自: http://www.infoq.com/cn/articles/high-availability-broker-design?utm_source=tuicool&utm_medi ...