できちゃいました。(笑)
ついでに全体をリファクタリング。
基本的にずーっと RFC と Ethereal とにらめっこしただけなので、
技術的に特筆すべきことはないっぽいです。
現在の手抜き
- タイムアウト処理がない
- ルーティングテーブルがないので、TCP受け側のみ。
- ( 送信元を覚えてそこへ送り返すことで無理やり解決 )
- 実は HTTP リクエストヘッダは解析してない。(爆)
- 状態移行とか全然気にしてない。
- 相変わらず connect はできない
ダメダメ実装ですね。はい。
ちなみに、TCP の SYN パケットの送信元の MAC アドレスを記憶しておいて、
以後このソケットへの送信はすべてその MAC アドレス宛て、としているけれども、
NAT を設定したらルータの外からもちゃんとアクセスできましたとさ。
まぁ、考えてみれば当然なんだけど。意外とよくできてるなぁ(仕様が)と思った。
どうやら id:higepon:20051206 をインスパイヤした模様。
コード晒せるといいんだけど晒す場所がない罠。はてなにそんな機能できないかな…>中の人