TCP SYN和TCP RST的TCP序列和ack值
我正在发送一些TCP SYN数据包,以获取TCP RST。为了识别每个探测,我在TCP序列字段中包含了一个计数器。我注意到以下几点:TCP SYN和TCP RST的TCP序列和ack值,tcp,Tcp,我正在发送一些TCP SYN数据包,以获取TCP RST。为了识别每个探测,我在TCP序列字段中包含了一个计数器。我注意到以下几点: 当SYN探测中的序列号为0、1、2、3…时,RST消息的ack=1、2、3、4…,即ack=SYN_seq+1: 12:17:27.181993 IP X.X.X.10104>Y.Y.Y.10114:Flags[S],seq 0,获胜 8192,长度0 12:17:27.182008 IP Y.Y.Y.10114>X.X.X.X.10104:标志 [R.],序
- 当SYN探测中的序列号为0、1、2、3…时,RST消息的ack=1、2、3、4…,即ack=SYN_seq+1:
- 另一方面,当我的探针以序列1开始时,第一个rst将像往常一样具有ack=syn_序列+1, 但是接下来的rst将具有ack=2,3,4。。。无论探针的顺序值如何:
这是预期的行为吗?TCP会话的每一侧都以(相对)序列号零开始 同样,确认号也为零,因为对话中还没有要确认的互补面 服务器响应客户机的序列号为零,因为这是它在此TCP会话中的第一个数据包,相对确认号为1 确认号设置为1,以指示在数据包中接收到客户端的SYN标志 现在谈谈你的情况: 序列号有双重作用: 如果设置了SYN标志(1),则这是初始序列号。 实际第一个数据字节的序列号和已确认的 相应ACK中的编号为该序列号加1 如果SYN标志清除(0),则这是累积序列 当前会话此段的第一个数据字节的编号 从复制的块引用部分 因此,您的SYN标志可能是0
如果是这样,这就是默认行为。TCP会话的每一侧都以(相对)序列号零开始 同样,确认号也为零,因为对话中还没有要确认的互补面 服务器响应客户机的序列号为零,因为这是它在此TCP会话中的第一个数据包,相对确认号为1 确认号设置为1,以指示在数据包中接收到客户端的SYN标志 现在谈谈你的情况: 序列号有双重作用: 如果设置了SYN标志(1),则这是初始序列号。 实际第一个数据字节的序列号和已确认的 相应ACK中的编号为该序列号加1 如果SYN标志清除(0),则这是累积序列 当前会话此段的第一个数据字节的编号 从复制的块引用部分 因此,您的SYN标志可能是0
如果是这样,这就是默认行为。好的,实际上没有真正的问题。当我用Wireshark检查数据包并查看数据包中的实际位时,每个RST数据包的ack值都像往常一样设置为
seq\u of_syn+1
tcpdump
只是在输出中使用了一个相对确认号。就这些。好的,实际上没有什么问题。当我用Wireshark检查数据包并查看数据包中的实际位时,每个RST数据包的ack值都像往常一样设置为seq\u of_syn+1
tcpdump
只是在输出中使用了一个相对确认号。就这些。谢谢你的回复。但是你没有说服我关于SYN标志的事。您可以从我从tcpdump
复制和粘贴的摘录中看到,我的探测都是SYN数据包。例如:12:11:26.776940 IP X.X.X.X.59150>Y.Y.Y.Y.59160:Flags[S],seq 302,win 8192,长度0感谢回复。但是你没有说服我关于SYN标志的事。您可以从我从tcpdump
复制和粘贴的摘录中看到,我的探测都是SYN数据包。例如:12:11:26.776940 IP X.X.X.X.59150>Y.Y.Y.Y.59160:Flags[S],seq 302,win 8192,长度0