refactor(main): 优化 ICMP报文构造函数的注释- 增加了对 ICMP 报文构造过程的详细注释

- 解释了校验和的计算和填充步骤
- 完善了对报文数据部分的注释
- 优化了注释的表达,使其更加清晰和准确
This commit is contained in:
fly6516 2025-01-08 14:04:18 +08:00
parent 55ab04e18c
commit 41d46dc492

View File

@ -102,12 +102,15 @@ def construct_icmp():
bytes: 构造的ICMP报文
"""
# ICMP 报文头部: 类型(8), 代码(0), 校验和(0), 标识符(1), 序列号(1)
# 一开始校验和设为0因为之后需要先计算校验和
icmp_header = struct.pack('!BBHHH', 8, 0, 0, 1, 1)
# ICMP 报文的数据部分,这里简单地使用 'Ping' 作为示例数据
data = b'Ping'
# 计算校验和
# 计算校验和,确保报文的完整性
checksum = calculate_checksum(icmp_header + data)
# 填充校验和字段
# 填充校验和字段,完成报文头部的构造
icmp_header = struct.pack('!BBHHH', 8, 0, checksum, 1, 1)
# 返回完整的ICMP报文
return icmp_header + data
# 构造 UDP 报文