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
'Programming > Network' 카테고리의 다른 글
열혈 TCP/IP 10-2. 프로세스 & 좀비(Zombie) 프로세스 (0) | 2021.03.01 |
---|---|
열혈 TCP/IP 10-1. 프로세스의 이해와 활용 (0) | 2021.03.01 |
열혈 TCP/IP 09-2. SO_REUSEADDR (0) | 2021.02.23 |
열혈 TCP/IP 09-1. 소켓의 옵션과 입출력 버퍼의 크기 (0) | 2021.02.23 |
열혈 TCP/IP 08-2. IP주소와 도메인 이름 사이의 변환 (0) | 2021.02.21 |