netinet

Netinet

TCP/IP stack using C++

方針

Packet

Packet

class Packet{


public:
 const MsgBody * msg; // msg body。サイズなどもここに含まれる。

 encap(<Header> header); // テンプレートを使う。
 decap();

private:
 unsigned int _header_count ;  // ついてるヘッダの数。0-3だろうね。
 unsigned int _last_header; // 一番外側についてるヘッダの種類(いらない?)
                            // encap,decapの時はこれを書き換える 


}

MsgBody

class MsgBody{

  char * msg_body;
  unsinged int msg_size;

  MsgBody(char * msg_body, size); // 正確にsize分だけmallocする

}

Header_TCP


Header_UDP


Header_ICMP

Header_IP

Header_Ether

Layer

そのレイヤ特有の動作。

layer_TCP

layer_UDP

layer_ICMP

layer_IP

layer_Ether

other

TCP_connection

コネクションが成立するたびに生成され、TCPの一つのコネクションを管理する。