A way of reducing the impact of denial of service attacks is presented.
For each connection request received by a server, the server attempts to
establish a connection to accommodate the corresponding request. For each
connection request that the server cannot currently handle, the
connection request is placed in a backlog queue for future handling. If
one or more of the backlog queues have entries, connection sockets that
have connections but no received request data are identified and
disconnected. Such connection sockets would be highly suspect of being
generated as a result of denial of service attacks. Upon disconnection,
resources are freed for legitimate requests thereby improving server
performance even during denial of service attacks.