我正在编写一个网关,其中一个功能是在交换足够的数据包时破坏连接。我想知道如何正确形成 RST 数据包以发送到客户端和服务器以终止连接。
为了测试这一点,我使用了 ftp 连接/会话。现在,我看到当我发送 RST 数据包时,客户端无休止地用 SYN 数据包回复,而服务器只是用 ACK 数据包继续数据流。请注意,在我决定销毁连接后,我会阻止两端之间的流量。
我认为我处理 SEQ 和 ACK 号码的方式可能有问题。在专门发送 RST 数据包时,我无法找到资源来解释如何处理 SEQ 和 ACK 号。现在,我将 SEQ 设置为一个新的随机数(使用 rand())并将 ACK 设置为 0(因为我没有使用 ACK 标志)。我用目标地址反转源地址,用目标端口反转源端口,并看到我正确计算了校验和。
我似乎客户端和服务器都不接受终止。