注册流程描述如下:
(a) SIP 代理向 SIP 服务器发送 Register 请求;
(b) SIP 服务器向 SIP 代理发送响应 401,并在响应的消息头
WWW_Authenticate 字段中给出适合 SIP 代理的认证体制和参数;
(c) SIP 代理重新向 SIP 服务器发送 REGISTER 请求, 在请求的 Authorization
字段给出信任书,包含认证信息;
(d) SIP 服务器对请求进行验证,如果检查出 SIP 代理身份合法,向 SIP 代理发送
成功响应 200OK,如果身份不合法则发送拒绝服务应答。
注册的请求消息内容范例如下:
1 REGISTER sip:34020000002000000001@3402000000 SIP/2.0
2 Via: SIP/2.0/UDP
192.168.137.11:5060;rport;branch=z9hG4bK1371463273
3 From: sip:34020000001320000003@3402000000;tag=2043466181
4 To: sip:34020000001320000003@3402000000
5 Call-ID: 1011047669
6 CSeq: 1 REGISTER
7 Contact: sip:34020000001320000003@192.168.137.11:5060
8 Max-Forwards: 70
9 User-Agent: IP Camera
10 Expires: 3600
11 Content-Length: 0
第 1 行表明这条 SIP 消息的方法(Method)是 REGISTER,
34020000002000000001 是 SIP 服务器的国标 ID,国标 ID 指的是由中
心编码 (8 位) 、行业编码(2 位) 、类型编码(3 位) 和序号 (7 位) 四个码段
共 20 位十进制数字字符构成,具体国标 ID 的编码方法可以参考 GB/T
28181—2016 中的附录 D。3402000000 指的是 SIP 服务器的域国标
ID,SIP/2.0 指的是 SIP 协议版本。
第 2 行为 Via 头,Via 头中包含了发送请求方的相关信息,后续需要使用
这些信息进行回复。SIP/2.0/UDP 表示使用的是 2.0 版本的 SIP 协议,使
用的传输协议是 UDP,也可以使用 TCP 协议。192.168.137.11:5060 为
请求发送方的 IP 地址和端口号。Via 头中必须包含 branch 参数,具体值
是一个在整个 SIP 通信过程中不重复的数值。branch 是一个事务 ID
(Transaction ID),用于区分同一个 UA 所发起的不同 Transaction,它
不会对未来的 request 或者是 response 造成影响,对于遵循 IETF
RFC3261 规范的实现,这个 branch 参数的值必须用”z9hG4bK” 打头.
其它部分是对 To, From, Call-ID 头域和 Request-URI 按一定的算法加