본문 바로가기

[ ★ ]Study/Network37

listen 함수 Window #include Linux #include #include Function Prototype int listen(int sockfd, int backlog); Listen 함수는 해당 소켓에서 연결을 기다리는 함수. 첫 번째 인자는 소켓을 생성한 뒤에 리턴되는 소켓 디스크립터. 두 번째 인자는 연결을 기다리는 대기열 큐의 사이즈이다. 2017. 3. 11.
bind 함수 Windows #include Linux #include #include Function Prototype int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen); bind함수는 서버에서 소켓 연결에 사용되는 주소를 소켓에 할당하기 위해서 사용되는 함수이다. 첫 번째 인자는 소켓을 생성한 후 리턴되는 소켓 디스크립터. 두 번째, 세번째 인자는 connect함수에서 설명한 sockaddr 구조체의 주소값과 구조체의 길이이다. connect()함수를 호출하면서 전달하는 sockaddr 구조체의 주소값은 서버의 IP및 PORT번호가 저장된 구조체의 주소값이지만, bind 함수에서 사용되는 주소값은 소켓 디스크립터에 할당하는 즉, 연결받고자 하.. 2017. 3. 5.
socket 함수 (linux, window) Window #include Linux #include #include Function Prototype int socket(int domain, int type, protocol); 첫 번째 인자는 통신 도메인을 지정하는 인자로 어떤 네트워크에서 사용될 소켓인지 지정. 소켓은 TCP/IP 인터넷 망에서 사용될 수 있을 뿐만 아니라 다른 망에서도 함께 사용될 수 있다. 첫 번째 인자를 통해서 어떤 망에서 사용될 소켓인지 지정할 수 있다. TCP/IP에서 사용될 소켓이므로 AF_INET값을 주로 사용한다. 두 번째 인자는 소켓의 형태를 지정하는 것으로 스트림을 의미하는 SOCK_STREAM이 있다. 데이터그램을 의미하는 SOCK_DGRAM이 있다. 많이 익숙할 것이라고 생각한다. 소켓을 생성하면 이 두가지.. 2017. 3. 5.
CGI 란 Common Gateway Interface의 약자. 웹 서버 상에서 사용자 프로그램을 동작시키기 위한 조합이다. 웹 서버에 있어 사용자의 요구를 응용프로그램에 전달하고 그 결과를 사용자에게 되돌려주기 위한 표준적인 방법이다. 사용자가 웹페이지의 양식에 내용을 기재하여 보냈을 때, 그것은 보통 응용프로그램에 의해 처리될 필요가 있다. 웹 서버는 그 양식 정보를 조그만 응용프로그램에 전달하는데, 이 프로그램은 데이터를 처리하고 필요에 따라 확인 메시지를 보내주기도 한다. 이렇게 서버와 응용프로그램간에 데이터를 주고받기 위한 방법이나 규약들을 CGI라고 부른다. 요약 : 웹 서버 소프트웨어에서 프로그램을 호출할 때의 규칙을 정한 것이 CGI이며, CGI의 규칙에 맞게 움직이는 프로그램을 'CGI 프로그램'이.. 2017. 2. 26.
Available threads in Windows and Linux. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 #include #ifndef __linux__ // for windows #include #define CREATE_THREAD(id, function, param) \ CreateThread(NULL, 0, function, param, 0, &id); #define THREAD_TYPE_RETURN DWORD WINAP #define THREAD_TYPE_PARAM LPVOID #define THREAD_TYPE_ID DWORD #define SLEEP(x) Sleep(x*1000) #else // fo.. 2017. 2. 26.
Packet Capture Library RAW 소켓을 사용하지 않고 패킷을 캡처하거나 프로토콜 헤더를 직접 작성하여 전송하기 위해서 할 수 있는 또 다른 방법으로는 라이브러리를 사용하는 것이다. 리눅스를 포함한 유닉스 계열에서 네트워크 패킷 캡처를 위해서 가장 많이 사용되는 라이브러리가 libpcap라이브러리이다. libpcap라이브러리는 데이터 링크 계층부터 프로토콜 스택을 통과하는 네트워크 패킷을 캡처할 수 있도록 도와줄 뿐만 아니라 네트워크 패킷을 전송할 수 있도록 도와준다. libpcap 라이브러리는 운영체제에 상관없이 범용적으로 사용할 수 있는 API를 제공하여 운영체제에 의존하지 않는 공용 프로그램 혹은 공용 라이브러리의 제작이 가능하도록 도와준다. 윈도우 환경에서는 libpcap 라이브러리를 윈도우 환경으로 포팅한 winpcap .. 2017. 2. 26.