refactor(main): 优化 IP头部构造函数的代码结构和注释

- 增加了 IP 头部各个字段的解释性注释
-调整了代码格式,提高了可读性
- 保留了原始功能,未引入新逻辑
This commit is contained in:
fly6516 2025-01-08 14:00:16 +08:00
parent a0d3d8363f
commit 55ab04e18c

17
main.py
View File

@ -62,24 +62,37 @@ def construct_ip_header(src_ip, dest_ip, payload_length, protocol):
Returns:
bytes: 构造的IP头部
"""
# IP头部的版本号IPv4为4
version = 4
# IP头部长度IPv4头部长度为5个32位字节即20字节
ihl = 5
# 服务类型,表示优先权及吞吐量、延迟等特性
tos = 0
# 总长度即IP头部加数据部分的长度
total_length = 20 + payload_length # IP头部20字节 + 数据部分
# 标识符,用于唯一标识主机发送的每一份数据包
identification = 54321
# 标志位与片偏移,用于指示数据包的分割与重组
flags_offset = 0
# 生存时间,表示数据包可以经过的路由器数量
ttl = 64
# 首部校验和,用于错误检测
header_checksum = 0
src_ip_bytes = socket.inet_aton(src_ip) # 将源IP转换为二进制格式
dest_ip_bytes = socket.inet_aton(dest_ip) # 将目标IP转换为二进制格式
# 将源IP转换为二进制格式
src_ip_bytes = socket.inet_aton(src_ip)
# 将目标IP转换为二进制格式
dest_ip_bytes = socket.inet_aton(dest_ip)
# 打包IP头部信息转换为二进制格式
ip_header = struct.pack('!BBHHHBBH4s4s',
(version << 4) + ihl, tos, total_length,
identification, flags_offset, ttl, protocol,
header_checksum, src_ip_bytes, dest_ip_bytes)
# 返回构造的IP头部
return ip_header
# 构造 ICMP 报文
def construct_icmp():
"""