Itnetic logo Itnetic Technologies
  • Pricing
  • Discord
Game protectionMinecraft serversBot joins, ping floods and connection attacks stopped before they reach your server. No plugin, no mod, nothing for players to install.Explore game protection →

For websites and APIs

  • DDoS ProtectionLayer-7 mitigation for attacks that look like real traffic.
  • Web CDNEdge caching on the network that filters your attacks.
  • PricingFree tier, then plans from €5/month.

How it works

  • The edge pipelineChallenge gate, behavioral signatures, WAF, rate limits and cache.
  • Logs & analyticsPer-request visibility and the exact verdict behind every block.
  • NetworkPoints of presence across Europe, North America and Asia Pacific.

Learn

  • GuidesPlain-English explainers on DDoS, WAFs, rate limiting and CDNs.
  • HTTP header checkGrade any site’s security headers in a few seconds.
  • FAQThe questions we get asked before people sign up.
  • ChangelogWhat shipped, and when.

Compare

  • vs Cloudflare
  • vs DDoS-Guard
  • vs CDN77
  • vs WEDOS
  • Status ↗
Log inUnder attack?
Game protectionDDoS ProtectionWeb CDNPricing
The edge pipelineLogs & analyticsNetwork
GuidesHTTP header checkFAQChangelogvs Cloudflarevs DDoS-Guardvs CDN77vs WEDOSStatus ↗
PricingDiscord
Log inUnder attack?

Learn · Protocol attacks

What is a SYN flood attack?

A SYN flood does not try to fill your pipe. It opens thousands of TCP connections a second and never finishes them, until the queue that tracks half-open connections is full and the next real visitor is simply never let in.

Updated September 14, 2026 · Itnetic team — reviewed by Petr Chlíbek, founder

Key takeaways

  • A SYN flood abuses the TCP three-way handshake: the attacker sends the opening SYN, never sends the final ACK, and every unfinished handshake holds a slot in your server’s backlog queue for up to a minute.
  • The economics are the attack. One 60-byte packet the attacker forgets about costs you a kernel structure, up to five retransmitted replies and a slot a real visitor cannot have.
  • Packet rate is the weapon, not volume: a million SYNs per second is only about half a gigabit, which is nothing to your link and fatal to anything that keeps per-connection state.
  • SYN cookies, backlog sizing and conntrack tuning are all worth doing and none of them change the outcome at scale — the packets still arrive on your uplink and still cost your CPU. The flood has to be dropped upstream of it.

The handshake has a gap in it

Every TCP connection starts with three packets. The client sends a SYN. The server replies SYN-ACK and reserves state for a connection that does not exist yet. The client confirms with an ACK, and only then is the connection established and handed to your application.

The gap is the middle step. Between sending the SYN-ACK and receiving the ACK, the server is holding a half-open connection: a kernel structure sitting in a fixed-size queue — the SYN backlog — waiting for a third packet that may never come. A SYN flood is nothing more than the decision never to send it.

The attacker sends SYN after SYN and ignores every reply. Each one takes a slot. Linux retransmits the SYN-ACK five times by default, backing off 1, 2, 4, 8, 16 and 32 seconds, so one forgotten packet can occupy a slot for roughly a minute. When the backlog fills, the kernel's only remaining move is to drop incoming SYN packets — including the ones from real visitors. Those visitors do not see an error page. Nothing answers at all, and the browser spins until it gives up, which is why a SYN flood is so often reported as "the site is down" rather than as an attack.

The economics are the whole attack

The attacker paysYou pay
Per handshakeOne ~60-byte packetA kernel structure held up to ~63 seconds
State keptNone — the packet is forgotten as it leavesOne backlog slot, plus a conntrack entry on any stateful firewall in the path
Work doneFire and forgetUp to five SYN-ACK retransmissions, sent into the void
IdentityA source address they can forge outrightA slot a real visitor now cannot have

Every row runs the wrong way for the defender, and the backlog is small by design: a few thousand slots on a tuned server, a few hundred on a default install or a small VM. That is why SYN floods survived thirty years of patching — there is no bug to fix. The attacker is using TCP exactly as specified and simply declining to finish.

Your bandwidth graph will tell you nothing

This is the part that misleads people mid-incident. A SYN packet is around 60 bytes on the wire, so the flood is measured in packets per second, not gigabits, and the traffic graph everyone looks at first stays reassuringly flat while the server refuses connections.

SYN packets/secRoughlyWhat it typically takes down first
10,000~5 MbpsAn untuned backlog on a default server or small VM
100,000~50 MbpsConnection-tracking tables on a stateful firewall; most single origins
1,000,000~0.5 GbpsMid-range firewalls and load balancers; anything doing per-packet state
10,000,000~5 GbpsEverything that is not line-rate packet filtering upstream

Half a gigabit is a rounding error on a modern uplink and an extinction event for a connection table. If you take one thing from this page, take that: the number that matters during a SYN flood is packets per second, and most dashboards do not show it.

Four shapes of the same attack

VariantWhat arrives at youWhy attackers use it
Direct SYN floodSYN packets from the botnet's real addressesSimplest to launch — and the only variant where blocking sources is meaningful
Spoofed SYN floodSYN packets with forged source addressesThere is no attacker address to block, and your SYN-ACK replies are fired at uninvolved strangers as backscatter
SYN-ACK reflectionSYN-ACK packets from thousands of legitimate serversThe attacker spoofs your address toward public TCP services; their replies and retransmissions become the flood, and every source is innocent
ACK, RST or FIN floodPackets matching no connection you haveEach one forces a state-table lookup, and a stateless filter cannot distinguish them from mid-connection traffic

The last row is worth dwelling on, because it is the mirror image of the first. A SYN flood attacks the cost of starting a connection; an ACK flood attacks the cost of looking one up. Defenses tuned only for the first will pass the second straight through to the device you were protecting.

Padded SYN packets are the crossover case: the same handshake abuse with the packet inflated toward the MTU, so it exhausts state and bandwidth at once. At that point you are dealing with a volumetric attack as well, and the two have to be absorbed in different places.

Confirming that it is a SYN flood

Before you change anything, spend two minutes establishing what you are looking at:

  • Count half-open connections. ss -n state syn-recv | wc -l on Linux. Thousands of entries, climbing, is the signature. netstat -ant | grep SYN_RECV does the same on older systems.
  • Read the kernel log. dmesg reporting "Possible SYN flooding on port 443. Sending cookies." is the kernel telling you outright, and it is also telling you the backlog already overflowed.
  • Check the firewall's table, not just the server's. nf_conntrack: table full, dropping packet means the box in front of the application died first, which is common and easy to misread as a server fault.
  • Compare packet rate against bandwidth. A large packets-per-second rise with a flat bit-rate is close to diagnostic. The reverse — bandwidth pinned, packet rate ordinary — points at amplification instead.
  • Look at your application log. During a SYN flood it is quiet, because requests never arrive: connections never establish. If your access log is instead full of plausible-looking requests, you are dealing with a Layer 7 attack, which is a different problem with a different answer.

That last check separates the two families faster than anything else, and getting it wrong sends people tuning WAF rules while a packet flood keeps the origin unreachable.

What you can do on the server itself

These are worth doing on any internet-facing host, today, before anything happens. They are also, on their own, insufficient — which is the point of the section after this one.

Turn on SYN cookies. net.ipv4.tcp_syncookies = 1 is the single most effective local defense. Instead of storing state for a half-open connection, the kernel encodes it into the sequence number it sends back: a hash of the four-tuple, a secret and a coarse timestamp, plus an index into a small table of MSS values. No memory is allocated. If the final ACK ever arrives, the number it acknowledges reconstructs the connection; if it never arrives, nothing was spent. The cost is real but modest — the MSS table is coarse, and TCP options such as window scaling and SACK survive only if timestamps are enabled — so cookies are engaged when the backlog overflows rather than for every connection.

Size the queues deliberately. net.ipv4.tcp_max_syn_backlog governs half-open connections; net.core.somaxconn and the backlog argument your application passes to listen() govern established ones waiting to be accepted. A generous SYN backlog in front of an application that accepts slowly just relocates the queue that overflows.

Recycle slots faster. Lowering net.ipv4.tcp_synack_retries from 5 to 2 cuts the time a dead handshake holds a slot from about 63 seconds to about 7. You lose a little tolerance for genuinely lossy clients and gain roughly nine times the slot turnover.

Do not track what you do not need to. Every SYN creates a connection-tracking entry on a stateful firewall, and nf_conntrack_max is usually the first ceiling hit. Raise it and lower the syn_recv timeout, or exempt the public listening port from tracking entirely with a notrack rule and let the kernel's own TCP stack handle handshake validation.

Rate-limit new connections per source in nftables or iptables. This helps against a direct flood from real addresses and does almost nothing against a spoofed one, because there is no stable source to limit.

Together, these raise the packet rate you survive by perhaps an order of magnitude. None of them changes the thing that decides the outcome: the packets are still arriving on your uplink and still being examined by your CPU. Every rule you add is work performed per attack packet, on hardware the attacker can out-scale for a few euros an hour. Once traffic reaches your link, the bandwidth is already spent — a point covered in more depth in what DDoS mitigation actually is.

Where a SYN flood is actually stopped

Upstream, and in a specific order — cheapest decision first, because a defense that costs more per packet than the attack does is just a slower way to lose:

  1. Absorption capacity in the carrier network. The flood has to land somewhere with room for it, before the last mile that leads to you.
  2. Stateless filtering at line rate. A forged, malformed or protocol-violating packet is droppable on sight, in the network driver, before any memory is allocated for it. This is where a flood of tens of millions of packets per second is dealt with, and it is not something a general-purpose server can do for itself.
  3. Handshake validation at the edge. A protection edge completes the TCP handshake on its own behalf. Only a client that answers correctly — that is, a real TCP stack at a real address — is ever proxied to your origin. A spoofed SYN cannot complete a handshake with anyone, so the flood terminates at the edge by construction.
  4. Per-source connection-rate caps, so one address cannot consume the handshake budget even if its packets are otherwise valid.
  5. Kernel-level drops for proven attackers, so a source that has already been judged costs nothing per packet thereafter.

And one prerequisite that sits outside the list, because it silently voids all of it: your origin has to be unreachable except through the protection network. If the attacker can still address packets to your server's real IP, none of the layers above are in the path. That is the most common reason protection "does not work", and the full checklist is in how to hide your origin IP address.

How Itnetic stops SYN floods

Every layer in that list is in the path on every Itnetic plan, including the free one — there is no tier where handshake protection is an upgrade.

LayerWhat it does
Upstream absorptionFrankfurt sits behind X4B, a network with 500 Gbps of mitigation capacity; Toronto and Singapore run on Linode (Akamai) behind Linode's own network-level protection. Volumetric and padded floods are soaked up before our edge, let alone yours — the current list is on the network page
Packet filtering at the driverAn eBPF filter at the XDP hook enforces protocol identity per flow and applies SYN caps, and drops the ACK, RST and FIN floods a stateless filter cannot recognise — all before a socket is allocated
Handshake termination at the edgeTCP and TLS terminate at the point of presence. Your origin only ever sees connections that completed a handshake and survived filtering, so its backlog is never the resource under attack
Connection-rate admission controlPer-source caps on the handshake itself, with proven visitors admitted ahead of the cap so a flood does not crowd out your regulars
Kernel drop of proven attackersRepeat offenders are held in an nftables set and cost nothing per packet from then on
EvidencePer-request logs with status, latency, client fingerprint and the verdict that was applied, so the post-mortem is an export rather than a reconstruction

Two commercial details matter as much as the packet path. Scrubbed attack traffic is never metered against your bandwidth quota, so a week-long SYN flood does not arrive as an invoice. And going live is two DNS records at your existing provider — no nameserver move, about five minutes, one hostname at a time if you want to watch it first. Itnetic's DDoS protection has the rest of the mechanics.

If what you are protecting is a game server rather than a website, the handshake problem takes a different shape — join floods, ping floods and connection floods against a protocol that is not HTTP. That is covered in game server protection and in the Minecraft ping flood guide.

A six-point hardening checklist

  1. Enable tcp_syncookies, and verify it with sysctl net.ipv4.tcp_syncookies rather than assuming your distribution did it.
  2. Set tcp_max_syn_backlog, somaxconn and your application's listen() backlog to consistent values, largest first.
  3. Lower tcp_synack_retries to 2 so dead handshakes release their slots in seconds rather than a minute.
  4. Check nf_conntrack_max against your real connection rate, or stop tracking the public listening port.
  5. Put per-second packet-rate on a dashboard next to bandwidth, and alert on it. You cannot respond to the metric you do not plot.
  6. Firewall the origin so it accepts traffic only from your protection network — otherwise everything upstream is optional from the attacker's point of view.

If you are in the middle of one right now, stop reading and work through how to stop a DDoS attack; it is written for the incident rather than for the reading list. When the wave has passed, how to test your DDoS protection covers how to confirm — safely and legally — that the next one lands somewhere other than your connection table.

FAQ

Quick answers

What is a SYN flood attack in simple terms?

It is a flood of connection requests that are deliberately never completed. TCP opens a connection in three steps, and the attacker only ever sends the first one, so your server reserves resources for thousands of connections that will never finish. When the queue holding those unfinished handshakes is full, new visitors cannot connect at all — not because the server crashed, but because it has no room left to accept anyone.

How is a SYN flood different from a DDoS amplification attack?

They break different things. An amplification flood saturates your bandwidth with large reflected responses, so the link is the casualty. A SYN flood consumes connection state with tiny packets and can take a server down at a bit-rate your uplink will not even notice. The tell is the ratio: high packets per second with flat bandwidth points at a SYN flood, while pinned bandwidth at a modest packet rate points at amplification.

Do SYN cookies stop a SYN flood?

They stop the backlog from being the thing that fails, which is a genuine and worthwhile improvement. They do not stop the flood. The packets still arrive on your link and the kernel still computes and verifies a cryptographic value for each one, so at high packet rates the bottleneck moves from memory to CPU and network capacity. Turn them on, then assume a large enough flood will still need filtering upstream of your server.

Why does my bandwidth look normal during a SYN flood?

Because SYN packets are about 60 bytes each. A million of them per second — enough to overwhelm most origins and stateful firewalls — is roughly half a gigabit, which barely registers on a modern uplink. That mismatch is why SYN floods are so often diagnosed as a server fault: the graph everyone checks first is the one the attack does not move.

Can a firewall stop a SYN flood?

A firewall in front of your server usually fails before the server does. Every incoming SYN creates a connection-tracking entry, so a stateful firewall is defending a table that the flood is specifically designed to exhaust, and the packets have already consumed the link by the time any rule evaluates them. Firewall rules are worth having for small floods and for direct attacks from real addresses; they are not a defense against a distributed one.

What is a SYN-ACK reflection attack?

The attacker sends SYN packets to thousands of ordinary public servers with your IP address forged as the source. Those servers reply with SYN-ACK packets aimed at you and, getting no answer, retransmit them several times. The result is a flood in which every source address belongs to an innocent third party, so blocklists are useless — the only viable defense is upstream filtering that drops unsolicited SYN-ACK traffic before it reaches your link.

Does a CDN or reverse proxy protect against SYN floods?

It does, provided two conditions hold. The proxy must terminate the TCP handshake itself, so a spoofed SYN cannot be completed and never becomes a connection to your origin. And your origin must be firewalled to accept traffic only from the proxy network, because an attacker who can still reach your server IP directly will simply address the flood there and bypass the protection entirely.

How do I check whether I am under a SYN flood right now?

Run "ss -n state syn-recv | wc -l" and watch it. Thousands of half-open connections, a dmesg line reporting possible SYN flooding on your port, a high packet rate with ordinary bandwidth, and an application log that is unusually quiet together make the case. The quiet log is the strongest signal: during a SYN flood requests never arrive, because connections never establish in the first place.

Keep reading

01

What is the best DDoS protection?

Every provider claims to be the best DDoS protection. The claim is unfalsifiable on its own — but the properties that decide whether a service keeps you online are short, concrete and easy to check before you buy.

02

What is a DDoS attack?

A distributed denial-of-service (DDoS) attack overwhelms a website or API with traffic from many machines at once, until real visitors can no longer get through.

03

What is a Layer 7 DDoS attack?

Layer 7 (application-layer) DDoS attacks imitate legitimate visitors instead of flooding the network — which is exactly why traditional defenses miss them.

04

What is a DNS amplification attack?

A DNS amplification attack forges your IP address on small DNS queries so that thousands of innocent servers answer with far larger replies — all of them aimed at you.

05

How to stop a DDoS attack on your website.

A practical, ordered checklist for the moment your site goes down — and for making sure the next attack never reaches it.

06

What is DDoS mitigation?

DDoS mitigation is the process of spotting attack traffic and dropping it before it reaches the resource an attacker is trying to exhaust — bandwidth, connections, or your application itself.

Protect my website freeHow our protection works
Itnetic logo Itnetic Technologies

DDoS protection that keeps your customers online. Attacks filtered at the edge in every region, real visitors served straight through.

Find us on GoogleAdd as preferred source

Product

  • Under attack?
  • DDoS Mitigation
  • Web CDN
  • Game Protection
  • Network
  • Pricing

Resources

  • Learn
  • HTTP header check
  • Changelog
  • FAQ
  • Status
  • Discord

Legal

  • Acceptable Use
  • SLA
  • Security
  • Abuse
  • Sub-processors
  • Data Retention
  • Incident Response

Company

  • Founder
  • Contact
Petr ChlíbekIČO: 21210756Neplátce DPH
© 2026 Itnetic Technologies. All rights reserved.
Terms of ServicePrivacy PolicyCookie PolicyDPAIP geolocation by DB-IP (CC BY 4.0)Powered by Startup FastLiftOff launch badgeFeatured on IndieHunt