//#define _WINSOCK_DEPRECATED_NO_WARNINGS
#include"stdafx.h"
#include <iostream>
#include <iomanip>
#include"pcap.h"
#include<string>
#include<cstring>
using namespace std;
//ethernet 帧头
struct ethernet
{ //u_char是无符号的char型 而char是有符号的char型,u_char和char都占一个字节,8个bit位
u_int8_t ether_dst[6]; //6位目的地址字段
u_int8_t ether_src[6]; //6位源地址字段
u_short ether_type; //协议类型
};
//ip头部
struct ip
{
#if defined(WORDS_BIENDIAN)
u_int8_t ip_v : 4,
ip_hl : 4;
#else
u_int8_t ip_hl : 4,
ip_v : 4;
#endif
u_int8_t ip_tos; //服务类型 8
u_int16_t ip_len; //总长度 16
u_int16_t ip_id; //标示,标识这个IP数据包.
u_int16_t ip_off; //标志位碎片偏移
u_int8_t ip_ttl; //TTL
u_int8_t ip_pro; //协议类型
u_int16_t ip_cks; //头部校验和
struct in_addr ip_src; //ip源
struct in_addr ip_dst; //目的地址
};
//ICMP header
struct icmp
{
u_int8_t icmp_type; //类型
u_int8_t code; //代码
u_int16_t icmp_cks; //校验和
u_int16_t icmp_id; //标示
u_int16_t icmp_seq; //序列号
};