sip协议交互的消息中,通常可以看到一些固定的格式,例如:
可以看到消息头中包含“From”,"To","Contact"等字段。这些是起到什么作用呢?From和To是消息交互双方使用的域名,供双方作为位置服务使用。可以通过位置服务将一个URI映射到另一个用户可能使用的URI。而Contact字段包含具体的地址,包括用户名,IP地址和端口。
AOR的格式一般是:From/To:sip<用户@域名>,其中From包含标签(tag),AOR包含的域名有时候也和contact的IP地址一样,AOR主要告诉消息接收者,当前From/To 用户位于哪个域名,是哪个用户。
Contact的格式一般是:Contact:sip<用户uid@IP地址:端口>,加上sip实例的uuid(可选),Contact包含具体的IP地址和端口,双方可以通过这个地址和端口进行直接通信。
那么,这两者有什么联系呢?
根据SIP协议要求,AOR必须具有路由功能,可以解析出Contact,一个AOR可以对应多个Contact,在SIP信令的交互中,一个AOR不仅要在当前消息交互中有效,也必须在后续的交互中保持有效性,也就是具体路由功能。