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

from标记在SIP请求中有什么用途?,sip,sip-server,opensips,Sip,Sip Server,Opensips,我对SIP有一点小小的疑问。 我试着用谷歌搜索并参考了很多书,但仍然找不到在SIP请求中添加from标签的可靠理由 SIP请求示例(来自rfc-3261的快照) INVITE sip:bob@biloxi.comSIP/2.0 Via:SIP/2.0/UDP pc33.atlanta.com;分支=z9hG4bK776asdhds 最大前锋:70 致:鲍勃 发件人:爱丽丝;标签=1928301774 呼叫ID:a84b4c76e66710@pc33.atlanta.com CSeq:314159

我对SIP有一点小小的疑问。 我试着用谷歌搜索并参考了很多书,但仍然找不到在SIP请求中添加from标签的可靠理由

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

INVITE sip:bob@biloxi.comSIP/2.0
Via:SIP/2.0/UDP pc33.atlanta.com;分支=z9hG4bK776asdhds
最大前锋:70
致:鲍勃
发件人:爱丽丝;标签=1928301774
呼叫ID:a84b4c76e66710@pc33.atlanta.com
CSeq:314159邀请
联系人:
内容类型:应用程序//sdp
内容长度:142
根据rfc-3261:

可以使用from tag、to tag和call-id标识对话框

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

  • 为什么我们需要标签
  • 如果没有from标签,会有什么影响(假设 rfc-3261不要求吗
  • “发件人”字段用于请求发起人信息

    试试这个PDF

    第8.1.1.3节“从”

    此外,第8.3.1节规定,“发件人”字段是必填字段,作为任何SIP请求的基本块之一。

    [EDIT] 关于标题字段中属性“tag”的含义,以下是您的答案:

    删除标签只会邀请服务器将消息视为重复的。

    要继续安德鲁·普罗科普所写的内容:

    使用调用ID唯一标识 消息随着呼叫分叉而产生。在呼叫转接中,只需一小口 将邀请消息转换为多个邀请消息,以发送给不同的用户 目的地。例如,你可以叫我安德鲁·普罗科普,但是 分叉可能会导致将邀请消息发送到所有已注册的 端点-我的智能手机、台式手机和PC手机。那个 当它是一个邀请时,单次呼叫ID是好的,但它不是那么好 当它变成三的时候。这就是标签的作用

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


    From标记是UAC对话框的标识符,而不是Call-Id。它们结合起来为对话框提供了唯一性

    其他用例

  • 头发固定/长号-尽管服务不同,但它们都依赖于FROM标记来根据对话标记区分呼叫方向

  • 发送多个INVITE以与PSTN互通,其中IAM和SAM中的后续数字包含在INVITE和FROM头中。帮助下游网关匹配特定于it的对话框。RFC3578有更多细节。因此,在本例中,同一呼叫的FROM标记有助于GW确定如何处理包含更多数字的INVITE


  • @Ani,这里有一个现实的例子,你可以说为什么真正需要“来自标签”。在重新邀请的情况下,当从初始邀请的被叫方/终止号码进行重新邀请时,To和from头被交换,from标记和To标记也被交换

    示例链接:

    假设A向B发送初始邀请,从标头有A的标记(本地标记),到标头有B的标记(远程标记)。稍后,在接受呼叫后,B向a发送重新邀请,在此重新邀请中,From标头具有B的sip uri和B的标记,to标头具有a的sip uri和a的标记。现在对于这种情况,B的标记变成本地标记,A的标记变成远程标记


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

    首先,我也在寻找同样的答案。 是的,CALL-ID服务于此目的。 但是From&To标签用于处理SIP的进展。 SIP呼叫中包含了许多新功能

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

  • 如果发件人地址可以出现在其他用户代理客户端为同一呼叫生成的请求中,则调用者必须在“发件人”字段中插入标记参数
  • 最新:用于验证的从和到标记的联接头。假设两个人正在通话,另一个人想加入通话
  • RFC3911-会话启动协议(SIP)“加入”标头

  • 用于验证后续请求:-

    11.5接收后续请求

    当随后收到请求时,将执行以下检查: 制作:


  • 就像接受者一样。呼叫发起人可以有多个设备。笔记本电脑上的IP电话、呼叫处理代理或IP通讯器。呼叫中的“与”标签可以帮助识别呼叫来自的设备。同样如上所述,如果收件人回拨发端人的电话,回拨原始设备也会有所帮助。

    明白。但问题是关于“标签”在从标题。为什么我们需要标签?是的。我已经更正了我的答案,以处理From SIP Header字段中的特定标记。即使这个解释也没有回答这个问题。在同一个网站()上,我问了以下问题(2014年9月15日-下午1:42),就连安德鲁·普罗科普都没有找到一个“伟大的解释”的现成答案
    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
    
    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.