//#include "stdafx.h"
#include "winsock2.h"
#include "ws2tcpip.h"
#include "iostream.h"
#include "stdio.h"
typedef struct _IP_HEADER
{
union
{
BYTE Version;//版本
BYTE HdrLen;//IHL
};
BYTE ServiceType;//服务类型
WORD TotalLen;//总长
WORD ID;//标识
union
{
WORD Flags;//标志
WORD FragOff;//分段偏移
};
BYTE TimeToLive;//生命期
BYTE Protocol;//协议
WORD HdrChksum;//头校验和
DWORD SrcAddr;//源地址
DWORD DstAddr;//目的地址
BYTE Options;//选项
}IP_HEADER;
//逐位解析IP头中的信息
void getVersion(BYTE b,BYTE &version)
{
version=b>>4;
}
void getIHL(BYTE b,BYTE &result)
{
result=(b & 0x0f)*4;
}
char *parseServiceType_getProcedence(BYTE b)
{
switch(b>>5)
{
case 7:
return "Network Control";
break;
case 6:
return "Internet work Control";
break;
case 5:
return "CRITIC/ECP";
break;
case 4:
return "Flash Override";
break;
case 3:
return "Flash";
break;
case 2:
return "Immediate";
break;
case 1:
return "Priority";
break;<
解析IP数据包
最新推荐文章于 2022-05-27 15:01:43 发布
该博客详细解析了IP数据包的头部信息,包括版本、服务类型、数据包长度、ID、标志位、分段偏移、生存期、协议、校验和以及源、目的IP地址。通过示例代码展示了如何使用C++进行IP头信息的提取和解析。
摘要由CSDN通过智能技术生成