ようやく自分の頭の中でboost.asioのローレイヤーネットワークプログラミングが明らかになってきました。 まず基本。 asioではraw socket生成にbasic_raw_socketを使います。 これはLinuxの生のシステムコールを使用した場合の raw_socket = socket(AF_INET, SOCK_RAW, int protocol); にあたります。 ここでbasic_raw_socketのテンプレート引数として1つ前の記事のようなクラスを与えてやります。 これでユーザーが定義した独自のローソケット用socket, resolver, endpointが作れます。 boost::asio::io_service io_service; // ソケット作成 boost::asio::ip::rawtcp::socket(io_service, boost::as