tcp的连接过程中有一个超时重传算法(karn算法是比较典型的), 如果client发出syn包后, 由于网络原因, 没有立即收到ack/syn包, 那么client会再次发起syn包, 这一点, 我们已经多次实验过。
如果第二次syn包正常达到且与server端建立了tcp连接, server端维护了一个连接, 一次貌似OK, 但别忘了, 第一次那个syn包可能就在此时达到server端了, 于是server端又要维护一个连接, 而这个连接是无效的, 可以认为是死连接。 而一个进程打开的socket是有限度的, 维护这些死连接非常耗费资源