**DoS** (inglizcha: *denial-of-service*) – xujum qilinayotgan server (nishon) ni faoliyatini vaqtinchalik to’xtatib qo’yish. Bunda xujum qiluvchi nishondagi (target) mavjud xatoliklardan foydalanib unga maxsus noto’gri so’rovlar orqali murojat qilib buffer to’lishini (buffer overflow) ni yuzaga keltiradi. Yana bir usuli nishonga to’xtovsiz juda ko’p so’rovlar jo’natish (flood – so’rovlar bilan bombardimon qilish) orqali ham amalga oshirilishi mumkin.
1-usulda serverdagi script xatosidan foydalanib, unga qing’ir so’rov jo’natib sistemada kritik xatolik (ruxsat etilmagan xotira adresiga murojaat kabilar) yuzaga keltiriladi, server ishdan to’xtaydi. Ushbu usulda serverdagi xatolikni topish talab qilinadi. Misol uchun, serverda foydalanuvchini FIO sini so’rovchi va kiritilgan FIO asosida biror bir amal bajaruvchi dastur (script) ishlayapti deylik. Agar so’ralgan FIO ni o’rniga 100000 belgidan iborat belgilar ketma-ketligi jo’natilsa va dasturda uni uzunligi nazorati ko’zda tutilmagan bo’lsa xatolik yuzaga kelishi mumkin. Bu haqda to’liqroq tushunchaga ega bo’lish Buffer Overflow haqidagi maqolalarni o’qish tavsiya qilinadi.
2-usulda serverning biror ochiq portiga to’xtovsiz so’rovlar jo’natganda server ularni qayta ishlashga ulgurmaydi, ya’ni bir so’rovni qayta ishlayotgan paytda orqasidan yangi so’rov kelsa, yangi so’rov vaqtincha bufferga yozib turiladi. So’rovlar juda ko’p bo’lganda server boshqa klientlardan kelayotgan so’rovlarga javob qaytarolmay qoladi. So’rovlar qancha ko’p bo’lgani sari buffer ham kengayib xotirada katta resursni yeya boshlaydi, natijada serverning ishlashi juda sekinlashadi yoki umaman to’xtab qoladi. Agar serverni quvvati kichik bo’lsa unga kichik vaqt oralig’ida juda ko’p klientlar murojaat qilganda ham DoS yuzaga kelishi mumkin. Odatda xujum qiluvchi xujumni to’xtatishi bilan server yana o’z ishini davom ettirishi mumkin. Har ikkala xolatda ham serverni o’chirib yoqishga (perezagruzka) ham to’g’ri kelishi mumkin.
Server (nishon)dan kelayotgan javobni qabul qilish jarayonida xujum qiluvchining o’zi "qotib" qolmasligi uchun xujum qiluvchi IP spoofingdan foydalanadi. Ya’ni jo’natayotgan so’rovlarini boshqa mavjud bo’lmagan IP adres nomidan jo’natishi mumkin (paketning IP zagolovkasidagi ma’lumotlarni o’zgartirish, raw socketlar bilan ishlash va IP, ARP spoofinglar haqida keyingi maqolalarda yozishga harakat qilaman).

TCP Protocol orqali DoS
-----------------------

Ma’lumki TCP protokolda 1-host 2-host bilan bog’lanayotganda avvalo SYN – so’rovini jo’natadi, 2-host bu so’rovga SYN/ACK paketini javob sifatida qaytaradi. 1-host bog’lanishni tasdiqlash uchun ACK-so’rovini jo’natishi kerak. Agar 1-host tasdiqlash so’rovini jo’natmasa, 2-host chala bog’lanish haqidagi ma’lumotlarni bufferga yozib, timeout vaqti bo’yicha kutadi va shu vaqt ichida ACK javobini olmasa bog’lanishni bekor qiladi (bufferdan o’chiradi).
SYN so’rov yordamida DoS xujum uyushtirish shundan iboratki, bunda xujum qiluvchi server(nishon)ga bog’lanish haqidagi SYN so’rovini jo’natadi va serverdan kelgan javobni tasdiqlamasdan (ACK javob jo’natmaydi) yana boshqa SYN so’rovlarini to’xtovsiz jo’natishda davom etadi. Agar serverning bog’lanish uchun timeout qiymati kattaroq bo’lsa, tasdiqlanmagan bog’lanishlar haqidagi ma’lumotlar server buferini to’ldirib tashlaydi.

ICMP Protocol orqali DoS
------------------------

Yuqoridagi SYN so’rov kabi ICMP protokoldan foydalanib ham DoS uyushtirish mumkin. Bunda katta hajmdagi, ko’p fragmentli paketlar yordamida serverga ping beriladi. Server bir so’rovga javob berguncha orqasidan boshqa paket keladi va yuqoridagi singari buffer to’ladi, server boshqalarga javob berolmay faqat hujumchidan kelgan (kelayotgan) so’rovlarga javob qaytarish bilan band bo’ladi, natijada server yoki to’xtaydi yoki juda sekinlashib qoladi.
Yuqoridagi usullardan tashqari DoS hujumni ICQ protokolida, SQL Injection yordamida (benchmark) yoki yana ko’pgina usullar yordamida ham amalga oshirish mumkin.