rawソケットからの出力は、下記に示す規則によって行われます。
1. 終点IPアドレスを指定して、sendtoあるいは、sendmsgを用いて行う。
connectで接続されている場合は、write,writev,sendを用いて行うことが出来る。
2. IP_HDRINCLが設定されていない場合、パケットを送信するときにプロセスがIPヘッダを生成する。
ソケットに書き出すデータは、IPヘッダの直後に送出する1バイトを指定する。
3. IP_HDRINCLが設定されている場合、プロセスがIPヘッダを生成しないので、
IPヘッダを生成し、送信する必要がある。
4. カーネルはMTUを超えるrawパケットの断片化を行う。
ちょっと、そっけないですがrawソケットの書き出し規則はこんな感じ。