tcp连接的问题
服务器端接受客户端连接请求。accept返回后,创建一个线程处理客户连接请求。
在子线程里使用超时读。
现在有个问题,想请教大家在类似的程序里是怎么实现的。
问题:
如果客户connect成功后,不write数据,服务器就会等待一定时间。然后超时close掉连接。
如果某用户写个攻击程序,一直connect不write数据,服务器accept返回的sock_fd不可能无限制大小。到一定大小限制,accept就返回-1,造成了拒绝服务攻击。但如果服务器使用无阻塞读的话,有可能因为网络问题,而拒绝正常的用户的连接。事实上,就算是无阻塞读,用户攻击依然造成accept返回-1。
大家设计这种程序的时候有什么好的建议啊。怎么避免用户攻击?