?? netstruct.h
字號:
#ifndef _MONITOR_PCAP_DEFINE_H_
#define _MONITOR_PCAP_DEFINE_H_
#define WM_DATA_TRANSLATE WM_USER+10
//定義ip報頭
namespace PROTOCOL_DEFINE
{
//下面的定義參見RFC 1700
#define IP "0x0800"
#define ARP "0x0806"
#define RARP "0x8035"
#define ICMP 1 //控制信息協議
#define TCP 6 //傳輸控制協議
#define EGP 8 //外部網關協議
#define IGP 9 //內部網關協議
#define UDP 17 //用戶數據報協議
struct ETHERNET_HEADER
{
byte des_mac[6]; //接收端的MAC地址
byte src_mac[6]; //發送端的MAC地址
byte type[2]; //類型字段
};
struct IP_HEADER
{
byte ver_len; //版本4位,頭長度4位,報頭長度以32位為一個單位
byte type; //類型8位
byte length[2]; //總長度,16位,指出報文的以字節為單位的總長度,報文長度不能超過65536個字接,否則認為報文遭到破壞
byte id[2]; //報文標示,用于多于一個報文16位
byte flag_offset[2];//標志,3位 數據塊偏移13位
byte time; //生存時間,8位
byte protocol; //協議,8位
byte crc_val[2]; //頭校驗和,16位
byte src_addr[4]; //源地址,32位
byte des_addr[4]; //目標地址,32位
byte options[4]; //選項和填充,32位
};
struct TCP_HEADER
{
byte src_port[2]; //發送端端口號,16位
byte des_port[2]; //接收端端口號,16位
byte sequence_no[4]; //32位,標示消息端的數據位于全體數據塊的某一字節的數字
byte ack_no[4]; //32位,確認號,標示接收端對于發送端接收到數據塊數值
byte offset_reser_con[2];//數據偏移4位,預留6位,控制位6為
byte window[2]; //窗口16位
byte checksum[2]; //校驗碼,16位
byte urgen_pointer[2]; //16位,緊急數據指針
byte options[4]; //選祥和填充,32位
};
struct UDP_HEADER
{
byte src_port[2]; //發送端端口
byte des_port[2]; //接收端端口
byte length[2]; //用戶數據報長度
byte check_sum[2]; //校驗碼
};
struct ICMP_HEADER
{
byte type; //類型字節(1字節)
byte code; //代碼字節(1字節)
byte check_sum[2]; //校驗碼(2字節)
};
struct ARP_PROTOCOL
{
byte hw_type[2]; //硬件類型。以態網表示為1
byte protocol[2]; //網絡層協議的類型,例如IP協議為800
byte hw_len; //查詢物理地址的字節長度。以態網時為6
byte protocol_len; //查詢上層協議地址的字節長度。IPv4時為4
byte opcode[2]; //表示操作內容的數值。1為ARP請求,2為ARP響應,3為RARP請求,4為RARP響應
byte src_mac[6]; //發送端MAC地址
byte src_addr[4]; //發送端的IP地址
byte des_mac[6]; //查詢對象的MAC地址
byte des_addr[4]; //查詢對象的IP地址
};
int get_IP_HEADER_length(IP_HEADER * ip);
void get_MAC_addr(unsigned char * p,char * buf,int bufsize);
}
#endif
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -