TCP

    [Anti-DOS]SYN Cookie

    [Anti-DOS]SYN Cookie

    SYN Cookie Syn cookie란 ? TCP 3-way-handShake TCP로 세션이 생성 되려면 아래와 같은 기본적인 3-way-handshake를 거친다. SYN Flooding 공격SYN Flooding 공격은 3-way-handshake의 취약점을 이용한 공격으로 공격대상 시스템의 TCP연결 자원(backlog queue)을 소진시켜 외부로부터 TCP 연결 요청을 받을 수 없는 상태로 만드는 서비스 거부 공격기법 이다. 경우는 아래와 같다.공격자가 SYN 패킷을 보내면 서버는 SYN/ACK 패킷을 보내고 SYN패킷에 대한 세션을 생성하고 응답을 기다린다. 따라서 공격자가 수많은 SYN패킷으를 보내면 수만은 세션을 생성하고 기다리게되고, 정상적인 사용자가 서버와 세션을 맺으려고 하면 이미..

    단방향통신(서버),TCP/IP 프로그래밍

    단방향통신(서버),TCP/IP 프로그래밍

    구축과정이 이렇게 된다고 처음 포스팅때 소개하였습니다. 하나하나씩 짚어보면서 어떠한 역할들을 하며, 메소드의 기본형을 알아보겠습니다. [서버 구축 순서] WSAStartup() ▼ socket() ▼ bind() ▼​ listen() ▼​ accept() ▼​ [send, recv] ▼​ closesocket() ▼​ WSACleanup()​ 1. 윈속 초기화 WSAStartup()메소드 int WSAStartup( _In_ WORD wVersionRequested, _Out_ LPWSADATA lpWSAData ); 참조 : http://msdn.microsoft.com/en-us/library/windows/desktop/ms742213(v=vs.85).aspx​ MSDN설명에 보면 _In_ 과 _O..

    서버(server) 클라이언트(client) 단방향 통신, TCP/IP 프로그래밍

    서버(server) 클라이언트(client) 단방향 통신, TCP/IP 프로그래밍

    이번 포스팅에서는 TCP/IP 프로그래밍을 통해서 서버와 클라이언트 간의 단방향 통신(클라이언트 -> 서버)을 구현해 보겠습니다. 먼저 결과 화면을 먼저 살펴보자면, 위 사진처럼 클라이언트에서 "Hello"라고 메세지를 보내게되면 서버 측에서 "Hello"라는 메세지를 받는 형식입니다. 구축 과정은 이렇습니다. [서버] WSAStartup()▼socket()▼bind()▼​listen()▼​accept()▼​[send, recv]▼​closesocket()▼​WSACleanup()​ [클라이언트] WSAStartup()▼socket()▼connect()▼[send, recv]▼​closesocket()▼​WSACleanup()​ 이 순서로 구축해 나가게 됩니다. 이 각 과정을 일상생활에서 전화를 통해 상..

    TCP/IP 소켓 프로그래밍 책 추천

    TCP/IP 소켓 프로그래밍 책 추천

    TCP/IP 소켓 프로그래밍 책을 추천하고자 한다. 리눅스와 윈도우 기반에서의 소켓 프로그래밍을 함께 설명하며, 초보자에게 적절한 설명과 예제를 통해서 소켓 프로그래밍에 대한 재미를 안겨주고자 한 책이다. 2003년도에 출간된 의 개정판. 초판과 마찬가지로 리눅스와 윈도우 기반에서의 소켓 프로그래밍을 함께 설명하며, 초보자에게 적절한 설명과 예제를 통해서 소켓 프로그래밍에 대한 재미를 더하고 있다. 우선 초판과 달라진 점은 설명의 포인트와 분량이다. 간단히 설명해도 되는 내용은 보다 간단하고 명료하게 설명하였으며, 자세한 설명이 요구되는 경우에는 설명의 분량을 늘려가면서까지 확실한 이해를 돕고 있다. 또한 시대의 흐름에 맞게 epoll에 대한 내용이 하나의 Chapter로 추가되었다. 특히 윈도우 영역의..

    TCP/UDP의 포트 목록

    TCP/UDP의 포트 목록

    TCP/UDP의 포트 목록 잘 알려진 포트(well-known port)는 특정한 쓰임새를 위해서 IANA에서 할당한 TCP 및 UDP 포트 번호의 일부이다. 일반적으로 포트 번호는 다음과 같이 세 가지로 나눌 수 있다.0번 ~ 1023번: 잘 알려진 포트 (well-known port)1024번 ~ 49151번: 등록된 포트 (registered port)49152번 ~ 65535번: 동적 포트 (dynamic port)대부분의 유닉스 계열 운영 체제의 경우, 잘 알려진 포트를 열려면 루트 권한이 있어야 한다.이 번호는 강제적으로 지정된 것은 아니며, IANA의 권고안일 뿐이다. 가끔 각 포트 번호를 그대로 사용하지 않고 다른 용도로 사용하기도 한다. 이 경우, 트로이 목마와 같은 프로그램들이 악의적인..