Networking 接收端是否会丢弃具有无效ACK号的数据包?

Networking 接收端是否会丢弃具有无效ACK号的数据包?,networking,tcp,Networking,Tcp,我已经读到,如果TCP中的数据包没有有效的序列号,那么数据包将被接收方丢弃 但是,如果数据包有一个有效的序列号,但有一个无效的ACK号,那么数据包也会被接收方丢弃吗?实际上没有“无效”的确认号。如果您的意思是该数字不在窗口(主机的公布内存缓冲区)内,则这是另一个问题 如果ACK不在窗口内,主机将用重置来响应,以表明它不知道存在与这些“键”的连接,其中键是源、目标、源端口、目标端口、序列号。我找到了这个PDF文件:,它表示只有序列号必须有效(它没有说明任何关于ACK号的内容):“要接受数据包,还需

我已经读到,如果TCP中的数据包没有有效的序列号,那么数据包将被接收方丢弃


但是,如果数据包有一个有效的序列号,但有一个无效的ACK号,那么数据包也会被接收方丢弃吗?

实际上没有“无效”的确认号。如果您的意思是该数字不在窗口(主机的公布内存缓冲区)内,则这是另一个问题


如果ACK不在窗口内,主机将用重置来响应,以表明它不知道存在与这些“键”的连接,其中键是源、目标、源端口、目标端口、序列号。

我找到了这个PDF文件:,它表示只有序列号必须有效(它没有说明任何关于ACK号的内容):“要接受数据包,还需要满足另一个关键条件。它是TCP序列号”,那么此PDF文件中的信息是否有误?这不是完全正确的。根据定义,如果设置了ACK位,则确认号必须在窗口中。如果没有,并且其他所有内容都正确,则会取消会话同步。确认号告诉接收方发送方相信它在流中的位置。如这篇文章的作者/讲师()我在这里有一些实践知识。:)如果数据包的序列号无效,连接是否也会像数据包的ACK号无效一样终止(因为我在其他网站上读到,如果一个数据包的序列号无效,那么该数据包只会被丢弃)?不要认为它是“无效的”。任何32位的数字都是“有效的”这取决于它是否适合会话。否则,是的,假设端口和IP正确,它将被丢弃。但是,如果它在窗口中,它将再次取消会话同步。例如,如果这样的数据包被欺骗,会话将无法重新同步,它很可能会变成ack风暴,最终被破坏。