The Throttle method is used to limit the number
of connections and the connection rate to minimize the potential
impact of a large number of client connections over a short period of
time. This can be used to protect the server from a client
application that is malfunctioning or a deliberate denial-of-service
attack in which the attacker attempts to flood the server with
connection attempts.
If the maximum number of client connections or maximum number of
connections per address is exceeded, the server will reject
subsequent connection attempts until the number of active client
sessions drops below the specified threshold. Note that adjusting
these values lower than the current connection limits will not affect
clients that have already connected to the server. For example, if
the Start method is called with the maximum number
of clients set to 100, and then Throttle is called
lowering that value to 75, no existing client connections will be
affected by the change. However, the server will not accept any new
connections until the number of active clients drops below 75.
Increasing the connection rate value will force the server to slow
down the rate at which it will accept incoming client connection
requests. For example, setting this parameter to a value of 1000
would limit the server to accepting one client connection every
second, while a value of 250 would allow the server to accept four
client connections per second. Note that significantly increasing the
amount of time the server must wait to accept client connections can
exceed the connection backlog queue, resulting in client connections
being rejected.
It is recommended that you always specify conservative connection
limits for your server application based on expected usage. Allowing
an unlimited number of client connections can potentially expose the
system to denial-of-service attacks and should never be done for
servers that are accessible over the Internet.