4

我正在编写一个网关,其中一个功能是在交换足够的数据包时破坏连接。我想知道如何正确形成 RST 数据包以发送到客户端和服务器以终止连接。

为了测试这一点,我使用了 ftp 连接/会话。现在,我看到当我发送 RST 数据包时,客户端无休止地用 SYN 数据包回复,而服务器只是用 ACK 数据包继续数据流。请注意,在我决定销毁连接后,我会阻止两端之间的流量。

我认为我处理 SEQ 和 ACK 号码的方式可能有问题。在专门发送 RST 数据包时,我无法找到资源来解释如何处理 SEQ 和 ACK 号。现在,我将 SEQ 设置为一个新的随机数(使用 rand())并将 ACK 设置为 0(因为我没有使用 ACK 标志)。我用目标地址反转源地址,用目标端口反转源端口,并看到我正确计算了校验和。

我似乎客户端和服务器都不接受终止。

4

1 回答 1

3

我不知道您正在使用什么“资源”,但这似乎完全涵盖在 RFC 793 的第 3.4 节中的“重置生成”下。RST 的序列号为零,并且 ACK 字段设置为传入的 ACK 字段加上在那里多次描述的长度等。

于 2013-02-12T20:13:48.870 回答