SIP的注册过程很容易理解。首先我有一个号码,但我的号码可以移动的话,那服务器如何才能找到我呢?SIP的注册机制将sip终端的位置报告给注册服务器。这里的注册服务器仅仅是一个逻辑角色。并不一定是独立的物理实体。他可以和代理服务器是同一物理设备。
SIP终端如何发现代理服务器。也就是说它是怎么知道向那一台注册服务器注册,而且他又是如何知道这一台注册服务器的IP地址的呢?
这在sip中有详细介绍。关于发现注册服务器。可以使用多播,UA应当使用通用的SIP服务器定位机制。
在分析注册之前要知道:SIP的URI格式,它是类似于email的地址格式的。在这里一个SIP电话的号码是固定的,他是否是对应多个SIP URI呢?这不是SIP规定的,应该是服务商自行规定的吧。
一个SIP URI对应了一个域,也即服务提供商的域。UA 应该使用通用的SIP 服务器定位机制,将主机部分的记录地址作为请求的
Request-URI 和地址。例如,UA 为用户“sip:carol@chicago.com”将REGISTER 请求寻址到
“sip:chicago.com”。有了服务提供商的域名,当然可以解析到域名的IP。也即找到了注册服务器。这是最通用的注册服务器定位机制。
接下来看一个注册请求:
REGISTER sip:127.0.0.1 SIP/2.0 //服务器所在的域,因为服务器和客户端在同一台电脑下。将服务器的域名设置为了127.0.0.1。
Via: SIP/2.0/ ;branch=z9hG4bK-d8754z-1433645714336457-1---d8754z-;rport
Max-Forwards: 70
Contact: <sip:bob;rinstance=994e586a994e586a>
To: <sip:bob@127.0.0.1> //我理解的是为哪一个用户注册的。是一个完整的SIP用户的SIP URI。因为发出注册请求的并不一定是SIP用户本身。所以要有from头域
From: <sip:bob@127.0.0.1>;tag=85400e47 //谁发起的注册,就是谁的SIP URI,tag是干嘛使得?//该字符串用于身份鉴别,具体如何使用,还不是很理解。还希望指点
Call-ID: OWM3MTM4ZjE1NDBjNTJjZTc2OWVjZGIxMjM3NmI4NTE. //我理解的是同一个SIP客户端的call-id是相同的。因为同一个sip客户端会间隔一定的时间就注册一次。在注册服务器里面用户的注册信息保留一定的时间,保存的时间并不是SIP规定的。
CSeq: 1 REGISTER //CSeq 值保证REGISTER 请求适当的排序。对于每个使用相同的Call-ID 的REGISTER 请求,UA 必须逐一增加Cseq 值。
Expires: 70 //注册绑定时间为70s。
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, UPDATE, INFO, MESSAGE
Content-Length: 0
以上注册请求中,其中绿色字体的头域为必选的。
这是客户端的请求注册信息。注册服务器给予处理注册。
服务器的处理注册请求将在下一节中讲述
欢迎大家讨论啊。
QQ:1371176690
lyyslsw1230@163.com
87649598 (SIP协议栈resiprocate讨论群)。
欢迎大家一起讨论啊。
87649598876495988764959887649598
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)