概述
比如里面有报文类型,报文版本,报文长度,报文实体等等信息。
{
unsigned short total_len; //16位总长度(字节)
unsigned short ident; //16位标识
unsigned short frag_and_flags; //3位标志位
unsigned short checksum; //16位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位校验和
}TCP_HEADER;
// 这里只是数据头, 但头最能看清报文是啥东西
// IP_HEADER::total_len 指明了实体数据(也就是真正的消息内容)长度。
// 其他以此类推 [1]
报文就是在各个系统之间进行请求和响应时用来交换信息的,还需要遵守规定好的格式。
另外,应用报文多是多个系统之间需要通信的时候,比如银行的ESB系统到网关系统再到银联系统。在这中间报文就承担了装载数据,运输数据的功能,可能在这三个系统中报文的格式互不相同,但是承载的数据都是一样的。 [1]
当一个站点要发送报文时,它将一个目的地址附加到报文上,网络节点根据报文上的目的地址信息,把报文发送到下一个节点,一直逐个节点地转送到目的节点。每个节点在收到整个报文并检查无误后,就暂存这个报文,然后利用路由信息找出下一个节点的地址,再把整个报文传送给下一个节点。 [2]
(3)报文交换系可以把一个报文发送到多个目的地,而电路交换网络很难做到这一点。
(4)报文交换网络可以进行速度和代码的转换。 [2]
(2)有时节点收到过多的数据而无空间存储或不能及时转发时,就不得不丢弃报文,而且发出的报文不按顺序到达目的地。 [2]
