CATEGORY

분류 전체보기 (73)
세상사는이야기 (27)
회사이야기 (7)
친구들이야기 (6)
공부이야기 (33)
개인적인이야기 (0)

RECENT ARTICLE

RECENT COMMENT

ARCHIVE

LINK



  1. 2008.05.21
    Nagle 알고리즘이란?

네트웍에서 Nagle 알고리즘은 "가능하면 조금씩 여러번 보내지말고 한번에 많이 보내라(Effective TCP)" 라는 원칙을 기반으로 만들어진 알고리즘입니다. 

WinSock 의경우 기본으로 Navle 알고리즘이 적용이 되어있습니다. 하지만 몇몇 네트웍 관련 프로그램에서는 네트웍 의 전송량이나 부하보다는 빠른 응답속도를 더 중요시 여기는 상황이 있습니다. 그러한때에는 TCP_NODELAY  라는 옵션을 사용하여 Nagle 알고리즘을 제거 할 수 있습니다.

해당 코드를 적용하는 방법은

int nValue = 1;

setsockopt( TCP_NODELAY, &nValue, sizeof(int), IPPROTO_TCP );

의 코드를 사용합니다.

아래는 100Byte 의 패킷을 5번에 걸처서 보내고 에코로 받은 결과입니다.

Nagle 알고리즘 적용 (default) : 100~150ms

Nagle 알고리즘 해제              : 1~3 ms

하지만 해당 옵션의 사용은 네트웍 부하를 극대화 시켜주면서 서버의 전체적인 성능을

무척감소하기때문에 꼭 필요한경우에만 매우 주의를 해서 사용해야 합니다.

추가로 "Effective TCP Programming" 역시 추천도서입니다. ^^

네트웍 프로그램을 향상하는 44가지 팁이라고 하는데 저의 경우

15개정도의 팁만이 쓸모가 있더군요.

출처 : Tong - Mothrah님의 TCP Communication통

And