Относно TCP SYN наводнение: Защо полуотворените връзки са по-лоши от установените връзки?

ТОВА НЕ СЕ ИЗИСКВА ЗА ЦЕЛИ НА ХАКВАНЕ. Уча компютърни науки и просто съм любопитен.

И така.. Когато хост A изпраща TCP SYN към хост B, хост B разпределя място за приемен буфер и т.н., изпраща SYNACK обратно към хост A и хост A също разпределя такова пространство, след което изпраща ACK обратно към хост B. След това връзката се установява.

Но защо една полуотворена връзка (такава, при която последното ACK от A никога не се изпраща) разрушава хост B повече от напълно установена връзка?


person Community    schedule 08.03.2013    source източник


Отговори (1)


Полуотворената връзка не отнема повече ресурси от напълно отворената връзка и куп от тях не претоварват сървъра по-лесно, бързо или сигурно от напълно отворените връзки.

Но трябва да изпратите само един пакет до сървър, за да създадете полуотворена връзка, докато трябва да завършите TCP ръкостискане (1 изпращане, 1 получаване, друго изпращане), за да създадете напълно отворена връзка. Така че можете да създадете много полуотворени връзки от фалшив IP адрес или бързо да генерирате милиони от тях от DDoS платформа. Не е нужно да сте в състояние да получите SYN|ACK отговорите. Дори не е нужно да се интересувате дали сървърът може да произведе тези отговори достатъчно бързо.

Това предполага липса на SYN бисквитки или други защити срещу полуотворени връзки.

person Celada    schedule 08.03.2013
comment
Благодаря много! :) Така че наличието на полуотворена или напълно установена връзка е почти същото, когато става въпрос за претоварване на сървъра? И единствената причина да го оставим полуотворен е, че няма причина да изпратим ACK от хост A? (ако приемем, че не ни интересува дали използваме собствен IP източник, защото иначе причината би била, че НЕ МОЖЕМ) Така че почти... полуотворените и напълно отворените връзки заемат едно и също количество ресурси, но fully-open изисква да изпратим друг TCP сегмент? - person ; 08.03.2013
comment
Само за да добавя малко информация, полуотворените връзки всъщност използват по-малко ресурси от напълно установените връзки. От lwn.net/Articles/277146: Linux вече не използва цялата памет, необходима за пълен връзка, докато новата връзка се отвори напълно. Вместо това той използва мини чорап за този период. Minisock е структура от 96 байта struct tcp_request_sock, която държи минималното състояние, необходимо за пълно отваряне на връзката. Напълно установената структура tcp_sock е 1616 байта. И двете измервания на размера на структурата се отнасят за 64-битово ядро. Това може да помогне за смекчаване на DOS атаките. - person seren; 06.10.2017