Så hur var det nu med SYN-floodarna? En uppkoppling i TCP/IP (inte udp då, utan just tcp) går till på följande vis:

Klienten skickar ett paket märkt med SYN för att knacka på dörren och skickar med ett löpnummer kallat ISN (Initial Sequence Number) som används för att skilja parallella koppel från varandra.

Servern allokerar nödvändiga resurser för att förbereda ett koppel och svarar med ett paket till den address som angavs som avsändare i första SYN-paketet med SYN-flaggan och ACK-flaggan satt och sätter samma ISN som SYN-paketet hade. När klienten tagit emot SYN-ACK:en så skickar den ett tredje paket med enbart ACK och ISN, varpå förbindelsen anses uppe. Klienten hade i runda svängar 75 sekunder på sig att få fram ett svar. Om den lyckades med det så kan båda prata med den andra och är de är övertygade om att addresserna är korrekta. Detta kallas för TCP handshake, dvs en tcp-handskakning.

Här uppstår ett par problem:
1. Vi kan aldrig vara säkra på att den som skickar SYN-paketet har angivit en korrekt avsändaraddress.
2. När en SYN kommer så får servern jobba och allokera minne för strukturer och annat som associeras med en komplett uppkoppling. Klientens jobb är minimalt jämfört med serverns.
3. 75 sekunder är lång tid för en dator på ett snabbt nätverk, under den tiden hinner bokstavligt talat miljontals SYN-paket ramla in.

Så hur gick en SYN-flood till?
Jo, den elake klienten skickar hundratusentals eller miljontals SYN-paket med falsk avsändare och får serven att allokera miljontals*X bytes i sin nätverksstack som inte kan frigöras förrns om 75 sekunder. Alla giltiga klienter drunknar i massan av falska anrop och värst av allt, de flesta tcp-stackar kraschade helt enkelt när tcp-buffern tog slut. Här är det alltså fel på dels designen (75 sekunder vs busens kapacitet) och dels fel på implementationen (krasch när resurserna tar slut) som blir ett problem.

Givetvis fixades krascherna, och tiden ställdes ner så att man inte höll listorna lika länge. Speciellt iochmed att det kom mer och mer snabba nät så ansågs inte 75 sekunder behövas heller, alla klienter på modem och ethernet som inte svarat på 74 sekunder tänkte nog inte svara ändå. Dessutom kan alltid programvaran försöka igen om inte ett koppel fungerar, så att korta ner tiden hjälpte ju en del.

När man nu lagat de två bitarna så var väl allt bra igen? Nja, det vart bara "ok", men inte bra. Är det så att man blir utsatt för en SYNflood så gäller det att försöka serva så många som möjligt av de legitima klienterna och samtidigt ignorera så mycket som möjligt av skräpet. Det fanns och finns många metoder att komma runt det problemet men boken tar inte upp särskilt mycket av de lösningar som trots allt dök upp, vilket är synd. Ett par bröt lite lagom mot standarden (Syn-cookies) men den metoden visade sig vara sämre för siter som har mycket legitim trafik.

En annan metod som var rätt bra var att när nu OS:ets lista över begynnande koppel blev full så sköt man helt enkelt på måfå bland de befintliga handskakningarna. Det låter konstigt, men sägs funka rätt väl. Om man antar att OS:et kan hålla 1000 handskakningar igång och du har 50 giltiga klienter normalt sett, så kommer du under en attack att snabbt få minst 950 falska anrop. Skjuter du 100 av dem så är risken enbart 5% att du pajar för en riktig klient. Om du inte gör något alls kommer de falska anropen hålla din kö fylld mest hela tiden, så det är inte heller ett alternativ.

Dessutom har de giltiga paketen en fördel gentemot de falska (på en-till-en-basis då) nämligen att de kommer tillbaka. Browsern gör ett par försök innan den ger upp, och efter det kan usern trycka "reload" om det inte blev nåt och skapa ett antal nya försök igen. Visserligen har de 50 riktiga klienterna bara 5% chans i mitt exempel ovan, men det är per försök, så gör den t.ex 6 försök så blir chansen närmare 30% att komma in för den klienten. Eftersom målet måste vara att hålla tjänsten uppe tills attacken slutar, och de falska paketen inte går att skilja från riktiga anrop förrän tiden är ute så får man ta till den här typen av udda metoder om man vill överleva en attack utan att dra ur sladden.

Nuförtiden står det inte i tidningarna längre om SYN-attacker, så man kan lugnt anta att det inte längre lönar sig att attackera på det viset.