6

我正在开发一个 SIP 客户端。我了解 SIP 请求和 SIP 响应,但是在 SIP 消息中,呼叫 ID 和分支标签是如何生成的?RFC3261没有指定这一点。

4

3 回答 3

15

Call-ID 标头值可以是您想要的任何值,但必须是唯一的,以避免请求被归类为重复。

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

于 2012-05-16T00:05:18.080 回答
2

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

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

同样,branch参数只是一个唯一的标记,但请注意它必须以z9hG4bKRFC 中指定的开头。

于 2012-05-15T23:54:19.163 回答
1

为什么要重新发明轮子?

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

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

于 2014-03-13T22:48:39.113 回答