1.   Nagle 알고리즘이란 무엇인가? 

예를 들어서 'good'이라는 단어를 패킷으로 전송한다고 할 때 g를 보내고 ACK를 받고, 그 다음 철자 o를 보내고 ACK를 받고, 또 o를 보내고 ACK를 수신하고, d를 송신하고 ACK를 수신하게 됩니다. 그러나 데이터를 전송할 때 문제는 한 번 보내고 받는 과정에서 네트워크의 캡슐화와 디캡슐레이션이 이루어지면서 헤더에 많은 것들이 붙게 됩니다. 그리고 이러한 통신과정을 여러번 하는 게 매우 번거롭고 오고가고 시간도 많이 걸립니다. 그러면 오고가는 패킷의 수를 줄일 수 있는 효율적인 방법이 뭐가 없을까 고민하다가 생긴 알고리즘 중에 하나가 Nagle알고리즘입니다. 


네이글(Nagle) 알고리즘이란 

TCP/IP 네트워크의 효율성을 증대시키는 방법으로써, 네트워크를 통해 보내져야되는 패킷의 수를 줄이는 것입니다. 네이글이라는 이름이 붙은 이유는 이 알고리즘을 제안한 사람의 이름이 John Nagle(존 네이글)이기 때문에 그의 이름을 붙인 것이며,해당 알고리즘은 RFC896을 보시면 됩니다. 


- 참고로 TCP 통신 소켓은 기본적으로 네이글 알고리즘을 따릅니다. 






2.  알고리즘 살펴보기 

쉽게 이야기하면 내가 보내려고 하는 메시지가 있고, 담아둘 수 있는 버퍼(window size)를 갖고 있습니다. 

처음에 g를 송신하고 ACK를 기다립니다. 기다리는 동안 미처보내지 못한 ood는 버퍼에 넣어놓습니다. ACK를 드디어 받았습니다. 그 다음에는 나머지 ood를 한번에 전송하는 것입니다. 




3.  결론적으로 보내는 패킷의 수를 줄이자.

쉽게 설명하면 기존에 good을 보낼 때는 g,o,o,d 이렇게 4개의 패킷을 보냈습니다. 그런데 그렇게 할 게 아니라 g, ood 이런식으로 보내면 2개 패킷으로 데이터의 전송이 가능하게 됩니다. 





4.  Nagle알고리즘 장점과 단점

- 장점 : 네트워크의 효율성이 높아집니다. (4개 패킷으로 보내던 것을 2개로 줄일 수 있게 됩니다.)

- 단점 : 전송 속도가 느려집니다. (ACK 수신할 때까지 버퍼에 데이터를 넣기만 하고 전송하지는 않습니다. ) 





  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기