-
报文 编辑
报文(message)是网络中交换与传输的数据单元,即站点一次性要发送的数据块。报文包含了将要发送的完整的数据信息,其长短很不一致,长度不限且可变。
目录
概述
报文也是网络传输的单位,传输过程中会不断的封装成分组、包、帧来传输,封装的方式就是添加一些信息段,那些就是报文头以一定格式组织起来的数据。
比如里面有报文类型,报文版本,报文长度,报文实体等等信息。
完全与系统定义,或自定义的数据结构同义。
IP报文头部信息
来几个 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 指明了实体数据(也就是真正的消息内容)长度。
// 其他以此类推
报文就是在各个系统之间进行请求和响应时用来交换信息的,还需要遵守规定好的格式。
另外,应用报文多是多个系统之间需要通信的时候,比如银行的ESB系统到网关系统再到银联系统。在这中间报文就承担了装载数据,运输数据的功能,可能在这三个系统中报文的格式互不相同,但是承载的数据都是一样的。
原理
当一个站点要发送报文时,它将一个目的地址附加到报文上,网络节点根据报文上的目的地址信息,把报文发送到下一个节点,一直逐个节点地转送到目的节点。每个节点在收到整个报文并检查无误后,就暂存这个报文,然后利用路由信息找出下一个节点的地址,再把整个报文传送给下一个节点。
特点
(1)报文从源点传送到目的地采用“存储转发”方式,在传送报文时,一个时刻仅占用一段通道。
(2)在交换节点中需要缓冲存储,报文需要排队,故报文交换不能满足实时通信的要求。
优点
(1)电路利用率高。由于许多报文可以分时共享两个节点之间的通道,所以对于同样的通信量来说,对电路的传输能力要求较低。
(2)在电路交换网络上,当通信量变很大时,就不能接受新的呼叫。而在报文交换网络上,通信量大时仍然可以接收报文不过传送延迟会增加。
(3)报文交换系可以把一个报文发送到多个目的地,而电路交换网络很难做到这一点。
(4)报文交换网络可以进行速度和代码的转换。
缺点
(1)不能满足实时或交互式的通信要求,报文经过网络的延迟时间长且不定。
(2)有时节点收到过多的数据而无空间存储或不能及时转发时,就不得不丢弃报文,而且发出的报文不按顺序到达目的地。
1、本站所有文本、信息、视频文件等,仅代表本站观点或作者本人观点,请网友谨慎参考使用。
2、本站信息均为作者提供和网友推荐收集整理而来,仅供学习和研究使用。
3、对任何由于使用本站内容而引起的诉讼、纠纷,本站不承担任何责任。
4、如有侵犯你版权的,请来信(邮箱:baike52199@gmail.com)指出,核实后,本站将立即删除。