//
// Ip header
//
typedef struct _IP_HEADER
{
union
{
BYTE VersionAndHeaderLength; // Version 4 bit, Header Length 4 bit * 4
struct
{
BYTE HeaderLength : 4;
BYTE Version : 4;
};
};
BYTE TypeOfService;
WORD DatagramLength;
WORD Id;
WORD FlagsAndFragmentOffset; // Flags 3 bit, Fragment Offset 13 bit
BYTE TimeToLive;
BYTE Protocol;
WORD CheckSum;
unsigned long SourceIp;
unsigned long DestinationIp;
} IP_HEADER, *PIP_HEADER;
//
// Tcp Header
//
typedef struct _TCP_HEADER
{
WORD SourcePort;
WORD DestinationPort;
DWORD SeqNumber;
DWORD AckNumber;
union
{
WORD LenAndCodeBits; // Header length 4 bit, Reserved 6 bit, Code Bits 6 bit
struct
{
WORD Reserved : 4;
WORD HeaderLength : 4;
WORD TcpFin : 1;
WORD TcpSyn : 1;
WORD TcpRst : 1;
WORD TcpPsh : 1;
WORD TcpAck : 1;
WORD TcpUrg : 1;
WORD Reserved4 : 2;
};
};
WORD Window;
WORD CheckSum;
WORD UrgentPointer;