SIP クライアントを開発しています。SIP リクエストと SIP レスポンスは理解できますが、SIP メッセージでは、コール ID とブランチ タグはどのように生成されますか? RFC3261はこれを指定していません。
3 に答える
Call-ID ヘッダーの値は自由に設定できますが、リクエストが重複として分類されるのを避けるために一意である必要があります。
Via ヘッダーのブランチ パラメータは、z9hG4bK のマジック クッキー値で開始する必要があり、また、リクエストが重複として分類されるのを避けるために一意である必要があります。SIP プロキシがループ検出を実行したい場合は、RFC のセクション 16.6 ポイント 8 にガイドラインがあり、ブランチ パラメータ値を作成する際に考慮すべき要素について詳しく説明しています。
あなたの言い回しはわかりにくいです。UAC がパラメーターを生成する方法、またはUAC またはプロキシ サーバーがパラメーターを生成する方法を知りたいと仮定します。Call-ID
branch
の唯一の要件Call-ID
は、一意であることです。多くの場合、一意のトークン + "@" + email のようなホスト名の形式ですが、Message-ID
そうである必要はありません。それは単なる一意のトークンである可能性があります。一意のトークンは、一意であることが合理的に確実なものであれば何でもかまいません。個人情報の漏えいを避けるために、疑似ランダムにするか、個人固有の情報 (時間、プロセス ID など) の暗号化ハッシュにすることができます。
同様に、branch
パラメーターは単なる一意のトークンですがz9hG4bK
、RFC で指定されているとおりに開始する必要があることに注意してください。
なぜ車輪を再発明するのですか?
オープンソースの SIP プロジェクトがあり、その実装はあなたにインスピレーションを与えるかもしれません。使用するプログラミング言語については言及していません。だから、Cコードを読むことができると思います。
kamailio サーバーのソースコードを取得します。Call-ID の実装は、kamailio-4.0.x/modules/tm/callid.c にあります。私はあなたが頭が良く、ブランチタグについて自分で見つけることができると信じています:o)