PHPerKaigi 2026
レギュラートーク(20分)

PHPでできる!自作IPルーター

cakephper 市川@cakephper cakephper
2

PHPのsocket機能を利用すると手軽にネットワークプログラミングができます。
私は今までにPHPでHTTPS(TLS)プロトコル、TCP/IPプロトコルを実装してきました。
PHPでTCP/IPを実装?と思うかもしれませんが、意外とPHPでも下の層のプロトコルが自作できます。
PHP8.5からはその下の層のイーサネットプロトコルも扱えるようになり、ついにPHPで物理層以外のプロトコルが実装できるようになったのです!

今回はその機能を使って簡単なIPルータを自作する方法を解説します。
異なるネットワークのホスト同士がどのように通信するのか、それをルータとしてどう処理するのか。
PHPを使うことでこの処理の理解がしやすく、C言語よりは手軽に自作ルータが体験できます。

このセッションを通して次のことが学べます

  • IPアドレスとイーサネットとの関係
  • MACアドレスの役割
  • パケットを転送する仕組み
  • PHPのネットワークプログラミング
  • LinuxなどOSが提供するsocket機能の役割

アジェンダ(予定)

  • PHPのsocket機能
  • ルータの仕組み
    • ARP
    • MACアドレス書き換え
    • パケット転送
  • PHPでルータを作る場合の注意点
  • PHPを使ったネットワークプログラミングの面白話