SIP消息组件包括用户代理UA、客户端(也就是用户)和服务端。
用户代理(User Agent)
有两种类型的用户代理,,但它们并不是严格分开的物理实体。根据情况,一个UA(用户代理)可以作为UAC或UAS工作。
l UAC(User Agent Client):UAC是生成请求并将请求发送到服务器的一方
l UAS(User Agent Server):UAC是获取请求、处理请求并生成响应的一方
客户端(Client)
它通常指的是最终用户,即在人们使用的系统上运行的应用程序。它可能是在您的PC上运行的软电话应用程序(如电话),也可能是IP电话中的消息传递设备。当你试图通过网络呼叫另一个人时,它会生成一个请求,并将请求发送到服务器(通常是代理服务器)。
服务端(Server)
服务器是一个实体,它按照预定义的规则处理来自客户端的请求。有几种不同类型的服务器。
代理服务器(Proxy Server):这是SIP环境中最常见的服务器类型。当一个请求被生成时,接收者的确切地址是事先不知道的。因此,客户机将请求发送到代理服务器。代理将请求转发到另一个代理服务器或代表客户机的接收方本身
重定向服务器(Redirect Server):重定向服务器将请求重定向回客户端,指示客户端需要尝试其他路由才能到达收件人。它通常发生在接收者暂时或永久地离开原来的位置时。
注册器(Registrar):这是为客户机执行注册过程的服务器。在此注册过程中,注册器将用户的位置信息存储到位置服务器中。
位置服务器(Location Server):注册到注册器的地址存储在位置服务器中。
下面看下几个主要的SIP消息内容。
SIP Header : Contact
在SIP消息中,Contact Header的最主要目的是获取消息的直接路径,如下图
Contact Header除了寻址以外,还携带了UA能力信息。
IMS Communication Service Identifier (ICSI)值用户指示IMS多媒体电话的服务器。Contact字段在注册和INVITE中的意义如下:
REGISTER(TS 34.229-1)
INVITE for MT Call
INVITE for MO Call Setup
SIP Header : From/To
From/To字段虽然和发邮件有点不一样,但仍旧可以用这个来举例。
例如,假设A向B发送电子邮件,B回复A。在这种情况下,A的邮件和B的邮件用from/to部分如下所示。
A是发邮件:
From : A
To : B
B是回复邮件的人:
From : B
To : A
但如果是SIP。发件人/收件人不是由发送特定SIP消息的人确定的。它是由谁发起整个对话决定的。在这种情况下,A从B那里得到,B也用了和A用的完全相同的From/To。B只是复制了A的“From/To”,因为是A发起了对话。
A发起的初始SIP消息:
From : A
To : B
B回复(响应)的SIP消息:
From : A
To : B
< REGISTER / INVITE >
< INVITE / BYE(MT) >
< From / To for whole VoLTE Sequence >