sip 协议是基于请求-响应模式的,客户端和服务器在发出请求时都等待对方的响应,其中一些请求很重要,在tcp/ip网络环境中由于ip包,防火墙,nat ,sbc,proxy 可能都在一路通话中存在,这些因素会影响呼叫。
sip call setup :invite --> 200 ok -->ACK
为了建立一个会话,客户端发起一个invite 事务,等待响应,当响应到达时(200 ok),客户端 返回ACK确认,这就是典型的三次握手,
由于在等待响应时,被叫可能振铃很长时间,协议栈必须确保在呼叫还没有建立起来前设备处于在线状态,所以在invite 和200 ok 之间会发生一下过程。
1. invite -> 100 trying
我们等待的第一个响应通常是 100 trying, 这个响应表明服务器已经收到明显合法的invite 请求(服务器收到请求后 先通过语法层检测消息的合法性),是一个临时响应,虽然服务器收到了invite 但被叫还没有被请求,即跟被叫还没关系。这里的服务器 可以是 sip终端,代理服务器(有状态代理)或者是sbc. 这里注意一点,客户端收到 100 trying 时 并不会响应 200 ok. 即 如果服务器发送 100trying 后不会等待这个响应的确认。
2. 服务器发送 100 临时应答后 会 代替客户端请求被叫,被叫 返回180 ringing 或183Session Progress ,服务器 转发给客户端,
这表明客户端的请求至少已经到达被叫的一个设备终端(服务器可能呼叫多个被叫的可达地址)。
3. 最后,被叫摘机,我们收到 一个 200 ok 响应,在这个响应中我们通过查看contact 头域可以知道被叫的直接联系地址。
4. 为了确认 我们可以与被叫建立联系,客户端返回 ack 确认给 contact 地址,如果这个ACK没有被被叫收到,那么此次呼叫失败。
5. 如果我们的invite 请求收到非 200应答,如 busy, rejected, 我们仍然发送 ack 确认我们已经收到invite请求的响应。
记住: 只有 invite请求 才有ACK确认,其他请求 如 prack, publish , 都没有!!!,其他请求只是基于请求 --响应,而没有ack, 没有三次握手,asterisk 里把 这种请求叫做 CRITICAL 请求。
asterisk sip中的qualify 参数 与sip 请求方法 OPTIONS 有关。
如果 在sip.conf 中开启 qualify ,asterisk 服务器会定时构造OPTIONS请求发给注册到上面的客户端来检测客户端的存活与否,
而且,如果服务器收不到请求的响应会重发,直到在指定时间内仍没有反应,此时服务器认为客户端不可达。
分享到:
相关推荐
sip server 环境详细手册!VMware player的安装配置、CentOS5.5安装配置、asterisk安装配置,以及常用sip命令
使用Asterisk作为SIP.2 H.323网关配置
包含:asterisk.18.11.1源码...asterisk-18-current.tar.gz libedit_3.1-20210910.orig.tar.gz openssl-1.1.1.tar.gz jansson-2.11.tar.gz sqlite-autoconf-3380200.tar.gz pjproject-2.10.tar.gz libuuid-1.0.3.tar.gz
基于sip协议,用asterisk作为服务器,实现voip软电话功能,实现了接听,呼叫,挂机,呼叫转移,以及通信录等功能。
用法:check_asterisk_siptrunk.pl [-v | --verbose] [--host | -H主机] [--port | -P端口] --user AMIUser --pass AMIPass --peer SIP Peer -?, --usage Print usage information -h, --help Print detailed ...
SIP协议讲座-Asterisk.pptSIP协议讲座-Asterisk.ppt
COMPONENTE DE DELPHI PARA LLAMADAS EN ASTERISK POR EL PUERTO SIP ES NECESARIO HACER LA INTALACION CORRESPONDIENTE Y CARGAR LA RUTA DEL ARCHIVO FUENTE.
extensions.conf中使用sip设备的语法是SIP/devicename,devicename名在下一节中说明。 如果用户在Internet上,可以使用SIP/username@domain形式,同时不要忘记打开DNS SRV功能。 如果定义了一个SIP代理,可以使用SIP/...
asterisk SIP 开源的 asterisk 编程参考
借鉴asterisk sip 服务器 实现一个工具连。
一套完整的基于asterisk的ip电话配置。Asterisk PBX 快速安装向导,以及sip设置实现sip通话,以及Win32下的wxCommunicator的配置
Now it's time to compile and install Asterisk. Let's change to the directory which contains the Asterisk source code. 从源代码安装 asterisk sipserver VOIP RTP pjsip webrtc
修改sip_general_custom.conf(作为测试,在所有SIP 通道上启用提示语为中文,在实际应用中,可根据需要修改--zapata-channels.conf,sipXXX.conf,IAXXXX.conf...,也可在FreePBX的WEB界面中有language选项的地方修改--...
讲座-Asterisk
phones (POTS)ISDN (Integrated Services Digital Network)Both BRI (Basic Rate)and PRI (Primary Rate)Asterisk 支持的协议包括:Session Initiation Protocol (SIP)H. 323 (ITU standard, contributed...
Asterisk 简介 Asterisk 架构 Asterisk程序框图
Asterisk学习必备,共5本书籍,学习助手 Asterisk权威文档(第3版).pdf Asterisk,the future of telephony.pdf Building+Telephony+Systems+with+Asterisk.pdf Asterisk+For+Dummies+2006.pdf Asterisk_Developers_...
asterisk 代码分析, sip_chan
特征管理存储在MySQL中的Asterisk实时SIP对等体; 设置Cisco / Linksys IP电话:Cisco SPA504g等; 预配Linphone软电话(实验性)。安装设置星号以将实时SIP对等存储在MySQL DB TODO中创建MySQL数据库并应用方案TODO...
Asterisk权威指南中文(第3版) Asterisk权威指南(第3版)第15章自动话务员 Asterisk权威指南(第3版)第02章Asterisk体系结构 Asterisk权威指南(第3版)第05章用户设备配置 Asterisk权威指南(第3版)第06章Dialplan基础 ...