tcp_syncookie的坑
最近笔者阅读资料的时候,发现竟然会有这种坑。如下图所示:
这个坑触发需要以下几个条件:
1.开启tcp\_syncookie
2.client端的三次握手的第三次ACK没有发送到对端
3.client端的第一个packet是小于3字节,也没有发送到对端
4.在client任何重传发生之前,client又发送了一个数据包,这次送达了。
在这种情况下,Server竟然会认为没有收到的第一个packet是确认了的,导致客户端认为第一个”dog”收到了,实际Server应用端完全没有感知!
如果第一个包>3bytes的时候,在上面的情况下,由于check_tcp_syn_cookie不过,会被Reset。好歹保证了TCP的可靠性:)
笔者的3.10内核就是如此,不知道新版本有没有变化!
评论