【Freeswitch从入门到精通】三、SIP和SDP理解

【Freeswitch从入门到精通】三、SIP和SDP理解

1、SIP和SDP理解

1)默认编译安装目录:/usr/local/freeswitch
2)生成默认的配置文件: make samples
3)启动

  • 前台启动:/user/local/freeswitch/bin/freeswitch -nonat
  • 后台启动:/user/local/freeswitch/bin/freeswitch -nonat -nc

4)列出freeswitch状态:status
5)sofia status 列出sofia模块的状态
profile 相当于一个ua,sip协议栈
6)sip
也是一个请求,一个响应
请求方为UA,被请求方为UAS(Server)

打开sip消息:sofia profile internal siptrace on
关闭sip消息:sofia profile internal siptrace off

打开sip消息,然后通过sip电话进行注册。

recv 567 bytes from udp/[192.168.123.197]:37056 at 08:14:28.881679:
------------------------------------------------------------------------
REGISTER sip:192.168.123.197:5060 SIP/2.0
Via: SIP/2.0/UDP 192.168.123.197:37056;branch=z9hG4bK-d87543-43498b26a33d5443-1--d87543-;rport
Max-Forwards: 70
Contact: <sip:1001@192.168.123.197:37056;rinstance=e73c4faed73b689c>
To: "1001"<sip:1001@192.168.123.197:5060>
From: "1001"<sip:1001@192.168.123.197:5060>;tag=0b5e3c5a
Call-ID: ZmNlZjIwNDJlNzEzNjE0ZmU5ZTkyOTQ0MDM4ZTA1MDc.
CSeq: 1 REGISTER
Expires: 3600
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY, MESSAGE, SUBSCRIBE, INFO
User-Agent: eyeBeam release 1011d stamp 40820
Content-Length: 0

send 675 bytes to udp/[192.168.123.197]:37056 at 08:14:28.885643:
------------------------------------------------------------------------

REGISTER 表示注册消息
Contact: 表示本电话联系地址信息,也是用于freeswitch保存在本地的注册电话信息
Expires: 当前注册信息的有效期,如果注销,这儿为0.

流程如下

a - 电话向sip注册:REGISTER sip:192.168.123.197:5060 SIP/2.0

b - sip回复电话未认证: SIP/2.0 401 Unauthorized
发送电话认证时的加密信息:
WWW-Authenticate: Digest realm=“192.168.123.197”, nonce=“d210fb20-172b-4555-9ebf-e3a851053501”, algorithm=MD5, qop=“auth”

c - 电话重新向sip注册:REGISTER sip:192.168.123.197:5060 SIP/2.0

Authorization: Digest
username=“1001”,realm=“192.168.123.197”,nonce=“d210fb20-172b-4555-9ebf-e3a851053501”,uri=“sip:192.168.123.197:5060”,response=“0ec1e0289db8afc67868475a6d139e46”,cnonce=“dc4d0497893612ad989dea9e3ebd9398”,nc=00000001,qop=auth,algorithm=MD5

携带了上一步的加密信息

主要看responsenonce,用户名,密码,随机字符串生成的加密串。freeswitch与电话共享随机数,所以能够将该加密串对应上后,说明认证通过了。

d - sip向电话发送注册成功:SIP/2.0 200 OK

7)B2BUA: freeswitch接收A传过来的消息,然后将新的信息传给B。这就是背靠背式。
8)SIP信令: 负责连接通话
9)SIP日志
recv 是UA发送的消息
send 为freeswitch发送的消息

code响应消息
1XX 临时响应
2XX 为最终响应,一般为成功
3XX 转移,比如:重定向服务; A—》B—》C,B直接让A找C
4XX 客户端错误,一般为空号
5XX 服务器错误
6XX 全局错误消息

7)sdp
sip建立通话过程中,携带了sdp,sdp主要携带了媒体参数(ip,port,协商媒体编码),协商完成后,双方开启端口号,收发音频rtp包。

在客户端INVITE中,会有Content-Type消息为 application/sdb
请添加图片描述
204个字节长度
请添加图片描述
这是sdp消息
v:版本
o
s
c:connection连接
t
m:media媒体 64030端口号 RTP/AVP RTP传输 8000频率
a:解释media消息

8) show channels 显示当前通话
请添加图片描述
这个uuid唯一标志了该channel
inbourd 表示呼入
请添加图片描述
请添加图片描述

R read,表示收媒体
W write,表示发媒体
b=172 表示160 + 12 字节数
两个IP和端口号,表示本端和目标端的地址
pt=8 pcma编码压缩
ts 时间戳,不是真正意义上的时间戳,前后时间戳大小相差也是160,如果不是,就是丢包了
seq 序列号,收连续,发也是连续,最大不超过65535,如果不连续就是丢包了,也有可能乱序了,需要调整,使用buffer做缓存解决。
m: marker标志符,更换音频流会更改。

8)初始freeswitch 建立通话机制,需要10秒
请添加图片描述
请添加图片描述
freeswitch默认保护机制,如果使用默认密码,增加了10秒保护。
reloadxml 重新加载更新的xml文件

9) app
bind_meta_app 绑定按键
请添加图片描述
第二句
1 按键1,一般是按 * 2
b a是主叫,b是被叫,绑定那边分机,一般都是b
s same leg
record_session 是一个app,用于录音,后面为参数,包括了保存路径,名称

第三句:
请添加图片描述
execute_extension 这个app,用于执行extension,去features中找cf extension,然后被转到一个会议中

10)set 设置通道变量

hangup_after_bridge=true A–>freeswitch–>B,A拨打B,如果B接通挂断,那么A也挂断。
continue_on_fail=true A–>freeswitch–>B,A拨打B,如果B没接通直接挂断,那么会继续执行,比如后续可能会自动应答,有ring_back,或者语音信箱。

11)hash 哈希表,一般会增删改查一些数据到哈希表

请添加图片描述
请添加图片描述
通过查询 hash key获取value

12)log 输出日志, data需要写需要输出的内容,ERR 表示log level
请添加图片描述
输出日志颜色为红色

13)info 输出通道变量的所有内容,data可不写

14)db: 存放数据库内容
请添加图片描述
类似redis,插入k,v值,并获取k对应value值

15) play 音频路径 播放音频文件。

16) transfer 转移
请添加图片描述
转到了30XXdefault XML中找extension
请添加图片描述
进入了30XX会议。

通过命令conference list 查看当前的会议。

17)conference list 查看当前的会议

18) uuid_transfer 将当前channel转到 其他路由下(路由 extension dialplan context
请添加图片描述
uuid 查找,通过show channels

19)sleep 等待时间,单位:毫秒

20)load mod_xxx 加载模块

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值