네이글 알고리즘
네이글 알고리즘(Nagle's algorithm)은 네트워크를 통해 전송해야 하는 패킷 수를 줄임으로써 TCP/IP 네트워크의 효율성을 향상시키는 방법이다. 존 네이글이 포드 에어로스페이스에서 근무하던 당시 이 알고리즘을 정의했다. 1984년 RFC 896에 "IP/TCP 인터네트워크의 혼잡 제어"라는 제목의 RFC(Request for Comments)로 발표되었다.
이 RFC는 네이글이 "소형 패킷 문제"라고 부르는 문제를 설명한다. 이 문제는 애플리케이션이 종종 1바이트 크기의 작은 청크로 데이터를 반복적으로 전송하는 것이다. TCP 패킷은 40바이트(TCP의 경우 20바이트, IPv4의 경우 20바이트)의 헤더를 가지므로, 1바이트의 유용한 정보를 담기 위해 41바이트의 패킷이 생성되어 엄청난 오버헤드를 발생시킨다. 이러한 상황은 텔넷 세션에서 자주 발생하는데, 대부분의 키 입력이 즉시 전송되는 1바이트의 데이터를 생성한다. 더 심각한 문제는 느린 링크에서 이러한 패킷이 동시에 여러 개 전송되어 혼잡 붕괴(congestion collapse)로 이어질 수 있다는 것이다.
네이글 알고리즘은 여러 개의 작은 발신 메시지를 결합하여 한꺼번에 전송하는 방식으로 작동한다. 구체적으로, 송신자가 확인응답을 받지 못한 전송 패킷이 있는 경우, 송신자는 전체 패킷 분량의 출력을 얻을 때까지 출력을 계속 버퍼링하여 모든 출력을 한꺼번에 전송할 수 있도록 한다.
출처
[편집]- Larry L. Peterson; Bruce S. Davie (2007). 《Computer Networks: A Systems Approach》 4판. Morgan Kaufmann. 402–403쪽. ISBN 978-0-12-374013-7.