Patent ID: 8250650

Claim:
A method for protecting a server against denial of service attacks, comprising: maintaining, by a server having a processing unit, a window over a sequence number space, the sequence number space including sequence numbers that are sequentially assigned by the server to respective challenge messages issued by the server for verifying legitimate requests for service, the window comprising a leading edge sequence number and a trailing edge sequence number; receiving a request; determining a challenge message should be sent; advancing the leading edge sequence number in response to the determining a challenge message should be sent; selecting the leading edge sequence number as a challenge sequence number; assigning the challenge sequence number to a challenge message; assigning a problem to the challenge message; sending the challenge message, wherein the challenge message comprises the problem and the challenge sequence number; receiving a response message, wherein the response message comprises a solution to the problem and the challenge sequence number; discarding the response message if the challenge sequence number is not within the window; advancing the trailing edge sequence number in response to the receiving the response message if the challenge sequence number is the trailing edge sequence number; advancing the trailing edge sequence number to a next unmarked sequence number within the window, if at least one such unmarked number within the window exists, if the trailing edge sequence number becomes a marked sequence number; marking the challenge sequence number in response to the receiving the response message if the challenge sequence number is within the window, is not the trailing edge sequence number, and is not marked; discarding the response message if the solution is not correct; discarding the response message if the challenge sequence number is marked in response to receiving a previous response message; and performing a session if the response message is not discarded.