WindowsXPには,動画もやりとりできるIP電話ソフト「Windows Messenger」が標準で付いてくる。ソフトバンク・グループがサービスを始めた「BBフォン」など,最近なにかと話題の多いIP電話だが,実際にはどんなやりとりをしているのだろうか。そこで今回は,Windows MessengerのIP電話機能「PC to Phone」を使ってみて,そこでやりとりされるIPパケットを調べてみた。

 Windows Messengerは,電話をかけるためのコントロール用プロトコル(これを呼制御プロトコルと呼ぶ)に,SIP(session initiation protocol)を使う。IP電話を使い始めると,まずはこのプロトコルが流れるはずだ。IP電話というとH.323というプロトコルのことを聞いたことがあるかもしれない。SIPはH.323と同じような機能を果たす新しいプロトコル。インターネット技術をベースとしており,テキストのメッセージをやりとりする。つまり,電話をかけるときのIPパケットを解析すれば,SIPのメッセージが読めるはずだ。

 しかし,自宅に電話をかけて実際にやりとりするパケットを解析しようしてみたがうまくいかない。よくよく中身を見てみると,SIPのメッセージを伝送するのにTCP(transport control protocol)の上でHTTPS(hypertext transfer protocol over transport layer security/secure sockets layer)を使っていた。なるほど,呼制御プロトコルでやりとりするのは,電話料金を課金するために使う大事な情報。SIPをそのまま送っていたら,第三者が中身を解析して別のユーザーになりすますこともできてしまう。それを避けるためにHTTPSで暗号化していたというわけだ。

 試しに,Windows Messenger同士でIP電話を使ってみると,SIPのメッセージは暗号化されていなかった。SIPのバージョンや電話をかけたユーザーの情報,通話に使うポート番号など,いろんな情報がやりとりされているのが見て取れる。

 続いて実際に通話してみる。このときのIPパケットを覗くと,パケット長が200バイトある。IPの上位層プロトコルには,処理が軽いUDP(user datagram protocol)を使っている。IPヘッダーが20バイト,UDPヘッダーが8バイトついている。さらにUDPの上位では,リアルタイムな通信に使うRTP(real-time transport protocol)を使っている。RTPのヘッダーは12バイト。これらのヘッダー部を除くと,実際の音声データ部分は160バイトになる計算だ。

 RTPのヘッダーには,音声をディジタル・データに変換する音声符号化方式に関する情報が書き込まれている。これを確認したら,64kビット/秒のPCM(pulse code modulation)方式が指定されていた。64kビット/秒のPCM符号で160バイト分のディジタル・データが発生するには,20ミリ秒かかる。ここから逆算すると,1秒間に送られるIPパケットの数は50個とわかる。ただし,これは片方向だけのパケット数。電話は双方向で会話できるので,実際には1秒間に100個のIPパケットがネットワーク上をコンスタントに流れていることになる。

 Windows Messengerを使って自宅の電話に電話をかけるだけで,これだけのIPパケットが流れるのである。

 ちなみに,今回のようにPC to Phone機能を使って日ごろ使っているNTT電話にかけるには,サービスを提供するイー・アクセスと契約する必要がある。注意しよう。

斉藤 栄太郎