SIP协议中的Call-ID和Branch标签

时间:2012-05-15 23:27:03

标签: sip

我正在开发一个SIP客户端。我理解SIP请求和SIP响应,但在SIP消息中,如何生成呼叫ID和分支标签? RFC3261未指定此内容。

3 个答案:

答案 0 :(得分:13)

Call-ID标头值可以是您想要的任何内容,但确实需要是唯一的,以避免请求被归类为重复项。

Via标头上的分支参数需要以z9hG4bK的魔术cookie值开头,并且必须是唯一的,以避免请求被归类为重复。对于希望进行循环检测的SIP代理,在第16.6节第8节中还有RFC中的指南,其中详细说明了构造分支参数值时要采取的因素。

答案 1 :(得分:1)

你的措辞很难理解。我假设您想知道 UAC应如何生成Call-ID UAC或代理服务器应如何生成branch参数。

Call-ID的唯一要求是它应该是唯一的。它通常采用唯一令牌+“@”+主机名(如电子邮件的Message-ID)的形式,但并非必须如此。它可以只是一个独特的标记。唯一令牌可以是任何合理确定唯一的令牌。为了避免泄露私人信息,您可以将其伪随机或私有唯一信息的加密哈希(时间,进程ID等)

类似地,branch参数只是一个唯一的令牌,但请注意,它必须以RFC中指定的z9hG4bK开头。

答案 2 :(得分:0)

为什么重新发明轮子?

有开源SIP项目,它们的实施可能会激励您。 你没有提到你使用的编程语言。所以我假设您可以阅读C代码。

获取kamailio server的源代码。 Call-ID的实现在kamailio-4.0.x / modules / tm / callid.c中。我相信你很聪明,可以自己找出分支标签:o)