from标签在SIP请求中有什么用途



我对SIP有一个小小的疑问。我试着在谷歌上搜索并引用了很多书,但仍然找不到在SIP请求中添加from标签的确切原因。

示例SIP请求(来自rfc-3261的快照)

INVITE sip:bob@biloxi.com SIP/2.0
Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bK776asdhds
Max-Forwards: 70
To: Bob <sip:bob@biloxi.com>
From: Alice <sip:alice@atlanta.com>;tag=1928301774
Call-ID: a84b4c76e66710@pc33.atlanta.com
CSeq: 314159 INVITE
Contact: <sip:alice@pc33.atlanta.com>
Content-Type: application//sdp
Content-Length: 142

根据rfc-3261:

对话框可以使用from标记、to标记和call-id来识别。

我知道添加标签和call-id的确切原因。我不知道的是

  1. 为什么我们需要标签
  2. 如果没有from标签(假设rfc-3261没有强制要求)

@Ani,这里有一个现实的例子,当你可以说出为什么"从标签";确实需要。在重新INVITE的情况下,当从初始INVITE中的被叫方/终止号码进行时,将交换To和from标头,从而交换from标签和To标签。

示例链接:示例重新邀请流

假设A向B发送初始INVITE,From标头具有A的标记(本地标记),to标头具有B的标记(远程标记)。稍后,在接受呼叫后,B向a发送一个re-INVITE,在这个re-IINVITE中,From Header具有带有B的标签的B的sip uri,而to Header具有具有带有a的标签的a的sip uri。现在对于这种情况,B的标签变成本地标签,A的标签变成远程标签。

现在,如果您认为初始INVITE中没有From标记,那么在重新INVITE中将不会有To标记,并且很难识别收件人。

[EDIT]关于标题字段From中属性"tag"的含义,以下是您的答案:http://andrewjprokop.wordpress.com/2013/09/23/lets-play-sip-tag/

删除标记只会让服务器将消息视为重复消息。

恢复Andrew Prokop所写的内容:

使用呼叫ID唯一标识消息是随着呼叫分叉而出现的。在呼叫分叉中,单个SIP邀请消息变成多条邀请消息目的地。例如,你可能会打电话给我,Andrew Prokop,但打电话给分叉可能会导致邀请消息发送到我所有注册的端点——我的智能手机、台式机和PC手机。那个单个呼叫ID是一个邀请时是可以的,但不是那么好当它变成三。这就是标签的用武之地。

标签确实很简单,但需要一些解释。这个标记的目标是使用呼叫ID来创建整个对话框无论会话可能分叉多少次,都是唯一的。事实上我应该说标签,因为有两个。有本地标签(From标签)由消息的发送者或UAC分配。还有一个远程标记(To标记),由最终用户指定消息的收件人或UAS(用户代理服务器)。UACUAS将其标记放在To标头中。因此,当消息离开UAC时,它在From标头中有一个标记,并且To标头中没有标记。当UAS收到该消息时并以SIP响应(例如180 Ringing)进行响应,然后添加to标头的标记。如果多个客户端收到原始消息,然后他们都会添加自己的特定标记值。在里面换句话说,所有这些SIP消息都将具有相同的From标记,但是根据响应者的不同,将有不同的To标签。

From Tag是UAC的对话框标识符,而不是Call-Id。它们结合在一起为对话提供了独特的性质。

其他用例

  1. Hair pinging/Tromboning-尽管服务不同,但它们都依赖于FROM标记来区分基于Dialog标记的调用方向。

  2. 发送多个INVITE以与PSTN互通,其中IAM和SAM中的后续数字在INVITE和同一FROM报头中携带。帮助下游网关匹配特定的对话框。RFC 3578提供了更多详细信息。因此,在这种情况下,同一呼叫的FROM标记有助于GW确定如何处理包含其他数字的INVITE。

首先,我也在寻找相同的答案。是的,呼叫ID服务于目的。但是From&To标记用于处理SIP预付款。SIP呼叫中包含了许多新功能。

但是3个需要:(可能有很多)

  1. 如果From地址可以出现在其他用户代理客户端为同一呼叫生成的请求中,则调用者必须在From字段中插入标记参数

https://www.ietf.org/rfc/rfc2543.txt

  1. 最新消息:JOIN头使用FROM&TO标签进行验证。假设有两个人在通话,另一个人想加入通话

RFC3911-会话发起协议(SIP)"加入"报头https://www.rfc-editor.org/rfc/rfc3911.txt

  1. 用于验证后续请求:-

    11.5接收后续请求

    当随后收到请求时,进行以下检查制造:

    1.   If the Call-ID is new, the request is for a new call,
         regardless of the values of the To and From header fields.
    2.   If the Call-ID exists, the request is for an existing call.
         If the To, From, Call-ID, and CSeq values exactly match
         (including tags) those of any requests received previously,
         the request is a retransmission.
    3.   If there was no match to the previous step, the To and From
         fields are compared against existing call leg local and
         remote addresses. If there is a match, and the CSeq in the
         request is higher than the last CSeq received on that leg,
         the request is a new transaction for an existing call leg.
    

就像收件人一样。呼叫发起方可能有多个设备。笔记本电脑上的IP电话、呼叫处理代理或IP通信器。来自呼叫的不同标签可以帮助识别呼叫来自的设备。同样如上所述,在接收方回电始发方的情况下,回电原始设备可能会有所帮助。

"From"字段用于请求启动器信息。

试试这个PDFhttp://www.sipknowledge.com/rfc3261_explained_light.zip

第8.1.1.3节"来自"

此外,第8.3.1节规定,From字段是强制性的,是任何SIP请求中的基本块之一。

最新更新