nishio-dens's diary

Railsとかプログラミング関連の備忘録

IP電話サービスのためのSIPサーバの実装と解説

近年IP電話が急速に普及していますが、このIP電話の通話管理にSIP(Session Initiation Protocol)と呼ばれる通信プロトコルが採用されることが増えています。
SIPは相手に電話をかける、相手が受話器を取った際に通話を開始する、通話を切るなどといった流れを制御するためのプロトコルです。通話中に音声情報を相手に送るプロトコルはSIPではなくRTP(Real-time Transport Protocol)等別物なので注意してください。
SIPはテキストベースであり、HTTP等と同様にシンプルなプロトコルです。とてもシンプルなのですが、SIPの仕様書(RFC3261, http://www.ietf.org/rfc/rfc3261.txt)は269ページにもわたる膨大なものなので、個人で実装するのは相当手間がかかるものと思われます。

今回はRegister(電話番号等の情報を登録する)サーバとProxyサーバ(クライアント間のリクエストを中継する)サーバの基本的な部分を実装しましたので、解説とともに公開します。

目次