diff --git a/main.py b/main.py index 5967c8e..502849c 100644 --- a/main.py +++ b/main.py @@ -108,7 +108,8 @@ def construct_udp(src_port, dest_port): Returns: bytes: 构造的UDP报文。 """ - udp_header = struct.pack('!HHHH', src_port, dest_port, 8, 0) + # UDP头部格式: 源端口号 (2字节), 目标端口号 (2字节), 长度 (2字节), 校验和 (2字节) + udp_header = struct.pack('!HHHH', src_port, dest_port, 8, 0) # 长度固定为8,校验和暂时为0 return udp_header # 构造 TCP 报文(SYN) @@ -123,15 +124,17 @@ def construct_tcp(src_port, dest_port): Returns: bytes: 构造的TCP报文。 """ - seq = 0 - ack_seq = 0 - offset = 5 - reserved = 0 - flags = 0b000010 # SYN flag - window = socket.htons(5840) - checksum = 0 - urgent_ptr = 0 + # 初始化TCP标头字段 + seq = 0 # 初始序列号 + ack_seq = 0 # 确认序列号 + offset = 5 # TCP头部的长度,单位是32位字(5 * 4 = 20字节) + reserved = 0 # 保留字段,默认为0 + flags = 0b000010 # SYN标志位设置为1,其他标志为0 + window = socket.htons(5840) # 窗口大小,使用network字节序 + checksum = 0 # 校验和,暂时为0 + urgent_ptr = 0 # 紧急指针,默认为0 + # 打包TCP报文头部 tcp_header = struct.pack('!HHLLBBHHH', src_port, dest_port, seq, ack_seq, (offset << 4) + reserved, flags, window,