본문 바로가기

Network/HTTP7

DDOS Generator 3 C&C server #define _WINSOCK_DEPRECATED_NO_WARNINGS #include #include #include #include #include #include #include #pragma comment(lib, "Ws2_32.lib") using namespace std; #define DEFAULT_BUFLEN 512 #define DEFAULT_PORT "27015" #define MAX_BOTS 10 class ThreadPool { public: ThreadPool(size_t num_threads); ~ThreadPool(); void EnqueueJob(function job); private: size_t num_threads; vector worker_thre.. 2020. 4. 5.
DDOS Generator 2 C&C SERVER #define _WINSOCK_DEPRECATED_NO_WARNINGS #include #include #include #include #include #include #include #pragma comment(lib, "Ws2_32.lib") using namespace std; #define DEFAULT_BUFLEN 512 #define DEFAULT_PORT "27015" #define MAX_BOTS 10 class ThreadPool { public: ThreadPool(size_t num_threads); ~ThreadPool(); void EnqueueJob(function job); private: size_t num_threads; vector worker_thre.. 2020. 3. 30.
Thread Pool 스레드를 일정 수량 만들어두고 작업하는 방식. 명령이 들어오기 전에 스레드 풀이 생성되어 대기한다. 작업해야 할 일이 들어오면 대기 상태의 스레드 유무를 확인한다. 있다면 해당 스레드로 처리하고 모두 처리하면 스레드를 소멸시키지 않고 대기 상태로 전환한다. 장점 동시에 가동하는 스레드 수의 최대치에 제한을 둘 때 유용하다. 스레드를 생성/수거하는 비용이 들지 않는다. 처음 스레드를 생성하는 비용은 들지만 이전의 스레드를 재사용하기 때문에 시스템자원을 줄일 수 있다. 작업 요청 시 스레드가 이미 대기 중이므로 딜레이가 발생하지 않는다. 단점 스레드를 많이 생성해두었다가 사용하지 않으면 메모리 낭비가 발생한다. 2020. 3. 22.
멀티 스레딩 멀티 스레드의 정의 하나의 프로세스를 다수의 실행 단위로 구분하여 자원을 공유하고 자원의 생성과 관리의 중복성을 최소화하여 수행 능력을 향상시키는 것 멀티 스레드와 멀티 프로세스 자신만의 메모리 영역을 가지며 CPU 또는 프로세서를 시스템에 추가하여 컴퓨팅 속도를 높이는 멀티 프로세서는 멀티 스레드보다 시간과 비용이 더 많이 든다. 따라서 메모리 공간과 시스템 자원 소모가 줄어들어 프로그램의 응답 시간이 단축되는 멀티 스레드를 사용하는 것이다. 멀티 스레드의 특징 서로 다른 스레드 끼리 데이터 영역, 힙, 스택 중 스택 영역만 비공유한다. 힙 영역을 이용하여 데이터를 주고 받는다. 자신이 속한 프로세스의 메모리를 공유하기 때문에 메모리 공간과 시스템 자원 소모가 줄어든다. 각각의 스레드끼리 별도의 작업이.. 2020. 3. 16.
HTTP 서버 1. 헤더 파일과 필요 요소들 sockaddr_in 구조체와 socket이 각각 2개씩 필요하다. 윈속 초기화 2. socket() sockSvr 소켓을 AF_INET(IPv4), 소켓과 소켓이 일대일로 계속 연결되게 유지해주는 연결지향으로 설정해준다. 생성된 소켓은 아직 주소와 포트가 연결되지 않았다. 여기서 AF_INET과 PF_INET의 차이점은 프로토콜 체계 (Protocol Familly)를 설정하느냐, 주소 체계 (Address Familly)를 설정하느냐에 따라 달라진다고 한다. SOCKET() 함수의 프로토콜 패밀리에 AF_INET을 넣어도 되지만 PF_INET이 바람직하고, STRUCTADDR_IN 구조체에 주소 체계를 넣을 때 PF_INET을 넣어도 되지만 AF_INET을 넣는게 바람직.. 2020. 3. 9.
Socket Programming Socket 컴퓨터 네트워크를 경유하는 프로세스 간 통신의 종착점 대부분의 네트워크 소켓은 인터넷 소켓 인터넷 프로토콜 (TCP, UDP, raw IP), 로컬 IP 주소, 로컬 포트, 원격 IP 주소, 원격 포트로 구성 UDP 프로토콜을 사용하는 경우와 TCP 프로토콜을 사용하는 경우로 분류 클라이언트와 서버가 통신하기 위해 필요함 HTTP도 TCP/UDP 위 계층에서 돌아가기 때문에 소켓 프로그래밍을 해야 하므로 Socket과 HTTP는 이분법적인 개념이 아니다. 동작 과정은 다음과 같다. 통신을 초기화하는 측을 클라이언트, 세션을 시작하기 위해 접속을 기다리는 측을 서버라고 한다. 서버와 클라이언트 모두 socket단계에서 소켓을 생성한다. 서버는 bind 단계에서 소켓을 서버의 로컬 IP 주소, .. 2020. 3. 2.