プロトコル実装を楽しもう!
PHPで始める
socketプログラミング
市川@cakephper
2025/7/19
PHPカンファレンス関西2025
自己紹介
市川 @cakephper
株式会社ビットフォレスト
CTO / VAddy事業部長
福岡在住
目次
PHPのsocket通信
簡単な
HTTP
プロトコル
HTTP
PHPでSocket通信
TCPを自作
TCP
PHPで
TCPプロトコルを実装
(クライアント側)
モチベーション
とにかく楽しい😀
TCP実装範囲(最低限)
TCPはOSが管理
PHPからは
手が出せないのでは?
TCP実装の流れ
TCPヘッダ
TCPヘッダのフラグ
TCP 3ウェイハンドシェイク
TCP データ送受信
TCPのデータ送受信が
ほぼ動く状態に
🎉🎉🎉
自作TCP
はまりポイント
TCP 3ウェイハンドシェイクが失敗
SYN RCVD
ステータス
にならない
(netstat)
自作TCPあるある(面白ポイント)
自作TCPあるある(面白ポイント)
最低限の実装に1週間程度
1週間で楽しめる
自作TCP
IPパケットを
自作
IP
PHPのsocket機能ではIP層は難しい
Linux限定で対応可能
IP_HDRINC
自作TCP/IP
1日で楽しめる
自作 IP
自作
イーサネット
Ether
自作イーサネット
自作イーサネット
FFIでlibcのsocket関数を読み込み
FFI経由でsocketを利用
PHPがあれば
なんでもできる!
💪💪💪
速報
PHP8.5.0 alphaからは
PF_PACKET使えます!
🎉🎉🎉
自作TCP/IP
自作HTTPS
TCP
IP
https
自作TSL on 自作TCP/IP
自作TSL on 自作TCP/IP リポジトリ
さいごに
ご清聴ありがとうございました
プロトコル実装を楽しもう!
PHPで始めるsocketプログラミング
市川@cakephper
全部スポンサー中!(宣伝)
PHPでIPルーター(断念)
TCP
チェックサム
TCPチェックサム
TCPの歴史