Submit Search
Upload
PHPで使うIPv6の実際
•
0 likes
•
9,466 views
Tetsuji Koyama
Follow
2008/11/29 第2回楽天テクノロジーカンファレンスの出張PHP勉強会で発表した資料。IW2008の時のものとほとんど同じです。
Read less
Read more
Technology
Report
Share
Report
Share
1 of 38
Download now
Download to read offline
Recommended
100 G超通信時代の安定した高品質な伝送インフラ構築づくり
100 G超通信時代の安定した高品質な伝送インフラ構築づくり
Tomohiro Sakamoto(Onodera)
本当は楽しいインターネット
本当は楽しいインターネット
Yuya Rin
サービスデザインとUXDそしてデザインプロセス
サービスデザインとUXDそしてデザインプロセス
Masaya Ando
UnityとNCMBでユーザ管理を実装してみた話
UnityとNCMBでユーザ管理を実装してみた話
torisoup
Azure DevOps と開発管理
Azure DevOps と開発管理
Tsukasa Kato
インターネットの舞台裏
インターネットの舞台裏
Taiji Tsuchiya
SHOWROOMとDeNAで取り組んだライブ配信基盤刷新・超低遅延ライブ配信の裏側【DeNA TechCon 2020 ライブ配信】
SHOWROOMとDeNAで取り組んだライブ配信基盤刷新・超低遅延ライブ配信の裏側【DeNA TechCon 2020 ライブ配信】
DeNA
UXとUXD~長期的ユーザビリティをどう作りどう測るか?
UXとUXD~長期的ユーザビリティをどう作りどう測るか?
Masaya Ando
Recommended
100 G超通信時代の安定した高品質な伝送インフラ構築づくり
100 G超通信時代の安定した高品質な伝送インフラ構築づくり
Tomohiro Sakamoto(Onodera)
本当は楽しいインターネット
本当は楽しいインターネット
Yuya Rin
サービスデザインとUXDそしてデザインプロセス
サービスデザインとUXDそしてデザインプロセス
Masaya Ando
UnityとNCMBでユーザ管理を実装してみた話
UnityとNCMBでユーザ管理を実装してみた話
torisoup
Azure DevOps と開発管理
Azure DevOps と開発管理
Tsukasa Kato
インターネットの舞台裏
インターネットの舞台裏
Taiji Tsuchiya
SHOWROOMとDeNAで取り組んだライブ配信基盤刷新・超低遅延ライブ配信の裏側【DeNA TechCon 2020 ライブ配信】
SHOWROOMとDeNAで取り組んだライブ配信基盤刷新・超低遅延ライブ配信の裏側【DeNA TechCon 2020 ライブ配信】
DeNA
UXとUXD~長期的ユーザビリティをどう作りどう測るか?
UXとUXD~長期的ユーザビリティをどう作りどう測るか?
Masaya Ando
DevOpsって何?
DevOpsって何?
Gosuke Miyashita
コンテナ導入概要資料2018
コンテナ導入概要資料2018
Masahito Zembutsu
ディレクターとして取り組むHCD業務の実際
ディレクターとして取り組むHCD業務の実際
寛 水野
WikiPlan事業計画書
WikiPlan事業計画書
Kazuma Tadaki
Spring Cloud Data Flow の紹介 #streamctjp
Spring Cloud Data Flow の紹介 #streamctjp
Yahoo!デベロッパーネットワーク
Azureの契約直前・直後に意識しておくこと10箇条
Azureの契約直前・直後に意識しておくこと10箇条
Yui Ashikaga
P2P Container Image Distribution on IPFS With containerd and nerdctl
P2P Container Image Distribution on IPFS With containerd and nerdctl
Kohei Tokunaga
シェルスクリプトで簡易ping監視
シェルスクリプトで簡易ping監視
Kazuhiro Nishiyama
【CNDT2022】SIerで実践!クラウドネイティブを普及させる取り組み
【CNDT2022】SIerで実践!クラウドネイティブを普及させる取り組み
Yuta Shimada
Tealium+AWS Analytics サービスで実現する Customer Experience(CX)
Tealium+AWS Analytics サービスで実現する Customer Experience(CX)
Amazon Web Services Japan
HTTPを理解する
HTTPを理解する
IIJ
使用者體驗創新UXID
使用者體驗創新UXID
CPCRDI
動画配信プラットフォーム on AWS
動画配信プラットフォーム on AWS
Amazon Web Services Japan
ユーザーインタビューからその後どうするの? 発話録からKA法(本質的価値抽出法)でインサイトを見つけよう!
ユーザーインタビューからその後どうするの? 発話録からKA法(本質的価値抽出法)でインサイトを見つけよう!
Yoshiki Hayama
新卒1年目が語る「ヤフーに入ってどう?」 #ヤフー名古屋
新卒1年目が語る「ヤフーに入ってどう?」 #ヤフー名古屋
Yahoo!デベロッパーネットワーク
Yahoo! ニュースにおけるドキュメント管理の事例紹介
Yahoo! ニュースにおけるドキュメント管理の事例紹介
Yahoo!デベロッパーネットワーク
アプリ起動時間高速化 ~推測するな、計測せよ~
アプリ起動時間高速化 ~推測するな、計測せよ~
gree_tech
IX事業者とインターネットの未来
IX事業者とインターネットの未来
Yoshiki Ishida
ChatGPTでモノづくりを支援してもらった話(移行済)
ChatGPTでモノづくりを支援してもらった話(移行済)
tomitomi3 tomitomi3
ネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分け
モノビット エンジン
IPv6って何?(拡張ヘッダ編)
IPv6って何?(拡張ヘッダ編)
nemumu
PHPプログラミングのIPv6対応の実際
PHPプログラミングのIPv6対応の実際
Tetsuji Koyama
More Related Content
What's hot
DevOpsって何?
DevOpsって何?
Gosuke Miyashita
コンテナ導入概要資料2018
コンテナ導入概要資料2018
Masahito Zembutsu
ディレクターとして取り組むHCD業務の実際
ディレクターとして取り組むHCD業務の実際
寛 水野
WikiPlan事業計画書
WikiPlan事業計画書
Kazuma Tadaki
Spring Cloud Data Flow の紹介 #streamctjp
Spring Cloud Data Flow の紹介 #streamctjp
Yahoo!デベロッパーネットワーク
Azureの契約直前・直後に意識しておくこと10箇条
Azureの契約直前・直後に意識しておくこと10箇条
Yui Ashikaga
P2P Container Image Distribution on IPFS With containerd and nerdctl
P2P Container Image Distribution on IPFS With containerd and nerdctl
Kohei Tokunaga
シェルスクリプトで簡易ping監視
シェルスクリプトで簡易ping監視
Kazuhiro Nishiyama
【CNDT2022】SIerで実践!クラウドネイティブを普及させる取り組み
【CNDT2022】SIerで実践!クラウドネイティブを普及させる取り組み
Yuta Shimada
Tealium+AWS Analytics サービスで実現する Customer Experience(CX)
Tealium+AWS Analytics サービスで実現する Customer Experience(CX)
Amazon Web Services Japan
HTTPを理解する
HTTPを理解する
IIJ
使用者體驗創新UXID
使用者體驗創新UXID
CPCRDI
動画配信プラットフォーム on AWS
動画配信プラットフォーム on AWS
Amazon Web Services Japan
ユーザーインタビューからその後どうするの? 発話録からKA法(本質的価値抽出法)でインサイトを見つけよう!
ユーザーインタビューからその後どうするの? 発話録からKA法(本質的価値抽出法)でインサイトを見つけよう!
Yoshiki Hayama
新卒1年目が語る「ヤフーに入ってどう?」 #ヤフー名古屋
新卒1年目が語る「ヤフーに入ってどう?」 #ヤフー名古屋
Yahoo!デベロッパーネットワーク
Yahoo! ニュースにおけるドキュメント管理の事例紹介
Yahoo! ニュースにおけるドキュメント管理の事例紹介
Yahoo!デベロッパーネットワーク
アプリ起動時間高速化 ~推測するな、計測せよ~
アプリ起動時間高速化 ~推測するな、計測せよ~
gree_tech
IX事業者とインターネットの未来
IX事業者とインターネットの未来
Yoshiki Ishida
ChatGPTでモノづくりを支援してもらった話(移行済)
ChatGPTでモノづくりを支援してもらった話(移行済)
tomitomi3 tomitomi3
ネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分け
モノビット エンジン
What's hot
(20)
DevOpsって何?
DevOpsって何?
コンテナ導入概要資料2018
コンテナ導入概要資料2018
ディレクターとして取り組むHCD業務の実際
ディレクターとして取り組むHCD業務の実際
WikiPlan事業計画書
WikiPlan事業計画書
Spring Cloud Data Flow の紹介 #streamctjp
Spring Cloud Data Flow の紹介 #streamctjp
Azureの契約直前・直後に意識しておくこと10箇条
Azureの契約直前・直後に意識しておくこと10箇条
P2P Container Image Distribution on IPFS With containerd and nerdctl
P2P Container Image Distribution on IPFS With containerd and nerdctl
シェルスクリプトで簡易ping監視
シェルスクリプトで簡易ping監視
【CNDT2022】SIerで実践!クラウドネイティブを普及させる取り組み
【CNDT2022】SIerで実践!クラウドネイティブを普及させる取り組み
Tealium+AWS Analytics サービスで実現する Customer Experience(CX)
Tealium+AWS Analytics サービスで実現する Customer Experience(CX)
HTTPを理解する
HTTPを理解する
使用者體驗創新UXID
使用者體驗創新UXID
動画配信プラットフォーム on AWS
動画配信プラットフォーム on AWS
ユーザーインタビューからその後どうするの? 発話録からKA法(本質的価値抽出法)でインサイトを見つけよう!
ユーザーインタビューからその後どうするの? 発話録からKA法(本質的価値抽出法)でインサイトを見つけよう!
新卒1年目が語る「ヤフーに入ってどう?」 #ヤフー名古屋
新卒1年目が語る「ヤフーに入ってどう?」 #ヤフー名古屋
Yahoo! ニュースにおけるドキュメント管理の事例紹介
Yahoo! ニュースにおけるドキュメント管理の事例紹介
アプリ起動時間高速化 ~推測するな、計測せよ~
アプリ起動時間高速化 ~推測するな、計測せよ~
IX事業者とインターネットの未来
IX事業者とインターネットの未来
ChatGPTでモノづくりを支援してもらった話(移行済)
ChatGPTでモノづくりを支援してもらった話(移行済)
ネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分け
Similar to PHPで使うIPv6の実際
IPv6って何?(拡張ヘッダ編)
IPv6って何?(拡張ヘッダ編)
nemumu
PHPプログラミングのIPv6対応の実際
PHPプログラミングのIPv6対応の実際
Tetsuji Koyama
IPv6 application_and_v4kokatsu-tf
IPv6 application_and_v4kokatsu-tf
Ruri Hiromi
Lightweight Language Diverプレゼン資料:アプリケーションのIPv6対応のススメ(LL編)
Lightweight Language Diverプレゼン資料:アプリケーションのIPv6対応のススメ(LL編)
v6app
IPv6時代のWebアプリケーション&プラットフォーム 2014
IPv6時代のWebアプリケーション&プラットフォーム 2014
v6app
20141023 IPv6 Summit in FUKUOKA 2014 IPv6対応Webサービスの作り方
20141023 IPv6 Summit in FUKUOKA 2014 IPv6対応Webサービスの作り方
v6app
これからのアプリ開発はIPv6対応で行こう!(2014/09/20 OSC Hiroshima版)
これからのアプリ開発はIPv6対応で行こう!(2014/09/20 OSC Hiroshima版)
v6app
結局IPv6ってどうなん?(序)
結局IPv6ってどうなん?(序)
nemumu
IPv4/IPv6 移行・共存技術の動向
IPv4/IPv6 移行・共存技術の動向
Yuya Rin
AWSで全てのパブリックIPv4アドレスが有料になった件について 2024/02/09の勉強会で発表されたものです。
AWSで全てのパブリックIPv4アドレスが有料になった件について 2024/02/09の勉強会で発表されたものです。
iPride Co., Ltd.
20150228 OSC2015 Tokyo/Spring サンプルコードで理解するアプリケーションのIPv6対応
20150228 OSC2015 Tokyo/Spring サンプルコードで理解するアプリケーションのIPv6対応
v6app
IPv6ハッカソンの紹介
IPv6ハッカソンの紹介
Ken SASAKI
I pv6 research_basical
I pv6 research_basical
kuni255
20120516 v6opsf-ngn final
20120516 v6opsf-ngn final
Ruri Hiromi
20180309 jaipa-shimonoseki
20180309 jaipa-shimonoseki
Akira Nakagawa
192.0.0.4 on android
192.0.0.4 on android
@ otsuka752
545人のインフラを支えたNOCチーム!
545人のインフラを支えたNOCチーム!
Masayuki Kobayashi
PHPの今とこれから2006
PHPの今とこれから2006
Rui Hirokawa
さくらのVPS で IPv4 over IPv6ルータの構築
さくらのVPS で IPv4 over IPv6ルータの構築
Tomocha Potter
IPv6 Update
IPv6 Update
Shinsuke SUZUKI
Similar to PHPで使うIPv6の実際
(20)
IPv6って何?(拡張ヘッダ編)
IPv6って何?(拡張ヘッダ編)
PHPプログラミングのIPv6対応の実際
PHPプログラミングのIPv6対応の実際
IPv6 application_and_v4kokatsu-tf
IPv6 application_and_v4kokatsu-tf
Lightweight Language Diverプレゼン資料:アプリケーションのIPv6対応のススメ(LL編)
Lightweight Language Diverプレゼン資料:アプリケーションのIPv6対応のススメ(LL編)
IPv6時代のWebアプリケーション&プラットフォーム 2014
IPv6時代のWebアプリケーション&プラットフォーム 2014
20141023 IPv6 Summit in FUKUOKA 2014 IPv6対応Webサービスの作り方
20141023 IPv6 Summit in FUKUOKA 2014 IPv6対応Webサービスの作り方
これからのアプリ開発はIPv6対応で行こう!(2014/09/20 OSC Hiroshima版)
これからのアプリ開発はIPv6対応で行こう!(2014/09/20 OSC Hiroshima版)
結局IPv6ってどうなん?(序)
結局IPv6ってどうなん?(序)
IPv4/IPv6 移行・共存技術の動向
IPv4/IPv6 移行・共存技術の動向
AWSで全てのパブリックIPv4アドレスが有料になった件について 2024/02/09の勉強会で発表されたものです。
AWSで全てのパブリックIPv4アドレスが有料になった件について 2024/02/09の勉強会で発表されたものです。
20150228 OSC2015 Tokyo/Spring サンプルコードで理解するアプリケーションのIPv6対応
20150228 OSC2015 Tokyo/Spring サンプルコードで理解するアプリケーションのIPv6対応
IPv6ハッカソンの紹介
IPv6ハッカソンの紹介
I pv6 research_basical
I pv6 research_basical
20120516 v6opsf-ngn final
20120516 v6opsf-ngn final
20180309 jaipa-shimonoseki
20180309 jaipa-shimonoseki
192.0.0.4 on android
192.0.0.4 on android
545人のインフラを支えたNOCチーム!
545人のインフラを支えたNOCチーム!
PHPの今とこれから2006
PHPの今とこれから2006
さくらのVPS で IPv4 over IPv6ルータの構築
さくらのVPS で IPv4 over IPv6ルータの構築
IPv6 Update
IPv6 Update
More from Tetsuji Koyama
FuelPHP で DynamoDB
FuelPHP で DynamoDB
Tetsuji Koyama
まつりとTシャツと私
まつりとTシャツと私
Tetsuji Koyama
LLまつりに行こう!
LLまつりに行こう!
Tetsuji Koyama
FuelPHPを3ヶ月使ってみて
FuelPHPを3ヶ月使ってみて
Tetsuji Koyama
the History of LL events
the History of LL events
Tetsuji Koyama
the Histrory of LT and ドラ娘
the Histrory of LT and ドラ娘
Tetsuji Koyama
IPv6の闇とPHP
IPv6の闇とPHP
Tetsuji Koyama
PHP Frameworks with IPv6
PHP Frameworks with IPv6
Tetsuji Koyama
LL Planets告知
LL Planets告知
Tetsuji Koyama
Keires_DBリリースのご案内
Keires_DBリリースのご案内
Tetsuji Koyama
開発ライセンスとプログラマーの自由
開発ライセンスとプログラマーの自由
Tetsuji Koyama
日本は世界一のITコミュニティ天国
日本は世界一のITコミュニティ天国
Tetsuji Koyama
Traitsについて
Traitsについて
Tetsuji Koyama
ランダム文字ぽいものをつくる
ランダム文字ぽいものをつくる
Tetsuji Koyama
More from Tetsuji Koyama
(14)
FuelPHP で DynamoDB
FuelPHP で DynamoDB
まつりとTシャツと私
まつりとTシャツと私
LLまつりに行こう!
LLまつりに行こう!
FuelPHPを3ヶ月使ってみて
FuelPHPを3ヶ月使ってみて
the History of LL events
the History of LL events
the Histrory of LT and ドラ娘
the Histrory of LT and ドラ娘
IPv6の闇とPHP
IPv6の闇とPHP
PHP Frameworks with IPv6
PHP Frameworks with IPv6
LL Planets告知
LL Planets告知
Keires_DBリリースのご案内
Keires_DBリリースのご案内
開発ライセンスとプログラマーの自由
開発ライセンスとプログラマーの自由
日本は世界一のITコミュニティ天国
日本は世界一のITコミュニティ天国
Traitsについて
Traitsについて
ランダム文字ぽいものをつくる
ランダム文字ぽいものをつくる
Recently uploaded
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
danielhu54
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
Hiroki Ichikura
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
iPride Co., Ltd.
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
Toru Tamaki
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Yuma Ohgami
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
Toru Tamaki
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
taisei2219
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
Toru Tamaki
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
Ryo Sasaki
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
sugiuralab
Recently uploaded
(10)
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
PHPで使うIPv6の実際
1.
PHPで使うIPv6の実際 小山 哲志 id:koyhoge koyama@hoge.org
2.
本日の内容 •IPv6対応とはどういうことか? •PHP本体のIPv6対応 •外部Extension/PEARの対応 •まとめ
3.
本日の内容 •IPv6対応とはどういうことか? •PHP本体のIPv6対応 •外部Extension/PEARの対応 •まとめ
4.
まず前提 •2010∼2011年に新しいIPv4アドレスがな くなります。 •一般ユーザへのアドレス配布が変わる •IPv4プライベート+NAT •IPv6グローバル •IPv4NATにはいろいろ問題が多い •サービスのIPv6対応が必須の世界へ
5.
IPv4とIPv6の違い •アドレス長が違う •IPv4: 32ビット (xxx.xxx.xxx.xxx) •IPv6:
128ビット (ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff) •IPv4と違い、IPv6はインターフェースに 複数のアドレスが付くのが普通 •どのアドレスをsrcにするか?
6.
IPv6対応とは? •IPv4でしか動かないものを、 IPv6のみで動くようにすること ではなく IPv4でもIPv6でも、両方で動くようにす ること。 •プロトコルに依存しないプログラミング
7.
OSの対応は完了している •最新のOSであれば問題なし •Linux,BSD(MacOS),その他UNIX •WindowsXP,Vista •新APIに従ったアプリケーションならば 大丈夫 •PHPもOSから見ればアプリケーション
8.
ホスト名→アドレス •リゾルバ •/etc/hosts •DNS •etc..
9.
API変更 •IPv4 •gethostbyname •gethostbyaddr •IPv4+IPv6 •getaddrinfo •getnameinfo
10.
何故APIの変更が必要か? •これまでのアドレス情報(sockaddr) •IPv4決めうち •これからのアドレス情報 •複数の情報が返る可能性 •A,AAAA両方設定されているかも
11.
本日の内容 •IPv6対応とはどういうことか? •PHP本体のIPv6対応 •外部Extension/PEARの対応 •まとめ
12.
PHPの使われ方 •Apache(やその他のWebサーバの)モ ジュールとして •mod_php •CGIとして •コマンドラインとして
13.
mod_php/CGI •ネットワーク入出力はhttpdが面倒を見 てくれる •PHP自体はIPv6対応の必要なし •アドレス解析部分は除く •Apacheは問題なくIPv6を扱える
14.
httpdに頼れない場合 •PHPで独自にネットワーク接続をする •他のWebサービスにアクセスする •メール送受信 •FTP送受信 •etc...
15.
PHPのネットワークIO •streamモデル •ソケットを直接使わなくても、ネット ワーク入出力ができる •ライブラリのほとんどはこれを利用して いるが、例外あり
16.
streamのIPv6対応 •php_network_getaddresses() •main/network.c •getaddrinfoを用いて、セオリー通りに プログラミングしている •php_stream_xport_create() •main/streams/transports.c •問題なし
17.
streamはOK $cont = file_get_contents('http://ipv6.google.com/'); $fp
= fsockopen('ipv6.google.com', 80); $out = "GET / HTTP/1.1rn"; $out .= "Host: ipv6.google.comrn"; $out .= "Connection: Closernrn"; fwrite($fp, $out); while (!feof($fp)) { echo fgets($fp, 128); } fclose($fp);
18.
ext/sockets •streamではないネットワーク入出力 •socketそのままのAPI •bind,listen,acceptもある •一応IPv6対応しているが、AF_INET6を明 示的に指定する必要がある •IPv6→IPv4フォールバックができない •要注意!
19.
DNS Query •dns_get_record (PHP関数) •AAAAも含めて、すべてのレコードが ちゃんと返ってくる •ただしBSD(MacOS含む),Windowsでは 実装されていない •PEAR::Net_DNSを使う
20.
gethostbyname •PHP関数 •同名のC APIの単純なラッパー •IPv6対応のコードは一応入っている •でもOSによっては動かない •Linux,MacOSはだめ •gethostbyaddrも同様
21.
本日の内容 •IPv6対応とはどういうことか? •PHP本体のIPv6対応 •外部Extension/PEARの対応 •まとめ
22.
extension/PEAR •標準extension •soap, ftp •PEAR •Net_IPv6 •Net_Socket •Net_POP3 •Net_IMAP •Net_Server
23.
ext/soap •SOAP •HTTPでXMLを用いたRPC •http_connect(): php_http.c •php_stream_xport_createを使ってい る •streamの上で動いているのでOK
24.
ext/ftp •FTP •ファイル転送プロトコル •php_network_connect_socket_to_hostを 呼び出している •その下でphp_network_getaddresses •問題なし
25.
PEAR::Net_IPv6 •IPv6アドレス解析クラス •メソッドは3つだけ •Uncompress •Compress •CheckIPv6
26.
PEAR::Net_IPv6つづき require_once 'Net/IPv6.php'; $v6addr =
'fe80::1'; $uc = Net_IPv6::uncompress($v6addr); echo $uc; // fe80:0:0:0:0:0:0:1
27.
PEAR::Net_Socket •socketのOO API •fsockopen/pfsockopenを呼び出している •つまりstreamを使う •connect時にIPv4を前提にしたアドレス チェックを行なっている •ホスト名が渡されるとgethostbynameで 名前解決する
28.
PEAR::Net_Socketつづき •IPv6なアドレスやAAAAしかないホスト名 が渡されると、この部分は無効になる •結果的にPHP内部で名前解決される • OK! if (!$addr)
{ return $this->raiseError('$addr cannot be empty'); } elseif (strspn($addr, '.0123456789') == strlen($addr) || strstr($addr, '/') !== false) { $this->addr = $addr; } else { $this->addr = @gethostbyname($addr); }
29.
PEAR::Net_Socketつづき require_once 'Net/Socket.php'; $sock =
new Net_Socket; $sock->connect('ipv6.google.com', 80); $out = "GET / HTTP/1.1rn"; $out .= "Host: ipv6.google.comrn"; $out .= "Connection: Closernrn"; $sock->write($out); while (!$sock->eof()) { echo $sock->gets(128); } $sock->disconnect();
30.
PEAR::Net_POP3 •メール取得プロトコルPOP3 •Post Office Protocol
version3 •PEAR::Net_Socketを使っている •OK!
31.
PEAR::Net_IMAP •メール取得プロトコルIMAP •Internet Message Access
Protocol •PEAR::Net_Socketを使っている •OK!
32.
PEAR::Net_SMTP •メール転送プロトコルSMTP •Simple Mail Transfer
Protocol •PEAR::Net_Socketを使っている •OK!
33.
PEAR::HTTP_Request •HTTP送受信ライブラリ •PEAR::Net_Socketを使っている •OK!
34.
PEAR::Net_Server •PHPでサーバを作るクラス •bindしてlistenするもの •sockets extensionを利用 •IPv4/IPv6で同時に待ち受けるサーバは作 れない
35.
PEAR::Net_DNS •DNS問い合わせを行なうクラス •socketはfsockopenを使っている •AAAAも含めて問い合わせできるが、呼 び出し時にRR Typeを指定しなくてはい けない
36.
本日の内容 •IPv6対応とはどういうことか? •PHP本体のIPv6対応 •外部Extension/PEARの対応 •まとめ
37.
まとめ •PHPは結構ちゃんとIPv6対応している •fsockopen/Net_Socketがベースになっ ているものが多い。 •自動的にIPv6名前解決、接続できる •IPv6アドレス解析はまだまだ不十分 •マルチキャスト/エニーキャストの考慮 はない •PHPで必要かどうかも疑問
38.
お願い •まだまだ調査不足を実感しています •私もIPv6でサービスを運用した経験は ありません •とりあえずIPv6触ってみませんか? •他言語の調査をしてくれる方大募集
Download now