0

私のVOIPアプリケーションでは、招待リクエストを( INVITEE_NUMBER )に送信し、招待者が電話に出ると200 OK応答を受け取ります。

しかし、通話を終了するために Bye リクエストを送信すると、サーバーから 407 レスポンス コードが返ってきます。

SIP フローを参照してください。

BYE リクエストを INVITEE_NUMBER に送信しています

BYE sip:INVITEE_NUMBER@SERVER_ADDRESS:PORT_NO SIP/2.0
Via: SIP/2.0/UDP SERVER_ADDRESS:PORT_NO;branch=z9hG4bKe474296b56f64451ba78152b5ecd2e6c;
To: <sip:INVITEE_NUMBER@SERVER_ADDRESS:PORT_NO>;tag=fe65e252-2245-3d98-cec9-31e2f05efe9d
From: "" <sip:MY_SIP_NO@SERVER_ADDRESS:PORT_NO>;tag=1193168134
Call-ID: 0401186002ac45deaebf746061ec29cc
CSeq: 3 BYE
Max-Forwards: 70
Route: <sip:SERVER_ADDRESS:PORT_NO;lr>
Content-Length: 0

サーバーからの応答

SIP/2.0 407 Proxy Authentication required
Via: SIP/2.0/UDP SERVER_ADDRESS:PORT_NO;branch=z9hG4bKe474296b56f64451ba78152b5ecd2e6c;rport=5061;received=124.40.244.4
To: <sip:INVITEE_NO@SERVER_ADDRESS:PORT_NO>;tag=fe65e252-2245-3d98-cec9-31e2f05efe9d
From: "" <sip:MY_NUMBER@SERVER_ADDRESS:PORT_NO>;tag=1193168134
Call-ID: 0401186002ac45deaebf746061ec29cc
CSeq: 3 BYE
Max-Forwards: 70
Proxy-Authenticate: Digest realm="vo.packet8.net",nonce="cf319a6e81ade8f6be8d658a6a0e86ca",qop=auth,opaque="",algorithm=MD5
Content-Length: 0

これは予期されていることですか、それともクライアント側またはサーバー側に何か問題がありますか?

4

1 に答える 1

2

理論的には、受信側のユーザー エージェントは、BYE を含むあらゆる要求に挑戦できます。さらに、リクエスト パスに沿ったステートフル プロキシもリクエストにチャレンジできます。どちらの場合も、クライアントは資格情報を使用してリクエストを再送信する必要があります。

特に BYE リクエストの承認を扱う SIP RFC には何も見つかりませんでしたが、「12.2.2 UAS Behavior」からのこの引用は、ダイアログ内のリクエストが承認をサポートする必要があることを示しています。

プロキシが UAC によって生成された要求に挑戦する場合、UAC は資格情報を使用して要求を再送信する必要があります。再送信された要求には、新しい CSeq 番号が含まれます。UAS は最初の要求を確認しないため、CSeq 番号空間のギャップに気付くでしょう。このようなギャップは、エラー状態を表すものではありません。

そうは言っても、BYE リクエストが異議を唱えられることは非常にまれであり、それを正しく処理しない SIP スタックがたくさんあるのではないかと思います。Frank がほのめかしたように、OK 応答の Record-Route ヘッダーを見て要求のルーティングをチェックし、正しい宛先に BYE を送信していることを確認したいと思います。

于 2012-12-29T09:32:39.160 に答える