报文结构是指在网络通信中,各种协议规定的数据报文格式。不同的协议会有不同的报文结构,以下是一些常见协议的报文结构示例。

TCP 报文结构

TCP(传输控制协议)的报文结构如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
+-------------------------+
| 源端口号 (16位) |
+-------------------------+
| 目的端口号 (16位) |
+-------------------------+
| 序列号 (32位) |
+-------------------------+
| 确认号 (32位) |
+-------------------------+
| 数据偏移 (4位) | 保留 (6位) | 标志位 (6位) | 窗口大小 (16位) |
+-------------------------+
| 校验和 (16位) |
+-------------------------+
| 紧急指针 (16位) |
+-------------------------+
| 选项 (可变) |
+-------------------------+
| 数据 (可变) |
+-------------------------+

UDP 报文结构

UDP(用户数据报协议)的报文结构如下:

1
2
3
4
5
6
7
8
9
10
11
+-------------------------+
| 源端口号 (16位) |
+-------------------------+
| 目的端口号 (16位) |
+-------------------------+
| 数据报长度 (16位) |
+-------------------------+
| 校验和 (16位) |
+-------------------------+
| 数据 (可变) |
+-------------------------+

IP 报文结构

IP(Internet 协议)分为 IPv4 和 IPv6,这里以 IPv4 为例,其报文结构如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
+-------------------------------+
| 版本 (4位) | 头部长度 (4位) |
+-------------------------------+
| 服务类型 (8位) |
+-------------------------------+
| 总长度 (16位) |
+-------------------------------+
| 标识 (16位) |
+-------------------------------+
| 标志 (3位) | 片偏移 (13位) |
+-------------------------------+
| 生存时间 (8位) | 协议 (8位) |
+-------------------------------+
| 头部校验和 (16位) |
+-------------------------------+
| 源IP地址 (32位) |
+-------------------------------+
| 目的IP地址 (32位) |
+-------------------------------+
| 选项 (可变) |
+-------------------------------+
| 数据 (可变) |
+-------------------------------+

HTTP 报文结构

HTTP(超文本传输协议)的报文结构相对简单,以 HTTP 请求报文为例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
请求行:
GET /path/resource HTTP/1.1

头部字段:
Host: www.example.com
User-Agent: Mozilla/5.0
Accept: text/html,application/xhtml+xml
...

空行:
(头部与数据之间的空行)

数据:
(可选,例如POST请求的数据)

这些报文结构定义了通信双方在传输数据时必须遵循的格式,确保数据可以正确地传输和解析。