본문 바로가기

[+] Information/[-] Network

[2009/06/23] 멀티태스킹을 위한 프로세스의 이해 1. 다중 접속 서버의 구현 방법들 - 프로세스 생성을 통한 멀티태스킹(Multitasking) 서버의 구현. - select 함수에 의한 멀티플렉싱(Multiplexing) 서버의 구현. - 쓰레드를 기반으로 하는 멀티쓰레딩(Multithreading) 서버의 구현. 2. 프로세스에 대한 이해 - 프로세스란 실행되고 있는 프로그램의 기본 단위이다. - 생성된 프로세스는 운영체제의 의해 할당된 고유한 ID를 지닌다. - 하나의 프로그램 내에서 여러 개의 프로세스가 동시에 실행 될 수 있다. 더보기
[2009/06/22] Nagle 예제소스(nagle.c) /* nagle.c */ #include #include #include #include #include #include #include #define TRUE 1 #define FALSE 0 int main(int argc, char **argv) { int sock; int state, opt_val, opt_len; sock=socket(PF_INET, SOCK_STREAM, 0); /* 디폴트 nagle 알고리즘 설정 상태 확인 */ state = getsockopt(sock, IPPROTO_TCP, TCP_NODELAY, &opt_val, &opt_len); if(state) { puts("getsockopt() error!"); exit(1); } printf("디폴트 nagle 알고리즘 : .. 더보기
[2009/06/22] Nagle 알고리즘에 대한 이해 1. Nagle 알고리즘에 대한 이해. - 네트워크상의 패킷 수를 줄이기 위해 제안된 알고리즘. - ACK를 수신해야만 다음 전송을 진행하는 알고리즘. 2. Nagle 알고리즘의 장점과 단점. - 장점 : 네트워크의 효율성이 높아진다.(적은 패킷의 양) - 단점 : 전송 속도가 느리다(ACK 수신 후 패킷 전송) - 생각해 볼 문제 : Nagle 알고리즘의 중단이 데이터 전송 속도를 무조건 향상시켜 주는 것은 아니다. 3. TCP_NODELAY - Nagle 알고리즘을 Disable 시키기 위한 옵션의 변경. - TCP 소켓은 생성시 기본적으로 Nagle 알고리즘 적용 더보기
[2009/06/22] TIME-WAIT 예제소스(reuseaddr.c) /* reuseaddr.c */ #include #include #include #include #include #include #include #define TRUE 1 #define FALSE 0 void error_handling(char *message); int main(int argc, char **argv) { int serv_sock; int clnt_sock; char message[30]; int str_len; int option; socklen_t optlen; struct sockaddr_in serv_addr; struct sockaddr_in clnt_addr; int clnt_addr_size; if(argc!=2){ printf("Usage : %s \n", argv[0]).. 더보기
[2009/06/22] TIME-WAIT 상태에 대한 이해 1. TIME-WAIT 상태란 ? - 연결 종료 시 마지막 패킷 전송 실패를 대비하기 위한 상태. 2. 서버의 연결 종료 - 서버에서 먼저 종료 요청 후, 다시 서버를 가동 시키면? 3. TIME-WAIT 타이머의 재시작 - TIME-WAIT 상태는 우리의 생각보다 더 길어 질 수 있다. 4. SO_REUSEADDR - TIME-WAIT 상태에 있는 서버의 IP와 PORT를 재 할당 하도록 옵션 설정. 더보기