Session-initiation-protocol-request-and-response-header-fields
SIP-要求および応答ヘッダーフィールド
受け入れる
Acceptヘッダーフィールドは、メッセージ本文で受け入れ可能なメッセージインターネットメディアタイプを示すために使用されます。
- ヘッダーフィールドは、インターネットで一般的に使用される形式タイプ/サブタイプを使用してメディアタイプを記述します。
- 存在しない場合、想定される受け入れ可能なメッセージ本文の形式は application/sdp です。
- メディアタイプのリストには、 q 値パラメーターを使用して設定を設定できます。
受け入れエンコード
Accept-Encodingヘッダーフィールドは、受け入れ可能なメッセージ本文のエンコーディングスキームを指定するために使用されます。
- エンコードを使用して、大きなメッセージ本文を持つSIPメッセージが単一のUDPデータグラム内に収まるようにすることができます。
- q 値パラメーターを使用すると、プリファレンスを設定できます。 リストされたスキームのいずれもUACに受け入れられない場合、406 Not Acceptable応答が返されます。 含まれていない場合、想定されるエンコードは text/plain になります。
To
- プロキシによって生成される応答には、 To ヘッダーフィールドにタグを追加する必要があります。
- To ヘッダーフィールドURIはルーティングに使用されません。
From
- From ヘッダーフィールドには、特定の呼び出しを識別するために使用されるタグが含まれる場合があります。
- 表示名を含めることができます。この場合、URIは<>で囲まれます。
- これは必須のヘッダーです。
コールID
Call-IDヘッダーフィールドは、すべてのSIP要求および応答で必須です。 2つのユーザーエージェント間のコールを一意に識別するために使用されます。
- コールIDは、コール全体で一意である必要があります。
- ユーザーエージェントのすべての登録は、同じCall-IDを使用する必要があります。
- Call-IDは常にユーザーエージェントによって作成され、サーバーによって変更されることはありません。
- 暗号的にランダムな識別子です。
Via
Viaは、要求によって取得されたSIPルートを記録するために使用され、発信者に応答をルーティングするのに役立ちます。
- 要求を生成するUAは、Viaヘッダーフィールドに自身のアドレスを記録します。
- 要求を転送するプロキシは、独自のアドレスを含むViaヘッダーフィールドをViaヘッダーフィールドのリストの先頭に追加します。
- 要求に対する応答を生成するプロキシまたはUAは、すべてのViaヘッダーフィールドを要求から順番に応答にコピーしてから、上部のViaヘッダーフィールドで指定されたアドレスに応答を送信します。
- 応答を受信するプロキシは、上部のViaヘッダーフィールドをチェックし、自身のアドレスと一致します。
- 一致しない場合、応答は破棄されています。
- 次に、上部のViaヘッダーフィールドが削除され、応答が次のViaヘッダーフィールドで指定されたアドレスに転送されます。
- Viaヘッダーフィールドには、プロトコル名、バージョン番号、およびトランスポート(SIP/2.0/UDP、SIP/2.0/TCPなど)が含まれ、ポート番号と、received、* rport、branch、maddr、、 ttlなどのパラメーターが含まれる場合があります*。
- UAまたはプロキシが、上部のViaヘッダーフィールドで指定されたアドレスとは異なるアドレスからリクエストを受信すると、 received タグがViaヘッダーフィールドに追加されます。
- UAおよびプロキシによってViaヘッダーフィールドにブランチパラメーターが追加されます。これは、Request-URIとTo、From、Call-ID、およびCSeq番号のハッシュ関数として計算されます。
CSeq
CSeqヘッダーフィールドは、すべてのリクエストで必須のヘッダーフィールドです。 リクエストごとに増加する10進数が含まれています。
- 通常、 CANCEL および ACK 要求を除き、新しい要求ごとに1ずつ増加します。これらの要求は、それが参照するINVITE要求のCSeq番号を使用します。
- UASは、CSeqカウントを使用して、シーケンス外の要求を判別したり、新しい要求(異なるCSeq)と再送信(同じCSeq)を区別します。
- CSeqヘッダーフィールドは、UACが参照する要求への応答を一致させるために使用されます。
- たとえば、INVITE要求を送信してからCANCEL要求を送信するUACは、CSeqのメソッドによって、200 OK応答が招待要求またはキャンセル要求に対する応答であるかどうかを判断できます。
接触
Contactヘッダーフィールドは、要求の発信者のアドレスについて他のユーザーに伝えるために使用されます。 Contactヘッダーフィールドを受信すると、URIをキャッシュし、ダイアログ内で今後のリクエストをルーティングするために使用できます。
たとえば、INVITEに対する200 OK応答のContactヘッダーフィールドでは、この呼び出し中に確認応答ACKメッセージとすべての今後の要求でプロキシをバイパスし、着信側に直接移動できます。
レコードルート
Record-Routeヘッダーフィールドは、2つのUA間のセッション(ダイアログ)内の後続のすべての要求に対してプロキシを介したルーティングを強制するために使用されます。
通常、UAはContactヘッダーフィールドの存在により、最初の要求で使用されたプロキシチェーンをバイパスしてメッセージを直接送信できます。
- Record-Routeヘッダーフィールドにアドレスを挿入するプロキシはこれをオーバーライドし、今後のリクエストに、このプロキシを強制的に含めるプロキシのアドレスを含むRouteヘッダーフィールドを含めるように強制します。
- これを実装するプロキシは、独自のURIを含むヘッダーフィールドを挿入するか、既に存在するRecord-RouteヘッダーフィールドにそのURIを追加します。
- URIは、URIがプロキシサーバーに解決されるように構築されます。 UASは、Record-Routeヘッダーフィールドを要求に対する200 OK応答にコピーします。
- ヘッダーフィールドは、プロキシによって変更されずにUACに転送されます。 UACは、その後、すべての後続の要求でRouteヘッダーフィールドで使用するために200 OKに存在する場合、Record-RouteプロキシリストとContactヘッダーフィールドを保存します。
組織
組織ヘッダーフィールドは、メッセージの発信者が属する組織を示すために使用されます。
- ある組織から別の組織にメッセージが渡されるときに、プロキシによって挿入することもできます。
- すべてのSIPヘッダーフィールドと同様に、プロキシはルーティングの決定を行うために、UAはコールスクリーニングの決定を行うために使用できます。
再試行後
リソースまたはサービスが再び利用可能になる時期を示すために使用されます。
- 503 Service Unavailableレスポンスでは、サーバーがいつ利用可能になるかを示します。
- 404 Not Found、600 Busy Everywhere、および603 Decline応答では、呼び出されたUAが再び利用可能になる時期を示します。
- 期間は「秒」です。
件名
オプションのSubjectヘッダーフィールドは、メディアセッションの件名を示すために使用されます。
呼び出し中にヘッダーフィールドの内容を表示して、ユーザーが呼び出しを受け入れるかどうかを判断できるようにすることもできます。
サポート対象
サポートされているヘッダーフィールドは、UAまたはサーバーによって実装された1つ以上のオプションをリストするために使用されます。
- 通常、OPTIONS要求への応答に含まれます。
- オプションが実装されていない場合、ヘッダーフィールドは含まれません。
- UACがサポートされるヘッダーフィールドにオプションをリストする場合、プロキシまたはUASは呼び出し中にオプションを使用できます。
- オプションを使用またはサポートする必要がある場合は、代わりにRequire headerフィールドが使用されます。
有効期限
Expiresヘッダーフィールドは、リクエストまたはメッセージのコンテンツが有効な時間間隔を示すために使用されます。
- INVITE要求に存在する場合、ヘッダーフィールドは、INVITE要求の完了に時間制限を設定します。
- つまり、UACは期間内に最終応答(1xx以外)を受信する必要があります。そうしないと、408 Request Timeout応答でINVITE要求が自動的にキャンセルされます。
- セッションが確立されると、元のINVITEのExpiresヘッダーフィールドの値は無効になります。この目的にはSession-Expiresヘッダーフィールドを使用する必要があります。
- REGISTER要求に存在する場合、ヘッダーフィールドは、 expires パラメーターを含まないContactヘッダーフィールドのURIの時間制限を設定します。
- Expiresは、サブスクリプション期間を示すためにSUBSCRIBE要求でも使用されます。
ユーザーエージェント
このヘッダーフィールドは、要求を発信するUAに関する情報を伝えるために使用されます。