握手失败后服务端如何处理:若服务端回复ACK+SYN后,迟迟无法得到恢复,则服务端会发送RST重置连接报文。然后销毁socket。
SYN泛洪攻击:
恶意主机,不断的发送SYN请求给服务器,但是不进行最后一次ACK回复。
TIME_WAIT状态有什么用:保护主动关闭方,避免立即使用相同地址信息通信。保护客户端,服务端就算重启,也必须使用与以前相同的地址信息(没有TIME_WAIT最好,否则重启还需要等待一段时间)
假如没有这个TIME_WAIT状态,主动关闭方直接释放socket,意味着端口和地址可以立即重新使用。
若最后一次主动关闭方发送ACK丢失。被动关闭方等待最后一个ACK超时后就会重传FIN包。
假如主动关闭方主机立即使用了刚才套接字的端口和地址信息重新启动程序。
- 1.新的程序使用原先的地址信息进行通信,有可能会收到对方重传的FIN包,可能会对新连接造成影响。
- 2.假设新的程序使用原先的地址信息连接相同的服务器。而这个时候服务器有可能在等待最后一次ACK。
这些都属于上一次的连接没有完全清理完毕,导致对新的连接造成影响。因此主动关闭方必须等待一段时间,2个MSL-2个报文的最大生存周期,能够处理被动关闭方有可能重传的FIN包。并且等待本次通信的所有数据都消失在网络中。避免对后续连接造成影响。
TIME_WAIT是主动关闭方才有的状态,常出现于爬虫服务器,大量的主动关闭连接。
可靠传输:
可靠传输: