From 1e7ce614d4762744511a351cb270f546ef5a328f Mon Sep 17 00:00:00 2001 From: fly6516 Date: Mon, 6 Jan 2025 15:31:44 +0800 Subject: [PATCH] =?UTF-8?q?refactor(main):=20=E4=BC=98=E5=8C=96=20UDP=20?= =?UTF-8?q?=E5=92=8C=20TCP=20=E6=8A=A5=E6=96=87=E6=9E=84=E9=80=A0=E5=87=BD?= =?UTF-8?q?=E6=95=B0=E7=9A=84=E4=BB=A3=E7=A0=81=E5=8F=AF=E8=AF=BB=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在 UDP构造函数中添加注释,解释 UDP 头部的格式- 在 TCP 构造函数中添加初始化 TCP 标头字段的注释 - 优化 TCP构造函数的打包过程,增加注释说明各字段含义 --- main.py | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) 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,