SIP请求中from-tag的用途是什么?

Ani*_*Ani 5 sip sip-server opensips

我对SIP有一个小小的疑问。我尝试使用谷歌搜索和引用许多书籍,但仍然找不到在SIP请求中添加from-tag的可靠原因。

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
Run Code Online (Sandbox Code Playgroud)

根据rfc-3261:

对话框可以使用from-tag,to-tag和call-id进行标识。

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

  1. 为什么需要标记标签?
  2. 如果缺少from-tag(假设rfc-3261没有强制要求)会产生什么影响?

Séb*_*ien 5

[编辑] 关于标头字段中属性“标签”的含义从这里,您的答案是:http : //andrewjprokop.wordpress.com/2013/09/23/lets-play-sip-tag/

删除标签仅会邀请服务器将邮件视为重复邮件。

恢复Andrew Prokop的内容:

使用呼叫ID唯一标识消息的最明显问题是呼叫分支产生的。在呼叫分支中,单个SIP邀请消息将转换为多个到不同目标的邀请消息。例如,您可能给我打电话安德鲁·普罗科普(Andrew Prokop),但呼叫分支可能会导致邀请消息发送到我所有已注册的端点-我的智能电话,台式电话和PC电话。单个Call-ID在一个Invite时很好,但在变成三个Invite时就不太好了。这是标签进入的地方。

标签确实非常简单,但是需要一些解释。标签的目的是与Call-ID一起使用,以使整个对话框唯一,无论会话可能被分叉多少次。实际上,我应该说标签,因为有两个标签。有一个本地标签(发件人标签),它是由消息的发件人或UAC分配的。还有消息的最终收件人或UAS(用户代理服务器)分配的远程标签(“收件人”标签)。UAC将其标签放在From标头中,而UAS将其标签放在To标头中。因此,当消息离开UAC时,它在From头中有一个标签,而To头中没有标签。当UAS接收到该消息并以SIP响应(例如180振铃)进行响应时,它会在To头中添加标签。如果多个客户端收到原始消息,则它们都将添加自己的特定标记值。换句话说,所有这些SIP消息都将具有相同的From标签,但是根据响应者的不同,将有不同的To标签。


小智 5

@Ani,这是一个现实的例子,你可以说出为什么真正需要“From-tag”。在重新 INVITE 的情况下,当它是从初始 INVITE 的被叫方/终接号码完成时,To 和 From 标头将被交换,因此 From 标记和 To-Tag 也会被交换。

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

假设A向B发送初始INVITE,From头有A的标签(本地标签),To头有B的标签(远程标签)。之后,在呼叫接受后,B向A发送re-INVITE,在该re-INVITE中,From标头具有B的sip uri和B的标签,TO标头具有A的sip uri和A的标签。现在,对于这种情况,B 的标签成为本地标签,A 的标签成为远程标签。

现在,如果您认为如果初始 INVITE 本身没有 From-tag,那么 re-INVITE 中将不会有 To-Tag,并且很难识别收件人。


J C*_*J C -1

“From”字段用于请求发起者信息。

试试这个 PDF http://www.sipknowledge.com/rfc3261_explained_light.zip

第8.1.1.3节“来自”

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