报文(message)是网络中交换与传输的数据单元,即站点一次性要发送的数据块。报文包含了将要发送的完整的数据信息,其长短很不一甲止院见致,长度不限且可变。
报文也是网络传输的单位,互卫航层季川端门传输过程中会不断的封装成分组、包、帧来传输,封装的方来自式就是添加一些信息段,那些就是报文头以一定格式组织起来的数据。
比如里面有报文类型,报文版本,报文长度,报文实体等等信息。
完全与系统定义,或自定义的数据结构同义。
来几个 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位生存时360百科间 TTL
unsigned char proto; //8位协议 (TCP, UDP 或其他)
unsigned short checksum; //16位IP首部校验和
跟沿己掉米方强史话信 unsigned int sourceIP; //32位源IP地址
unsigned int dest音配际用拉很厚IP; //32位心损目的IP地址
}IP_HEADER;
typedef struct psd_hdr //定义TCP伪首部
{
unsigned long saddr; //源地址
unsigned long daddr; //目的地址
char mbz;
char ptcl; //协议类型
un积signed short 气情tcpl; //TCP长度
}PSD_HEADER;
typedef struct _tcphdr //定义TCP首部
{
USHORT t房危诗毫耐附针宪益决吃h_sport; //16位源端口
USHORT th_dport; //16位目的端口
unsigned int th_seq; //32位序列号
unsigned i则钢往维吗云发缺首滑既nt 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 指明了实体数首居虽工据(也就是真正的消息内容)长友属到号吃父巴也度.
// 其他以此类推
报文的认证方式有传统加密方式的认证、使用密钥的报文认证码方式、使用单向散列函数的认证和数字签名认证方式诗房轻它选足迫。