SIP【Session Initiation Protocol】

広告

広告

SIPとは

最終更新
2007-01-07T00:00:00+09:00
この記事のURI参照
https://www.7key.jp/nw/technology/vopn/sip.html#what

SIPは、マルチメディアセッションVoIPを応用したインターネット電話などで用いられる2つ以上のクライアント間でセッションを確立するためのプロトコルです。実際の電話など通信を行うための通信機器の情報はSDP【Session Description Protocol】で処理し、データ通信にはRTPを用います。つまり、SIPはセッションの開始、変更、終了といった基本的な機能のみを提供するセッション層のプロトコルです。

ユーザエージェント

最終更新
2007-01-07T00:00:00+09:00
この記事のURI参照
https://www.7key.jp/nw/technology/vopn/sip.html#ua

ユーザエージェントは、SIPリクエストを処理するための論理的な構成要素を指します。ユーザエージェントにはUACUASの2種類があります。インターネット電話で例えた場合、SIP電話機は発信の際にはUACとなり、着信の際にはUASとなります。

UAC【User Agent Client】

ユーザエージェントクライアントの略語。SIPリクエストを生成/送信し、レスポンスを受信/処理するユーザエージェントを指します。

UAS【User Agent Server】

ユーザエージェントサーバの略語。SIPリクエストを受信/処理し、レスポンスを生成/送信するユーザエージェントを指します。

SIPサーバ

最終更新
2007-01-07T00:00:00+09:00
この記事のURI参照
https://www.7key.jp/nw/technology/vopn/sip.html#server

SIPサーバは、SIPリクエストを処理するためのサーバで、機能に応じてプロキシサーバリダイレクトサーバロケーションサーバレジストラなどに分類されます。これらのサーバは論理的な要素であるため、それぞれ物理的に別にしても構いませんし1台の機器にまとめても構いません。

プロキシサーバ【Proxy Server】

SIPリクエストの次の転送先を解決し、そのリクエストを転送するためのサーバです。プロキシサーバは、リクエストメッセージを転送する前にそれを解釈し、必要に応じてその中身の特定部分を書き換えることもできるため、何らかのポリシーを設定する際にも有用です。ネットワーク構成によっては複数のサーバをホップする可能性もあります。

リダイレクトサーバ【Redirect Server】

SIPリクエストの次の転送先を解決し、その転送先を応答するサーバです。UACはその転送先に発信しなおすこととなります。

ロケーションサーバ【Location Server】

登録サーバからの登録情報をストアし、リダイレクトサーバプロキシサーバによる着URIの参照要求に応答するサーバです。通常、プロキシサーバやリダイレクトサーバと同一ホスト上で動作します。他のSIPサーバがロケーションサーバに問い合わせを行う手段はSIPでは規定されていません。

レジストラ【Registrar】

REGISTERリクエストを受信し、そのリクエストで受け取る情報を操作するドメインのロケーションサービスに登録するサーバです。通常、プロキシサーバリダイレクトサーバと同一ホスト上で動作します。

SIPメッセージ

最終更新
2007-01-07T00:00:00+09:00
この記事のURI参照
https://www.7key.jp/nw/technology/vopn/sip.html#message

SIPはテキストベースのプロトコルであり、UTF-8文字セットを用います。SIPメッセージには、クライアントからサーバへのリクエスト、又はサーバからクライアントへのレスポンスのどちらかです。リクエストメッセージと応答メッセージは共に、開始行、各メッセージのヘッダ行、空行の最後はCRLFとしなければなりません。SIPメッセージの基本的な構成は次の通りです。

リクエスト行
リクエストメッセージの先頭に記載します。そのメッセージのメソッドが記述されます。
ステータス行
レスポンスメッセージの先頭に記載します。レスポンスコードが記載され、リクエストに対する処理状態を示します。
ヘッダ部
メッセージに関する情報をヘッダフィールドに記載します。ヘッダ部には複数のヘッダフィールドを指定することができます。ヘッダフィールドは、「ヘッダフィールド名+コロン(:)+ヘッダフィールド値」との形式をとります。
空行
ヘッダ部とボディ部を区切るために用います。ボディ部が空であっても必要となります。
ボディ部
メッセージの本文となる部分です。

リクエスト行あるいはステータス行のことをスタートラインと呼びます。

リクエストメッセージ(INVITE)の例

INVITE sip:bob@biloxi.com SIP/2.0
Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKnashds8
To: Bob <bob@biloxi.com>
From: Alice <alice@atlanta.com>;tag=1928301774
Call-ID: a84b4c76e66710
CSeq: 314159 INVITE
Max-Forwards: 70
Date: Thu, 21 Feb 2002 13:02:03 GMT
Contact: <sip:alice@pc33.atlanta.com>
Content-Type: application/sdp
Content-Length: 147
 
v=0
o=UserA 2890844526 2890844526 IN IP4 here.com
s=Session SDP
c=IN IP4 pc33.atlanta.com
t=0 0
m=audio 49172 RTP/AVP 0
a=rtpmap:0 PCMU/8000

レスポンスメッセージ(200 OK)の例

SIP/2.0 200 OK
Via: SIP/2.0/UDP server10.biloxi.com;branch=z9hG4bKnashds8;received=192.0.2.3
Via: SIP/2.0/UDP bigbox3.site3.atlanta.com;branch=z9hG4bK77ef4c2312983.1;received=192.0.2.2
Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bK776asdhds ;received=192.0.2.1
To: Bob <sip:bob@biloxi.com>;tag=a6c85cf
From: Alice <sip:alice@atlanta.com>;tag=1928301774
Call-ID: a84b4c76e66710@pc33.atlanta.com
CSeq: 314159 INVITE
Contact: <sip:bob@192.0.2.4>
Content-Type: application/sdp
Content-Length: 131

メソッド、ヘッダフィールド、レスポンスコードは補足知識を参照のこと。

SIPアドレス

最終更新
2007-01-07T00:00:00+09:00
この記事のURI参照
https://www.7key.jp/nw/technology/vopn/sip.html#sip_address

SIPにて相手を指定する方法は、IPアドレスによる指定やSIP URIによる指定などがあります。SIPアドレスは基本的に電子メールアドレスと同様に「user@host」(user:ユーザ名/host:ホスト名)との表現になります。SIP URIは、SIPアドレスにSIPプロトコルを示すsip:を前に付けた形式で、次の形をとります。

sip:user:password@host:port;uri-parameters?header

SIPの動作

最終更新
2007-01-07T00:00:00+09:00
この記事のURI参照
https://www.7key.jp/nw/technology/vopn/sip.html#sip_work

SIPセッション確立処理(プロキシサーバ)

SIPセッション確立処理(プロキシサーバ)

SIPセッション確立処理(リダイレクトサーバ)

SIPセッション確立処理(リダイレクトサーバ)

補足知識

最終更新
2007-01-07T00:00:00+09:00
この記事のURI参照
https://www.7key.jp/nw/technology/vopn/sip.html#supplement

アプリケーションポート番号はUDP 5060。

エンドツーエンドのセキュリティにはPGPの実装が必須。

ホップバイホップのセキュリティにはIPsec/AHなどを用いる。

IPの他に、ATM-AAL5やIPX、フレームリレーX.25などをインフラとして用いることも可能。

SIPメソッド

メソッド処理参照RFC
ACKINVITEに対するレスポンスを受け取ったことを通知RFC3261
BYEコールの終了RFC3261
CANCEL未応答のINVITEリクエストをキャンセルRFC3261
INFOセッションに関する情報を通知RFC2976
INVITEユーザをコールに招待RFC3261
MESSAGEメッセージ送信RFC3428
NOTIFYユーザの情報伝達RFC3265
OPTIONSUAが持つ機能を問い合わせるRFC3261
PRACK信頼性のある暫定応答RFC3262
PUBLISH-RFC3903
REFER転送RFC3515
REGISTERユーザの現在位置を登録するRFC3261
SUBSCRIBEユーザの情報伝達要求RFC3265
UPDATEセッション情報の更新RFC3311

SIPレスポンスコード

Provisional 1xx:暫定応答/リクエストを受信・処理中
100Trying
180Ringing
181Call Is Being Forwarded
182Queued
183Session Progress
Successful 2xx:成功応答/リクエストは成功
200OK
202Accepted
Redirection 3xx:リダイレクト/リクエストの完了には更なる処理が必要
300Multiple Choices
301Moved Permanently
302Moved Temporarily
305Use Proxy
380Alternative Service
Request Failure 4xx:リクエストエラー/リクエストの書式に誤りがあるかこのサーバーで処理できない
400Bad Request
401Unauthorized
402Payment Required
403Forbidden
404Not Found
405Method Not Allowed
406Not Acceptable
407Proxy Authentication Required
408Request Timeout
410Gone
412Conditional Request Failed
413Request Entity Too Large
414Request-URI Too Long
415Unsupported Media Type
416Unsupported URI Scheme
417Unknown Resource-Priority
420Bad Extension
421Extension Required
422Session Interval Too Small
423Interval Too Brief
428Use Identity Header
429Provide Referrer Identity
436Bad Identity-Info
437Unsupported Certificate
438Invalid Identity Header
480Temporarily Unavailable
481Call/Transaction Does Not Exist
482Loop Detected
483Too Many Hops
484Address Incomplete
485Ambiguous
486Busy Here
487Request Terminated
488Not Acceptable Here
489Bad Event
491Request Pending
493Undecipherable
494Security Agreement Required
Server Failure 5xx:サーバエラー/サーバでのリクエスト処理に失敗
500Server Internal Error
501Not Implemented
502Bad Gateway
503Service Unavailable
504Server Time-out
505Version Not Supported
513Message Too Large
580Precondition Failure
Global Failures 6xx:グローバルエラー/リクエストをどのサーバーでも処理できない
600Busy Everywhere
603Decline
604Does Not Exist Anywhere
606Not Acceptable

SIPヘッダフィールド

ヘッダ名短縮形内容
Accept-受け入れ可能な形式
Accept-Contacta-
Accept-Encoding-受け入れ可能なコンテンツのエンコーディング
Accept-Language-受け入れ可能な言語
Accept-Resource-Priority--
Alert-Info-代替の呼び出し音
Allow-UAがサポートするメソッド
Allow-Eventsu-
Authentication-Info-認証情報
Authorization-認可情報
Call-IDi特定のINVITE、または特定のクライアントを一意に識別するID
Call-Info-呼の付加情報
Contactmメッセージ送信者のコンタクトアドレス
Content-Disposition-ボディ部の解釈方法
Content-Encodingeボディ部のエンコーディング
Content-Language-ボディ部の言語
Content-Lengthlボディ部の長さ
Content-Typecボディ部のメディアタイプ
CSeq-トランザクションのシーケンス番号
Date-メッセージの送信日時
Encryption--
Error-Info-エラー応答の付加情報
Evento-
Expires-期限切れ時間
Fromfメッセージの送信者
Hide--
History-Info--
Identityy-
Identity-Infon-
In-Reply-To-送信元のCall-ID
Join--
Max-Forwards-リクエストチェーン内の最大転送回数
MIME-Version-MIMEバージョン
Min-Expires-最小更新間隔
Min-SE--
Organization-メッセージ送信元の組織名
P-Access-Network-Info--
P-Asserted-Identity--
P-Associated-URI--
P-Called-Party-ID--
P-Charging-Function-Addresses--
P-Charging-Vector--
P-DCS-Trace-Party-ID--
P-DCS-OSPS--
P-DCS-Billing-Info--
P-DCS-LAES--
P-DCS-Redirect--
P-Media-Authorization--
P-Preferred-Identity--
P-User-Database--
P-Visited-Network-ID--
Path--
Priority-リクエストの優先度
Privacy--
Proxy-Authenticate-プロキシの認証チャレンジ
Proxy-Authorization-プロキシ向けの認可情報
Proxy-Require-プロキシでサポートが必要な情報
RAck--
Reason--
Record-Route-プロキシが挿入するリクエストの経路記録
Refer-Sub--
Refer-Tor-
Referred-Byb-
Reject-Contactj-
Replaces--
Reply-To-論理的な返信先URI
Request-Dispositiond-
Require-UACが要求するUASにサポートを求めるオプション
Resource-Priority--
Response-Key--
Retry-After-リクエストを再試行する場合の予定時間
Route-プロキシの経路指定
RSeq--
Security-Client--
Security-Server--
Security-Verify--
Server-UASが使用するソフトウェアの情報
Service-Route--
Session-Expiresx-
SIP-ETag--
SIP-If-Match--
Subjectsこの概要を示す件名
Subscription-State--
Supportedkサポートするすべての拡張を列挙
Target-Dialog--
Timestamp-UACがメッセージを送信した時間
Totリクエストの論理的な受信者
Unsupported-サポートしない機能を列挙
User-Agent-UAに関する情報
Viavリクエストまたは応答のルートパス
Warning-警告応答ステータスの付加情報
WWW-Authenticate-認証チャレンジ

広告

当ページ作成にあたり、参考にさせてもらったリソース

Copyright (C) 2007 七鍵 key@do.ai 初版:2007年01月07日 最終更新:2007年01月07日