네이글 알고리즘은 TCP에서 작은 데이터를 바로바로 보내지 않고, 가능한 경우 모아서 전송하는 방식이다.
새 데이터가 있다면
윈도우와 데이터가 MSS 이상이면 MSS만큼 바로 전송한다.
아직 확인되지 않은 데이터가 있으면 ACK를 받을 때까지 버퍼에 둔다.
확인되지 않은 데이터가 없으면 바로 전송한다.핵심은 가급적 데이터를 모아서 전송하는 데 있다.
데이터보다 헤더가 더 큰 작은 패킷을 계속 보내면 오버헤드가 커진다. 작은 상자 하나를 먼 곳까지 배송하는 것보다, 어느 정도 모아서 보내는 편이 효율적인 것과 비슷하다.
다만 지연 시간이 중요한 환경에서는 이 동작이 오히려 문제가 될 수 있다. TCP_NODELAY 같은 설정을 검토해야 하는 이유다.
댓글을 불러오고 있습니다.