なんちゃって☆めも :: 闇パケット?

闇パケット?

ケータイのパケット代っていくらやったかな~?と思って検索してみたら、こんなページを発見。
■パケット代の謎
■基本的な話
i modeの通信料金は「パケット」という単位で計算されます。
DoCoMoの発表によると、1パケット=128バイト=0.3円。

でも、その通り計算すると、全然料金が計算にあわなくなります〓
目に見えない部分でしらないパケットが送られてるみたい…
これが、いわゆる「闇パケット」です。
※引用時に画像(絵文字)部分を文字に変更。
闇パケットて・・・。
ひょっとして、数年前に話題になったクローン携帯の親戚?…なコトはないと思いますが、実は裏では大量のパケットがやり取りされている!というような実態がないかどうかとか、ちょっと調べてみました。

端末 ⇒ サーバ

フツーにHTTPリクエストだと思いますが、クソでかいヘッダとか意味のないボディが出ていないか、念のために「Perlクックブック―Perlの鉄人が贈るレシピ集」 の、「レシピ17.2 TCPサーバを書く」を参考に、簡単なプログラムを作って実際に調べてみました。ポート番号9314(=臭いよ!)とか気にしないでください。エラー処理してません。端末があきらめるまで粘ってみます。
use Socket;
socket(SERVER, PF_INET, SOCK_STREAM, getprotobyname('tcp'));
setsockopt(SERVER, SOL_SOCKET, SO_REUSEADDR, 1);
bind(SERVER, sockaddr_in(9314, INADDR_ANY)) or die;
listen(SERVER, SOMAXCONN) or die;
while (accept(CLIENT, SERVER)) {
  my $content = '';
  while (my $line = <CLIENT>) {
    $content .= $line;
  }
  close(CLIENT);
  print STDERR $content;
  print STDERR 'Length: ' . length($content) . "\n";
}
close(SERVER);
↓手元のP-01Aでアクセスすると予想通りこんな感じ。(改行は CR + LF で 2バイト。)
GET / HTTP/1.1
Host: www.example.com:9314
User-Agent: DoCoMo/2.0 P01A(c100;TB;W24H15)

Length: 91
ホスト名は変更しています。実際に www.example.com:9314 にアクセスしても無駄ですよ!
↓2回目からはIf-Modified-Since:がついて 50バイト増。
GET / HTTP/1.1
Host: www.example.com:9314
User-Agent: DoCoMo/2.0 P01A(c100;TB;W24H15)
If-Modified-Since: Fri, 01 Jan 2010 00:00:00 GMT

Length: 141
ホスト名は変更しています。実際に www.example.com:9314 にアクセスしても無駄ですよ!
guid=ONでiモードIDを取得していると、IDで20バイト、"?guid=ON"で8バイトが追加。
GET /?guid=ON HTTP/1.1
Host: www.example.com:9314
User-Agent: DoCoMo/2.0 P01A(c100;TB;W24H15)
If-Modified-Since: Fri, 01 Jan 2010 00:00:00 GMT
X-DCMGUID: XXXXXXX

Length:  169
ホスト名は変更しています。実際に www.example.com:9314 にアクセスしても無駄ですよ!
utn属性を使って端末製造番号(個体識別情報)を得ようすると、44バイト追加~
GET / HTTP/1.1
Host: www.example.com:9314
User-Agent: DoCoMo/2.0 P01A(c100;TB;W24H15;serXXXXXXXXXXXXXXX; iccxxxxxxxxxxxxxxxxxxxx)
If-Modified-Since: Fri, 01 Jan 2010 00:00:00 GMT

Length: 135
ホスト名は変更しています。実際に www.example.com:9314 にアクセスしても無駄ですよ!
ホスト名・パス名・個体識別情報取得の有無で違いますが、100~200バイトは端末から送出されている感じです。

サーバ ⇒ 端末

User-AgentはP-01Aに偽装して、telnet で首相官邸(http://www.kantei.go.jp/)に乗り込んでみましたよ。(前半の赤字がこちらの入力。)
# telnet www.kantei.go.jp 80
Trying 202.232.75.151...
Connected to www.kantei.go.jp.
Escape character is '^]'.
GET / HTTP/1.1
Host:www.kantei.go.jp
User-Agent: DoCoMo/2.0 P01A(c100;TB;W24H15)

HTTP/1.1 302 Found
Date: Fri, 01 Jan 2010 00:00:00 GMT
Server: Apache
Location: http://www.kantei.go.jp/mobile/index.html
Content-Length: 225
Content-Type: text/html; charset=iso-8859-1

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>302 Found</title>
</head><body>
<h1>Found</h1>
<p>The document has moved <a href="http://www.kantei.go.jp/mobile/index.html">here</a>.</p>
</body></html>
User-Agentのせいだと思いますが、Status: 302 でhttp://www.kantei.go.jp/mobile/index.html に飛ばされてしまいました。ヘッダ210バイトでした。
ちなみにこの後、http://www.kantei.go.jp/mobile/index.html?guid=ON に更に飛ばされます。その度に200バイトくらいのヘッダと同じくらいのボディ。合わせて400~500バイトくらいが目に見えない内に通信されております。こっちのほうがよっぽど闇パケット…。(さらにたどり着いた先はインデント用なのか何なのか、タブが大量に…)

結論

やっぱり普通にHTTPで、特に闇な内容は発見できずでした。HTTPのリクエストとレスポンスのヘッダが、ブラウザには出てこずに見えないパケット(?)なので闇といえば闇ですかね。内容が0バイトで Status: 304 Not Modifiedって返すだけでも、端末⇔サーバで200~300バイトはやりとりされているという、実にアタリマエな結論が出ただけでした。ちゃんちゃん♪

なんちゃって☆めも