モバイル版ChromeのSPDYプロキシはIPv6に対応
モバイル版のChromeが正式にSPDYに対応しました。
たまたま実験してて気づいてたのですが、SPDYプロキシはIPv6に対応しているようです。
実験
グローバルなIPv6が振られているMac上でサーバアプリを起動して、IPv6でアクセスできるようにします。今回はNode.jsを使ったサーバアプリを起動しておきます。また、アクセスしてきたIPアドレスをログで表示できるようにしておきます。
IPv6でアクセスできるようにするには、Node.jsでlistenを下記のように書いておきます。
server.listen(3000, '::');
PC版Chromeでアクセス
IPv6指定でアクセスすると、このように接続されます。これはまあ普通です。
Node.jsのログでIPアドレスを確認してみます。同じマシンからアクセスしてるので同じIPv6アドレスです。
Android版Chromeでアクセス
Android版ChromeでSPDYをON(帯域幅の管理→データ使用量を節約)でアクセスしてみます。
同じようにアクセスできました。この時のアクセスログを見てみると
謎のIPv6アドレスからアクセスが来ていますね。これを調べてみます。
どう見てもGoogleさんです。本当にry
ちなみにSPDYをOFF(データ使用量を節約しない)に設定すると
このようにアドレス解決できません(今まではこうだった)
追試
IPv6アクセスの確認サイトである「The KAME project」にアクセスしてみます。 このサイトのIPv6アドレスは「2001:200:dff:fff1:216:3eff:feb1:44d7」です。
モバイル版ChromeでSPDY ONで「http://www.kame.net/」へアクセス(IPv4)と「http://[2001:200:dff:fff1:216:3eff:feb1:44d7]」(IPv6)へそれぞれアクセスしてみてください
亀が泳いでいればIPv6でアクセスしていることになります。IPv6アドレスでアクセスした場合には亀が泳いでいるのが確認できると思います。
まとめ
Android端末で僕が契約しているdocomo XiのLTEでは端末にはIPv6は割り当てられず、IPv4アドレスしか振られません。なので普通にURLを入れるとIPv4でのアクセスになります。しかしIPv6アドレスを直打ちすることで、SPDYプロキシがIPv6へのアクセスを可能にしていることがわかりました。
ただし、PCからのアクセスだとWebScoketで接続できますが、SPDY経由だとxhr-pollingになるのでWebSocketのプロキシには対応していないようです...
追記:httpsアクセスはSPDYプロキシは通ってないようですね(まぁそうか)