我对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
根据rfc-3261:
可以使用from-tag,to-tag和call-id来识别对话框。
我知道添加to-tag和call-id的确切原因。我不知道的是,
答案 0 :(得分:4)
<强> [编辑] 强> 关于标题字段中属性“tag”的含义From,这是您的答案:http://andrewjprokop.wordpress.com/2013/09/23/lets-play-sip-tag/
删除标记只会邀请服务器将邮件视为重复邮件。
恢复Andrew Prokop所写的内容:
使用Call-ID唯一标识a的最明显问题 消息产生于呼叫分叉。在呼叫分叉中,单个SIP Invite消息被转换为多个Invite消息到不同的消息 目的地。例如,你可以打电话给我,Andrew Prokop,但是打电话 分叉可能会导致邀请消息发送到我所有已注册的消息 端点 - 我的智能手机,我的桌面电话和我的PC电话。那 当它是一个邀请时,单个Call-ID很好,但它并不是那么好 当它变成三个。这是标签的来源。
标签非常简单,但需要一些解释。该 标记的目标是使用Call-ID进行整个对话 无论会话分叉多少次都是唯一的。其实, 我应该说标签,因为有两个。有本地标签 (来自标签)由消息发送者或UAC分配。 还有最终分配的远程标签(To标签) 消息的收件人或UAS(用户代理服务器)。 UAC提出 From标头中的标签和UAS将其标签放在To标头中。 因此,当一条消息离开UAC时,它在From标题中有一个标记 To标头中没有标签。当UAS收到该消息时 然后用SIP响应(例如180响铃)作出响应,然后添加 To标头的标签。如果多个客户收到原件 然后他们都会添加自己的特定标记值。在 换句话说,所有这些SIP消息将具有相同的From标签,但是 根据响应者的不同,会有不同的To标签。
答案 1 :(得分:2)
@Ani,这是一个现实的例子,您可以说为什么真正需要“ From-tag”。如果是re-INVITE,则当从初始INVITE的被叫方/终止号码完成此操作时,将交换To和From头,因此From标记和To-Tag。
假设A发送初始INVITE到B,从标头带有A的标签(本地标签),到标头带有B的标签(远程标签)。接受呼叫之后,B向A发送重新邀请,在此重新邀请中,From Header具有B的带有B标记的Sip uri,而TO Header具有A的带有A标记的Sip uri。现在,在这种情况下,B的标签变为本地标签,而A的标签变为远程标签。
现在,如果您认为如果初始INVITE本身中没有From-tag,则re-INVITE中将没有To-Tag,并且很难识别收件人。
答案 2 :(得分:1)
From Tag是UAC的Dialog标识符,而不是Call-Id。它们结合起来为对话提供了独特的性质。
其他用例
Hair-pinning / Tromboning - 虽然服务不同,但它们都依赖FROM标签来区分基于Dialog标签的呼叫方向。
发送多个INVITE用于与PSTN互通,其中IAM和SAM中的后续数字在INVITE和相同的FROM报头中携带。帮助下游网关匹配特定对话框。 RFC 3578有更多细节。因此,在这种情况下,同一呼叫的FROM标签有助于GW确定如何处理包含更多数字的INVITE。
答案 3 :(得分:0)
&#34;从&#34;字段用于请求发起人信息。
试试此PDF http://www.sipknowledge.com/rfc3261_explained_light.zip
第8.1.1.3节&#34;来自&#34;
此外,第8.3.1节说,From字段是强制性的,作为任何SIP请求中的基本块之一。
答案 4 :(得分:0)
首先,我也在寻找相同的答案。 是的,CALL-ID有作用。 但是From&To标记用于处理SIP进度。 SIP呼叫中包括了许多新功能。
但是3个必需的:(可能有很多)
https://www.ietf.org/rfc/rfc2543.txt
RFC3911-会话发起协议(SIP)“加入”标头 https://www.rfc-editor.org/rfc/rfc3911.txt
用于验证后续请求:-
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.
答案 5 :(得分:0)
就像收件人一样。呼叫发起者可以有多个设备。笔记本电脑上的 IP 电话、呼叫处理代理或 IP 通信器。与呼叫不同的标签可以帮助识别呼叫来自的设备。同样如上所述,它可以帮助回拨原始设备,以防接收方回拨发起方。