报文格式汇总

hkt 发布于 2025-07-05 29 次阅读


前言

此篇用来收集和记录部分网络报文中的格式和字段,方便以后的学习和问题排查。

以太帧格式

Ethernet Ⅱ:
DMAC:6字节,目的MAC地址,该字段标识帧的接收者
SMAC:6字节,源MAC地址,该字段标识帧的发送者
Type:2字节,协议类型。常见值:
0x0800:internet protocol Version 4 (IPv4)
0x0806:Address Resolution Protocol (ARP)

IEEE802.3 LLC以太帧:
SNAP:Sub-network Access Protocol,子网访问协议。SNAP由结构代码(Organization Code)和类型(Type)字段组成。
FCS:Frame Check Sequence,帧校验序列,这是一个32位的循环冗余校验码,主要用于校验二层数据帧在传输过着中是否发生差错
逻辑链路控制LLC(Logical Link Control)由目的服务访问点DSAP(Destination Service Access Point)、源服务访问点SSAP(Source Service Access Point)和control字段组成。
DSAP:1字节,目的服务访问点,若后面类型为IP,该字段值设为0x06.服务访问点的功能类似于Ethernet Ⅱ中的Type字段或TCP/UDP传输协议中的端口号;
SSAP:1字节,源服务访问点,若后面类型为IP,该字段值设为0x06;
ctrl:1字节,该字段值通常设为0x03,表示无连接服务的IEEE802.2无编号数据格式。

IPv4报文头部

Version:4 bit,4表示IPv4:6表示IPv6
Header Length:4bit,首部长度,如果不带Option字段,则为20,最长为60
Type of Service:8bit,服务类型。只有在有QoS差分服务要求时,这个字段才起作用。
Total length:16bit,总长度,整个IP数据包的长度。
Identification:16bit,标识,分片重组时会用到该字段
Flags:3bit,标志位
Fragment Offset:13bit,片偏移,分片重组会用到该字段
Time to Live:8bit,生存时间
Protocol:8bit,协议:下一层协议,指出此数据包携带的数据使用何种协议,以便目的主机的ip层将数据部分上交给哪个进程处理。
_1:ICMP
_2:IGMP
_6:TCP
_17:UDP
Header checksum:16bit,首部校验和。
Spurce IP Address:32bit,源IP地址。
Destination IP Address:32bit,目的IP地址。
Options:可变,选项字段。
Padding:可变,填充字段,全填0.

IPv6基本包头

Version:与IPv4同理
Traffic Class:流类别,长度为8bit。等同于IPv4中的ToS字段,表示IPv6数据包的类或优先级,主要应用于QoS。
Flow Label:流标签,长度为20bit。IPv6中的新增字段,用于区分实时流量,不同的流标签+源地址可以唯一确定一条数据流,中间网络设备可以根据这些信息更加高效率的区分数据流。
Payload Length:有效载荷长度,长度为16bit。有效载荷是指紧跟IPv6包头的数据包的其他部分(即扩展包头和上层协议数据单元)。
Next Header:下一个包头,长度为8bit。该字段定义紧跟在IPv6包头后面的第一个扩展包头(如果存在)的类型,或者上层协议数据单元中的协议类型(类型于IPv4的protocol字段)。
Hop Limit:跳数限制,长度为8bit。该字段类似于IPv4中的Time to Live字段,它定义了IP数据包所能经过的最大跳数。每经过一个路由器,该数值减去1,当该字段的指为0时,数据包将被丢弃。
Source Address:源地址,长度为128bit。表示发送方的地址。
Destination Address:目的地址,长度为128bit。表示接收方的地址。

TCP和UDP报文格式

TCP报文头部
Source Port:源端口,标识哪个应用程序发送。长度为16bit;
Destination Port:目的端口,标识哪个应用程序接收。长度为16比特;
Sequence Number:序号字段,TCP连接中传输的数据流每个字节都编上一个序号。序号字段的值指的是本报文段所发送数据的第一个字节的序号。长度为32bit;
Acknowledgment Number:确认序列号,是期望收到对方下一个报文段数据的第1个字节的序号,即上次已成功接收到的数据段的最后一个字节数据的序号加1。只有ACK标识为1,此字段有效。长度为32bit;
Header Length:头部长度,指出TCP报文头部长度,以32比特(4字节)为计算单位。若Option字段无内容,则该字段为5,即头部为20字节;
Reserved:保留,必须填0。长度为6比特;
Control bits:控制位,包含FIN、ACK、SYN等标志位,代表不同状态下的TCP数据段;
Window:窗口TCP的流量控制,这个值表明当前接收端可接收的最大的数据总数(以字节为单位)。窗口最大为65535字节。长度为16比特;
Checksum:校验字段,是一个强制性的字段,由发端计算和存储,并由收端进行验证。在计算校验和时,要包括TCP头部和TCP数据,同时在TCP报文段的前面加上12字节的伪头部。长度为16比特;
Urgent:紧急指针,只有当Urgent标识置1时紧急指针才有效。TCP的紧急方式是发送端向另一端发送紧急数据的一种方式。紧急指针指出在本报文段中紧急数据共有多少个字节(紧急数据放在本报文段数据的最前面)。长度为16比特;
Options:选项字段(可选),长度为0~40字节。
UDP报文头部:
Source Port:源端口,标识哪个应用程序发送。长度为16比特;
Destination Port:目的端口,标识哪个应用程序接收。长度为16比特;
Length:该字段指定UDP报头和数据总共占用的长度。可能的最小长度是8字节,因为UDP报文已经占用了8字节。由于这个字段的存在,UDP报文总长不可能超过65535字节(包括8字节的报头,和65527字节的数据);
Checksum:覆盖UDP头部和UDP数据的校验和,长度为16bit。

未完待续........

此作者没有提供个人介绍。
最后更新于 2025-07-26