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