4. Plataforma JXTA
 
 Objetivos e conceitos básicos
     A tecnologia P2P está presente em um número razoavelmente grande de aplicações, como sistemas de compartilhamento de arquivos, mensageiros instantâneos e sistemas de computação distribuída. Cada um desses sistemas possui uma arquitetura diferente, que opera conforme um protocolo específico para uma dada arquitetura. Temos, nesse ambiente, cada sistema P2P fornecendo um serviço singular, único.
     Os serviços existentes em uma rede P2P, como transferência de mensagens, procurar serviços, procurar peers na rede, estabelecer conexão entre os peers, dentre outros, são fornecidos através de protocolos.
     Protocolo consiste em um conjunto de regras que permitem que dois ou mais dispositivos troquem mensagens e serviços entre si. Geralmente operam com sistemas semelhantes que precisam se comunicar através de uma rede.
     O JXTA surgiu com o fim de quebrar o problema relacionado à incompatibilidade de protocolos entre sistemas que fornecem serviços semelhantes, principalmente devido ao caráter proprietário dos protocolos. Isto acaba por gerar redes isoladas.
     A plataforma JXTA foi especificada na arquitetura microkernel, isto é, funções básicas de sistemas P2P (semelhantes a todos) são implementadas em módulos, restando ao JXTA funções simples como a comunicação entre os mídulos.
     Esta plataforma consiste em alguns tipos de peers que podem assumir papel, ora de roteadores, ora de cache de informação, ora de peers simples (proxy, por exemplo). Cada peer, grupo ou serviço possui um advertisement, um arquivo XML bem formatado contendo informações sobre a entidade a qual ele trata. Possui um tempo de vida e só permanece ativo enquanto a entidade a qual ele se refere estiver online.
     Seus principais objetivos são:
- ubiquidade: pode ser acessada por qualquer tipo de dispositivo;
- uma rede virtual acima dos protocolos, implementando um protocolo de rede que mascara a complexidade dos sistemas P2P, permitindo que peers de sistemas diferentes se comuniquem;
- interoperabilidade: permite que sistemas P2P de protocolos diferentes participem da rede, como uma grande e única comunidade.     
 
 Camadas
A plataforma JXTA possui três camadas:
- camada aplicação, constituída pelas aplicações que utilizam o sistema P2P através da plataforma;

- camada serviços, constituída ploes serviços que a plataforma fornece, como as mensagens trocadas pelos peers (peers commands);

- camada interna, constituída pelas definições dos protocolos.
 
 
 Protocolos
     Os protocolos para a plataforma JXTA consistem em conjuntos de mensagens que os peers podem trocar ou, de uma forma mais simplificada, em um conjunto de serviços que fornece aos peers para que troquem mensagens entre si. Estas mensagens utilizam o formato aberto XML e são em número de seis.
 
 Pipe Binding Protocol (PBP)
      Este protocolo tem a finalidade de estabelecer uma conexão (ou criar um pipe) entre peers a endpoints. O protocolo PRP é usado para encontrar um dado peer já conectado a um pipe.
 
 Peer Endpoint Protocol (PEP)
      A principal finalidade desse protocolo é possibilitar a descoberta de rota entre dois peers, além da formação de uma nova rota, caso um peer caia.
 
 Peer Resolver Protocol (PRP)
      Este protocolo possibilita a transmissão de query de pesquisa através dos peers e o retorno da resposta. Neste caso, os peers, enviam a query de pesquisa, outro peer recebe esta query, processa e envia a resposta de volta.
     Este protocolo serve de base para outros protocolos, como o Peer Information Protocol (PIP) e o Peer Discovery Protocol (PDP).
 
 Peer Information Protocol (PIP)
     Este protocolo é usado para monitoramento da rede, isto é, obter informação sobre os peers, como habilidades, se está online, etc, monitoramento do desempenho da rede, etc.
 
 Peer Discovery Protocol (PDP)
     Este protocolo possibilita a descoberta de novos peers e serviços na rede, geralmente além da rede local.
     Este serviço se dá através de peers do  tipo rendezvous, que armazenam, geralmente de forma dinâmica, advertisements de outros peers, isto é, informações como ID de peers ditos confiáveis para aquele peer rendezvous.
     Os protocolos usados para este trabalho são os protocolos Peer Rendezvous Protocol (RVP) e o Peer Resolver Protocol (PRP).
 
 Rendezvous Protocol (RVP)
     Este protocolo permite um peer assumir papel, ora de rendezvous (peer roteador, ou aquekle que propaga a mensagem), ora de edge, isto é, permite a propagação de mensagens através da rede, alterando o papel dos peers.
     Este protocolo serve de base para outros dois protocolos: o Peer Resolver Protocol (PRP) e o Pipe Binding Protocol (PBP).
 
 Implementação
     A implementação da plataforma JXTA é totalmente em java, com o uso de tecnologias abertas, como o XML.