📄 packetheader.h
字号:
#ifndef PACKETHEADER_H
#define PACKETHEADER_H
#pragma pack(1)
// 定义IP数据报的基本报头,共计20个字节
struct IPHeader
{
unsigned char versionAndHeaderLength; // 4位版本号 + 4位头部长度(单位:4Bytes)
unsigned char typeOfService; // 8位服务类型
unsigned short totalLength; // 16位总长度(单位:Byte)
unsigned short id; // 16位标识
unsigned short flagsAndFragmentOffset; // 3位标志 + 13位片偏移
unsigned char timeToLive; // 8位生存时间
unsigned char protocol; // 8位协议
unsigned short headerChecksum; // 16位头部校验和
unsigned long srcIP; // 32位源IP地址
unsigned long destIP; // 32位目的IP地址
};
// 定义ping报文的报头,共计8个字节
struct ICMPHeader
{
unsigned char type; // 8位类型,对于ping request该值为8,对于ping response该值为0
unsigned char code; // 8位代码,对于ping报文,该值为0
unsigned short checksum; // 16位校验和
unsigned short id; // 16位标识符
unsigned short sequenceNumber; // 16位序列号
};
// 该结构体用来保存Ping的统计信息
struct StatisticsRecord
{
long totalRequests; // 发出的Ping请求报文的总数
long totalResponses; // 收到的Ping响应报文的总数
long totalTime; // 总的往返时间
long maxTime; // 最长的往返时间
long minTime; // 最短的往返时间
};
// 该结构体用来检测接收到的Ping响应报文,除roundTripTime以主机序存储之外,其他字段均以网络序存储
struct PingRecord
{
unsigned long ipToPing;
unsigned short id;
unsigned short sequenceNumber;
long roundTripTime;
unsigned char ttl;
};
#pragma pack()
#endif // PACKETHEADER_H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -