mensagens quando o usuario esta offline, e roteia mensagens para usuarios que estao atras de firewalls. Um sistema totalmente descentralizado de comunicacao instantanea nao iria funcionar na Internet de hoje, mas existem grandes vantagens de escalabilidade em pemitir comunicacao cliente-cliente, quando possivel. Assim, grande parte dos sistemas utiliza um esquema de diretorio centralizado enquanto a funcao e distribuida.Requisitos de uma Aplicacao Peer-to-PeerPara funcionar eficientemente, sistemas peer-to-peer devem se preocupar com os seguintes requisitos nao-funcionais:[5]Escalabilidade globalUm dos objetivos das aplicacoes peer-to-peer e explorar os recursos de hardware de um grande numero de hospedeiros conectados a Internet. Assim, essas aplicacoes devem ser projetadas de modo a suportar o acesso a milhoes de objetos em dezenas ou centenas de milhares de hospedeiros.cancado atraves da colocacao aleatoria de recursos, juntamente com a utilizacao de replicas dos recursos mais utilizados.Otimizacao de interacoes locais entre nodos vizinhosA "distancia de rede" entre os nos que interagem tem um impacto substancial na latencia das interacoes individuais, como por exemplo, clientes requisitando acesso a recursos. A carga do trafico da rede tambem e impactada por isso. As aplicacoes devem colocar os recursos perto dos nos que mais os utilizam.DisponibilidadeA maioria dos sistemas peer-to-peer sao constituidos de computadores hospedeiros que sao livres para se juntar ou sair do sistema a qualquer hora. Alem disso, os segmentos de rede utilizados nos sistemas peer-to-peer nao sao gerenciados por alguma autoridade; nem possuem garantias de qualidade de servico. Um grande desafio para os sistemas peer-to-peer e prover um sistema confiavel apesar desses fatos. Quando novos hospedeiros se juntam, eles devem ser integrados ao sistema e a carga deve ser redistribuida para explorar esses novos recursos. Quando eles saem do sistema voluntariamente ou involuntariamente, o sistema deve detectar a partida deles, e redistribuir as suas cargas e os seus recursos.Seguranca dos dadosEm sistemas de escala global com participantes de origens diversas, confianca deve ser construida com o uso de autenticacao e mecanismos de criptografia para garantir a privacidade dos dados e da informacao.Anonimidade, negabilidade e resistencia a censuraAnonimidade e uma preocupacao legitima em muitas situacoes que demandam resistencia a censura. Um requisito relacionado e que hospedeiros que guardam dados devem ser capazes de negar plausivelmente a responsabilidade sobre a posse e o suprimento deles. A utilizacao de um grande numero de hospedeiros em sistemas peer-to-peer pode ser util em alcancar essas propriedades.Redes P2P estruturadas e nao-estruturadasRede SobrepostaUm conceito importante do paradigma P2P e a rede sobreposta, ou rede overlay. Na rede overlay, os nos sao formados pelos processos e os enlaces sao representados pelos possiveis canais de comunicacao (que sao tipicamente conexoes TCP). No geral, um processo nao pode se comunicar diretamente com outro processo arbitrario, mas so pode enviar mensagens atraves dos canais de comunicacao disponiveis. Nesse sentido, cada no possui um conjunto de vizinhos, que por sua vez possuirao outros conjuntos de vizinhos. A figura abaixo ilustra a rede sobreposta sobre a camada de rede (p.e. Internet). Observe que dois nos que sao vizinhos na rede overlay nao sao necessariamente vizinhos na rede fisica.Rede overlay P2PA localizacao de nos e objetos e realizado na