[Windows] AcceptEx() - Ддос; GetLastError - 1450;

Тема в разделе "WASM.NETWORKS", создана пользователем MuForum, 3 апр 2011.

  1. MuForum

    MuForum Member

    Публикаций:
    0
    Регистрация:
    11 мар 2007
    Сообщения:
    109
    Доброго времени суток.
    Написал простенькую программу для подключения игроков к серверу.
    Задействовал на подключение асинхронную функцию AcceptEx().
    Всё работает отлично и очень быстро.
    Первый пакет не принимаю. (0 ставлю в длину приёма пакета)
    Код (Text):
    1.     lpCC->m_sListen            = WSASocket(AF_INET, SOCK_STREAM, IPPROTO_IP, NULL, 0, WSA_FLAG_OVERLAPPED);
    2.     // ----
    3.     if ( lpCC->m_sListen == INVALID_SOCKET )
    4.     {
    5.         g_Log.Add(TColor::Red, "[%s->%s]  %s", "TIOCP", "PrepareAccept", "Error creating accept socket.");
    6.     }
    7.     // ----
    8.     //g_Log.Add(TColor::Red, "[%s->%s] lpCC->m_sListen: %d;", "TIOCP", "PrepareAccept", lpCC->m_sListen);
    9.     // ----
    10.     // # First Associate then AcceptEx();
    11.     // ----
    12.     AssociateSocketWithCompletionPort(lpCC->m_sListen, m_hIOCP, dwListIndex);
    13.     // ----
    14.     iRes    = m_lpfnAcceptEx(m_sListen,
    15.                     lpCC->m_sListen,
    16.                     lpCC->m_pInBuf,
    17.                     0,
    18.                     sizeof(sockaddr_in) + 16,
    19.                     sizeof(sockaddr_in) + 16,
    20.                     & dwBytes,
    21.                     (LPOVERLAPPED) & (lpCC->m_WSARecvOverlapped));
    Но вот один человек начал ддосить мою программу.
    - Удивило то, что во время ддоса программа начинает загружать систему на 90%, после чего функция GetQueuedCompletionStatus() возвращает false, GetLastError() ошибку 1450;
    Поискав в интернете куча тем, но везде решение одно и тоже, увеличить значение переменной реестра IRPStackSize;
    - Но хотелось бы не делать временных решений....

    # Добавлено: На одном из порталов интернета нашел следующее лечение. (Перейти)
    P.S. -> Хотелось бы понять принцип ддоса, то есть каким образом ддосят и постараться защититься от этого.

    # Добавлено:
    - На сколько я понял, это Syn flood, так как симптомы подходят полностью.
     
  2. T800

    T800 Member

    Публикаций:
    0
    Регистрация:
    7 дек 2006
    Сообщения:
    293
    Адрес:
    Moscow
    Задайте ваш вопрос тут http://rsdn.ru/forum/network/
    Там вам точно ответят.