728x90

Nagle 알고리즘

- 인터넷의 과도한 트래픽과 그로 인한 전송 속도 저하를 막기 위해 디자인된 알고리즘

- 한번 송수을 할때마다 각 계층에 해당하는 헤더가 붙어서 송수이 됨

- 그렇기 때문에 보내는 데이터를 한번에 묶어서 보내는 것이 효율적

- Nagle 알고리즘은 메시지를 보낼 때 최대한 묶어서 보내 패킷 수를 줄이는 방법

- 만약 N을 먼저 보냈다면 N에 대한 ACK를 받을 때까지 데이터를 모아놓고 있다가 ACK를 받으면 데이터를 보냄

- 반응 속도가 빨라야 하거나 적은양의 데이터도 자주 빨리 보내야 하는 시스템에는 부적절함

 

Nagle 알고리즘 ON / OFF

int main(int argc, char *argv[])
{
    ...;

    hSock=socket(PF_INET, SOCK_STREAM, 0);

    len=sizeof(socktype);
    state=getsockopt(hSock, IPPROTO_TCP, TCP_NODELAY, &socktype, &len);
    printf("Nagle On / Off : %s\n", socktype ? "On" : "Off");
    if(!state) {
        printf("getsockopt() error\n");
    }

    socktype = TRUE;
    state=setsockopt(hSock, IPPROTO_TCP, TCP_NODELAY, &socktype, &len);
    if(!state) {
        printf("setsocket() error\n");
    }

    ...;
}
728x90

+ Recent posts