O Gnutella é um sistema distribuído para compartilhamento de informações. Neste sistema, uma aplicação atua tanto como um cliente (consumindo informação) quanto como um servidor (fornecendo informação). Ele atua também como um roteador de informações e conexões entre outras aplicações participantes.