{"id":1005417,"date":"2026-10-15T12:36:11","date_gmt":"2026-10-15T04:36:11","guid":{"rendered":"\/en\/?p=1005417"},"modified":"2026-10-15T15:44:32","modified_gmt":"2026-10-15T07:44:32","slug":"denial-of-service-attack","status":"publish","type":"post","link":"\/en\/article\/denial-of-service-attack","title":{"rendered":"Denial-of-Service (DoS) Attack: Types, Signs, and Prevention"},"content":{"rendered":"<div class=\"vgblk-rw-wrapper limit-wrapper\">\n<p>A denial-of-service (DoS) attack is an intentional attempt to make a service unavailable or materially slower for legitimate users. It consumes a resource the service needs: bandwidth, connection state, CPU, memory, database capacity, queue space, or the processing budget of an expensive application function.<\/p>\n\n\n\n<p>The useful incident question is not simply \u201cHow much traffic arrived?\u201d It is \u201cWhat resource is being exhausted, which requests are consuming it, and which control owns that layer?\u201d That distinction guides teams toward edge protection, origin resilience, demand shaping, or selective application-layer controls.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">What Is a Denial-of-Service Attack?<\/h2>\n\n\n\n<p>A DoS attack disrupts normal service without necessarily breaking into the target. An attacker may send a large volume of traffic, hold connections open, or repeatedly invoke a costly function. The result can be latency, timeouts, failed jobs, growing queues, 5xx responses, or an outage.<\/p>\n\n\n\n<p>The same symptoms can have non-malicious causes: a product launch, software regression, retry storm, failing dependency, or misconfigured client. A traffic spike is evidence to investigate, not proof of an attack. Compare the incident with a healthy baseline and correlate edge logs, application traces, origin metrics, dependency health, and representative sessions.<\/p>\n\n\n\n<p>The <a href=\"https:\/\/www.cisa.gov\/news-events\/news\/understanding-denial-service-attacks\" rel=\"nofollow noopener\" target=\"_blank\">CISA guidance on denial-of-service attacks<\/a> explains the availability objective and the need for preparation. An internal plan still needs endpoint ownership, escalation contacts, safe-degradation rules, and recovery steps.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">DoS vs DDoS: What Is the Difference?<\/h3>\n\n\n\n<p>Both attacks aim to disrupt availability. A DoS attack commonly comes from one source or a smaller set of sources; a distributed denial-of-service (DDoS) attack coordinates many sources, often through a botnet. Distribution makes filtering and attribution harder. For the separate DDoS topic, see the <a href=\"https:\/\/www.geetest.com\/en\/article\/prevent-ddos-attack\" target=\"_blank\" rel=\"noopener\">DDoS prevention guide<\/a>. This page focuses on DoS resource exhaustion and control boundaries.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Dimension<\/th><th>DoS<\/th><th>DDoS<\/th><\/tr><\/thead><tbody><tr><td>Source pattern<\/td><td>One or a smaller set of sources<\/td><td>Many distributed sources<\/td><\/tr><tr><td>Main challenge<\/td><td>Isolate the abusive flow<\/td><td>Aggregate signals and use upstream controls<\/td><\/tr><tr><td>Page ownership here<\/td><td>Primary topic<\/td><td>Related article only<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">How Do DoS Attacks Exhaust Resources?<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Resource<\/th><th>What happens<\/th><th>Typical symptom<\/th><th>Primary owner<\/th><\/tr><\/thead><tbody><tr><td>Bandwidth<\/td><td>More traffic arrives than links or edge capacity can carry<\/td><td>Saturated links and broad timeouts<\/td><td>Network, CDN, DDoS provider<\/td><\/tr><tr><td>Connection state<\/td><td>Handshakes or sessions stay open at scale<\/td><td>Half-open connections and exhausted tables<\/td><td>Network and infrastructure<\/td><\/tr><tr><td>Compute, database, or queue<\/td><td>Work-heavy requests consume capacity<\/td><td>CPU\/database waits and queue growth<\/td><td>Platform, SRE, application<\/td><\/tr><tr><td>Business endpoint budget<\/td><td>Search, login, reports, checkout, or APIs repeat<\/td><td>One endpoint dominates origin load<\/td><td>App security and product<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>An application-layer campaign can look moderate at the edge while being destructive. One search request may trigger several database calls. One login attempt may invoke identity checks, fraud rules, and session creation. Cache bypass and retries can multiply the work.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">What Are Common DoS Attack Types?<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Volumetric pressure<\/h3>\n\n\n\n<p>Volumetric attacks consume bandwidth or edge capacity. The response involves upstream filtering, CDN capacity, traffic scrubbing, routing changes, and provider escalation. A CAPTCHA cannot repair a saturated link.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Protocol and connection-state pressure<\/h3>\n\n\n\n<p>Protocol or state attacks consume connection tables and network-device resources. Connection limits, network filtering, resilient edge configuration, and infrastructure monitoring own this layer.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Application-layer request floods<\/h3>\n\n\n\n<p>These requests may look valid but are expensive to process. Login, search, report generation, inventory, checkout, and API endpoints are common targets. Investigate endpoint cost, cache behavior, account state, session depth, and response time\u2014not only IP volume.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Retry and amplification pressure<\/h3>\n\n\n\n<p>Aggressive retries, queue fan-out, or a failing dependency can amplify a smaller incident into a thundering herd. Backoff, idempotency, queue limits, and graceful degradation belong in the availability plan.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">How Can Teams Detect a DoS Attack?<\/h2>\n\n\n\n<p>Start with a known-good baseline and compare it with the incident window. Look for:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>bandwidth, concurrent connections, half-open connections, or origin CPU rising sharply;<\/li>\n\n\n\n<li>latency and errors concentrated on one or two endpoints;<\/li>\n\n\n\n<li>queue depth, database waits, connection-pool exhaustion, or dependency timeouts;<\/li>\n\n\n\n<li>cache bypass or repeated requests for dynamic resources;<\/li>\n\n\n\n<li>high IP churn, repeated device or session patterns, or unusual geographic concentration;<\/li>\n\n\n\n<li>shallow sessions, repeated login or token attempts, or requests that never reach a meaningful page state; and<\/li>\n\n\n\n<li>retries increasing after latency rises, creating additional recovery pressure.<\/li>\n<\/ul>\n\n\n\n<p>No single signal proves that bots caused the incident. Correlate edge logs with traces, endpoint cost, account state, origin metrics, and a sample of sessions before blocking. The goal is to identify expensive untrusted work without turning a legitimate event, shared network, accessibility need, or recovering customer into a false positive.<\/p>\n\n\n\n<p>A practical triage sequence starts at the widest layer and narrows inward. First, confirm whether the link or edge is saturated. Next, check whether connection state is exhausted. Then identify which origins, dependencies, queues, and endpoints are slow. Finally, compare request characteristics and user journeys. If the edge is healthy but one uncached endpoint consumes most database time, a network-wide block is unlikely to be the best first response. If the link is saturated, an application challenge will be too late to help.<\/p>\n\n\n\n<p>Preserve evidence while the incident is active. Record timestamps, emergency-rule changes, provider tickets, representative request IDs, and the point at which service recovered. This makes the post-incident review more reliable and helps teams distinguish the control that restored availability from changes that happened at the same time.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">How Can Organizations Prevent and Respond to DoS Attacks?<\/h2>\n\n\n\n<figure class=\"wp-block-image size-large\"><img fetchpriority=\"high\" decoding=\"async\" width=\"1440\" height=\"810\" src=\"https:\/\/geetests.com\/wp-content\/uploads\/2026\/10\/defense-layer-model.png\" alt=\"Layered DoS response ownership model spanning network edge, origin resilience, application admission, and operations.\" class=\"wp-image-1005415\" srcset=\"\/wp-content\/uploads\/2026\/10\/defense-layer-model.png 1440w, \/wp-content\/uploads\/2026\/10\/defense-layer-model-300x169.png 300w, \/wp-content\/uploads\/2026\/10\/defense-layer-model-1024x576.png 1024w, \/wp-content\/uploads\/2026\/10\/defense-layer-model-768x432.png 768w\" sizes=\"(max-width: 1440px) 100vw, 1440px\" \/><\/figure>\n\n\n\n<div style=\"height:24px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Use layers with explicit ownership:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Protect the edge.<\/strong> Use CDN capacity, WAF rules, traffic scrubbing, connection limits, routing controls, and provider escalation.<\/li>\n\n\n\n<li><strong>Protect the origin.<\/strong> Use caching, origin isolation, autoscaling, queueing, endpoint budgets, database tuning, and graceful degradation.<\/li>\n\n\n\n<li><strong>Shape demand.<\/strong> Apply rate limits, waiting rooms, backoff guidance, idempotency controls, and endpoint-specific admission policies.<\/li>\n\n\n\n<li><strong>Monitor and rehearse.<\/strong> Alert on latency percentiles, error budgets, queue age, database waits, cache bypass, and unusual request distributions.<\/li>\n\n\n\n<li><strong>Recover deliberately.<\/strong> Restore essential paths first, then re-admit traffic gradually so retries do not cause a second collapse.<\/li>\n<\/ol>\n\n\n\n<p>After an incident, measure endpoint latency, queue age, time to restore service, challenge or block rate, false-positive reports, and user impact. A rule that lowers origin load but blocks legitimate users may be a poor control.<\/p>\n\n\n\n<p>The <a href=\"https:\/\/ico.org.uk\/about-the-ico\/research-reports-impact-and-evaluation\/research-and-reports\/learning-from-the-mistakes-of-others-a-retrospective-review\/denial-of-service\/\" rel=\"nofollow noopener\" target=\"_blank\">ICO denial-of-service guidance<\/a> treats availability as an organizational risk, not only a network problem.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Assign ownership before an incident<\/h3>\n\n\n\n<p>Platform or SRE teams normally own capacity, queues, dependencies, and safe degradation. Network and infrastructure providers own routing and traffic-scrubbing actions. Security and abuse teams investigate automation signals and tune admission policy. Product and support teams decide which customer journeys must remain available and how a challenged or rejected user can recover. Writing those handoffs down before an incident is more valuable than adding a single emergency rule after the origin is saturated.<\/p>\n\n\n\n<p>The response should also distinguish containment from recovery. A temporary rate limit may protect a database while an incident team confirms the source, but it should have an expiry, an owner, and a rollback condition. A challenge that reduces automated work may still be the wrong choice if it creates an accessibility barrier or blocks legitimate users behind a shared network. Track those tradeoffs alongside latency and error budgets.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Where Do Application-Layer Bot Controls Fit?<\/h2>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1440\" height=\"810\" src=\"https:\/\/geetests.com\/wp-content\/uploads\/2026\/10\/application-layer-bot-controls.png\" alt=\"Application-layer behavior, device, and business-rule signals before a policy decision.\" class=\"wp-image-1005416\" srcset=\"\/wp-content\/uploads\/2026\/10\/application-layer-bot-controls.png 1440w, \/wp-content\/uploads\/2026\/10\/application-layer-bot-controls-300x169.png 300w, \/wp-content\/uploads\/2026\/10\/application-layer-bot-controls-1024x576.png 1024w, \/wp-content\/uploads\/2026\/10\/application-layer-bot-controls-768x432.png 768w\" sizes=\"(max-width: 1440px) 100vw, 1440px\" \/><\/figure>\n\n\n\n<div style=\"height:24px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Application-layer controls are useful when suspicious automation reaches an expensive action but the platform still has enough capacity to make a risk decision. Low-risk users should continue with minimal friction; higher-risk sessions can receive a step-up or policy decision before costly business logic runs.<\/p>\n\n\n\n<p>For context, see <a href=\"https:\/\/www.geetest.com\/en\/article\/what-is-bot-traffic\" target=\"_blank\" rel=\"noopener\">bot-traffic detection guidance<\/a> and <a href=\"https:\/\/www.geetest.com\/en\/article\/effective-bot-detection-solution\" target=\"_blank\" rel=\"noopener\">effective bot-detection practices<\/a>. Combine behavior signals with IP reputation, device context, account state, velocity, endpoint cost, and business rules. They are evidence for a decision, not proof of identity.<\/p>\n\n\n\n<p><a href=\"https:\/\/www.geetest.com\/en\/adaptive-captcha\" target=\"_blank\" rel=\"noopener\">GeeTest Adaptive CAPTCHA<\/a> can be evaluated as one selective risk-based verification layer for login, registration, promotion, or another high-cost workflow. <a href=\"https:\/\/www.geetest.com\/en\/article\/how-device-fingerprinting-enhances-security\" target=\"_blank\" rel=\"noopener\">Device fingerprinting context<\/a> can contribute another signal. Place the challenge before expensive work where possible and provide a recovery path for legitimate users.<\/p>\n\n\n\n<p>The boundary is essential: CAPTCHA and bot-management controls do not scrub volumetric traffic, add database capacity, fix a memory leak, or replace CDN, WAF, traffic-scrubbing, origin-resilience, and incident-response processes. Their role is narrower: reduce avoidable high-cost automated work before it reaches components already under pressure.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">FAQ About DoS Attacks<\/h2>\n\n\n\n<style>#rank-math-faq .rank-math-question{font-weight:700;}<\/style>\n\n\n<div id=\"rank-math-faq\" class=\"rank-math-block\">\n<div class=\"rank-math-list \">\n<div id=\"faq-question-1\" class=\"rank-math-list-item\">\n<p class=\"rank-math-question \">1. What is the primary goal of a DoS attack?<\/p>\n<div class=\"rank-math-answer \">\n\n<p>The goal is to make a service unavailable or materially slower by exhausting bandwidth, connection state, compute, memory, database capacity, queues, or another required resource.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-question-2\" class=\"rank-math-list-item\">\n<p class=\"rank-math-question \">2. Can you give an example of a DoS attack?<\/p>\n<div class=\"rank-math-answer \">\n\n<p>Repeated HTTP requests to a costly search or login endpoint can consume the origin&#8217;s compute and database capacity. A bandwidth flood is another example, but it requires a different control layer.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-question-3\" class=\"rank-math-list-item\">\n<p class=\"rank-math-question \">3. Is a DoS attack serious for a business?<\/p>\n<div class=\"rank-math-answer \">\n\n<p>It can be. Impact depends on the target, duration, recovery design, customer dependency, and whether critical workflows remain available. Assess service disruption, support load, transaction loss, reputation, and recovery effort.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-question-4\" class=\"rank-math-list-item\">\n<p class=\"rank-math-question \">4. Can CAPTCHA alone prevent a DoS attack?<\/p>\n<div class=\"rank-math-answer \">\n\n<p>No. CAPTCHA is one application-layer risk control. CDN\/WAF capacity, traffic scrubbing, rate limits, caching, origin resilience, monitoring, and incident response remain necessary.<\/p>\n\n<\/div>\n<\/div>\n<\/div>\n<\/div><\/div><!-- .vgblk-rw-wrapper -->","protected":false},"excerpt":{"rendered":"<p>A denial-of-service (DoS) attack is an intentional attempt to make a service unavailable or materially slower for legitimate users. It&#8230;<\/p>\n","protected":false},"author":7,"featured_media":1005430,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[94],"tags":[112],"class_list":["post-1005417","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-botpedia","tag-bot-attack"],"primary_focus_keyword":"","seo_title":"Denial-of-Service (DoS) Attack: Types, Signs, and Prevention","_links":{"self":[{"href":"\/en\/wp-json\/wp\/v2\/posts\/1005417","targetHints":{"allow":["GET"]}}],"collection":[{"href":"\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"\/en\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"\/en\/wp-json\/wp\/v2\/comments?post=1005417"}],"version-history":[{"count":2,"href":"\/en\/wp-json\/wp\/v2\/posts\/1005417\/revisions"}],"predecessor-version":[{"id":1005419,"href":"\/en\/wp-json\/wp\/v2\/posts\/1005417\/revisions\/1005419"}],"wp:featuredmedia":[{"embeddable":true,"href":"\/en\/wp-json\/wp\/v2\/media\/1005430"}],"wp:attachment":[{"href":"\/en\/wp-json\/wp\/v2\/media?parent=1005417"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"\/en\/wp-json\/wp\/v2\/categories?post=1005417"},{"taxonomy":"post_tag","embeddable":true,"href":"\/en\/wp-json\/wp\/v2\/tags?post=1005417"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}