注册是SIP协议中重要的功能,所谓注册,就是用户A客户端将自己的联系地址告知服务器,以便后续有其它用户呼叫用户A时,服务器能够将呼叫转接到用户A. SIP协议中的联系地址是指由账号、IP/PORT、传输方式等组成的地址记录,也称为URI。
一、注册流程:
二、流程说明
1. 客户端首先发起注册,此时没有鉴权头
2. 服务器返回401进行鉴权
3. 客户端带上鉴权信息Authorization(账号、密码等)再次注册
4. 返回200-OK注册成功
三、常见问题
注(由于实际环境部署和软件实现差异,以下问题分析仅供参考)
1. 403错误
一般是密码不正确
2. 404错误
账号不正确/认证账号不正确
3. 408错误
服务端不响应
4. 500错误
服务端错误
5. 502错误
网络断开
四、消息格式解析
4.1 注册
REGISTER sip:192.168.0.201:5060;transport=udp SIP/2.0
Via: SIP/2.0/UDP 192.168.1.6:5060;rport;branch=z9hG4bKPj7ZkTqtRf1t8qu.gYYoocd.dBk86drsCG
Max-Forwards: 70
From: "1018" <sip:1018@192.168.0.201>;tag=fqEkbfW40BGFRa7XoJlFyIk-.yT7T3Ux
To: "1018" <sip:1018@192.168.0.201>
Call-ID: lcKW6mBcLBx0wngn@192.168.1.6
CSeq: 12990 REGISTER
User-Agent: VoIP
Contact: "1018" <sip:1018@192.168.1.6:5060>
Expires: 3600 注册超时时间
Allow: PRACK, INVITE, ACK, BYE, CANCEL, UPDATE, INFO, SUBSCRIBE, NOTIFY, REFER, MESSAGE, OPTIONS
Content-Length: 0
SIP/2.0 401 Unauthorized
v:SIP/2.0/UDP 192.168.1.6:5060;rport=5060;branch=z9hG4bKPj7ZkTqtRf1t8qu.gYYoocd.dBk86drsCG
f:"1018"<sip:1018@192.168.0.201>;tag=fqEkbfW40BGFRa7XoJlFyIk-.yT7T3Ux
t:"1018"<sip:1018@192.168.0.201>;tag=gmpKe30Btr2Zj
i:lcKW6mBcLBx0wngn@192.168.1.6
CSeq:12990 REGISTER
User-Agent:FreeSWITCH-mod_sofia/1.10.7-dev+git~20210720T181005Z~4c04914003~64bit
Allow:INVITE,ACK,BYE,CANCEL,OPTIONS,MESSAGE,INFO,UPDATE,REGISTER,REFER,NOTIFY,PUBLISH,SUBSCRIBE
k:timer,path,replaces
WWW-Authenticate:Digest realm="192.168.0.201",nonce="fdcf1fa0-a1bf-11ec-834a-51de18a27486",algorithm=MD5,qop="auth"
l:0
注:认证算法是由SIP注册服务器通过401消息告知客户端的,基本上都是MD5, 但由于MD5的低安全性,少数服务器要求使用SHA-256认证算法。
REGISTER sip:192.168.0.201:5060;transport=udp SIP/2.0
Via: SIP/2.0/UDP 192.168.1.6:5060;rport;branch=z9hG4bKPjhibPo5KuWptanbOg74iSI50U3Y6DEfGH
Max-Forwards: 70
From: "1018" <sip:1018@192.168.0.201>;tag=fqEkbfW40BGFRa7XoJlFyIk-.yT7T3Ux
To: "1018" <sip:1018@192.168.0.201>
Call-ID: lcKW6mBcLBx0wngn@192.168.1.6
CSeq: 12991 REGISTER
User-Agent: VoIP
Contact: "1018" <sip:1018@192.168.1.6:5060>
Expires: 3600
Allow: PRACK, INVITE, ACK, BYE, CANCEL, UPDATE, INFO, SUBSCRIBE, NOTIFY, REFER, MESSAGE, OPTIONS
Authorization: Digest username="1018", realm="192.168.0.201", nonce="fdcf1fa0-a1bf-11ec-834a-51de18a27486", uri="sip:192.168.0.201:5060;transport=udp", response="b4366d02187cb254adb617367cb7d77f", algorithm=MD5, cnonce="zIhex-YJ-8ChFLOTzhHyp-6raNK96Q06", qop=auth, nc=00000001
Content-Length: 0
SIP/2.0 200 OK
v:SIP/2.0/UDP 192.168.1.6:5060;rport=5060;branch=z9hG4bKPjhibPo5KuWptanbOg74iSI50U3Y6DEfGH
f:"1018"<sip:1018@192.168.0.201>;tag=fqEkbfW40BGFRa7XoJlFyIk-.yT7T3Ux
t:"1018"<sip:1018@192.168.0.201>;tag=HXFcgyHFQ1rje
i:lcKW6mBcLBx0wngn@192.168.1.6
CSeq:12991 REGISTER
m:<sip:1018@192.168.1.6:5060>;expires=600 服务器协商后的超时时间
Date:Sat, 12 Mar 2022 04:50:51 GMT
User-Agent:FreeSWITCH-mod_sofia/1.10.7-dev+git~20210720T181005Z~4c04914003~64bit
Allow:INVITE,ACK,BYE,CANCEL,OPTIONS,MESSAGE,INFO,UPDATE,REGISTER,REFER,NOTIFY,PUBLISH,SUBSCRIBE
k:timer,path,replaces
l:0