概述
报文也是网路传输的单位,传输过程中会不断的封装成分组、包、帧来传输,封装的方式就是添加一些信息段,那些就是报文头以一定格式组织起来的数据。比如里面有报文类型,报文版本,报文长度,报文实体等等信息。
完全与系统定义,或自定义的数据结构同义。
来几个 TCP/IP 头结构感受一下:
typedef struct _iphdr //定义IP首部
{
unsigned char h_lenver; //4位首部长度+4位IP版本号
unsigned char tos; //8位服务类型TOS
unsigned short total_len; //16位总长度(位元组)
unsigned short ident; //16位标识
unsigned short frag_and_flags; //3位标誌位
unsigned char ttl; //8位生存时间 TTL
unsigned char proto; //8位协定 (TCP, UDP 或其他)
unsigned short checksum; //16位IP首部校验和
unsigned int sourceIP; //32位源IP位址
unsigned int destIP; //32位目的IP位址
}IP_HEADER;
typedef struct psd_hdr //定义TCP伪首部
{
unsigned long saddr; //源地址
unsigned long daddr; //目的地址
char mbz;
char ptcl; //协定类型
unsigned short tcpl; //TCP长度
}PSD_HEADER;
typedef struct _tcphdr //定义TCP首部
{
USHORT th_sport; //16位源连线埠
USHORT th_dport; //16位目的连线埠
unsigned int th_seq; //32位序列号
unsigned int th_ack; //32位确认号
unsigned char th_lenres; //4位首部长度/6位保留字
unsigned char th_flag; //6位标誌位
USHORT th_win; //16位视窗大小
USHORT th_sum; //16位校验和
USHORT th_urp; //16位紧急数据偏移量
}TCP_HEADER;
// 这里只是数据头, 但头最能让你看清报文是啥东东
// IP_HEADER::total_len 指明了实体数据(也就是真正的讯息内容)长度.
// 其他以此类推
认证方式
报文的认证方式有传统加密方式的认证、使用密钥的报文认证码方式、使用单向散列函式的认证和数字签名认证方式。


















