O documento discute os protocolos TCP e UDP para comunicação entre processos, comparando suas características como confiabilidade, ordenamento e sincronia. Também apresenta a API Java para sockets e fluxos TCP, mostrando exemplos de cliente e servidor.
3. INTRODUÇÃO
Discussão de como middleware e aplicativos podem utilizar os
protocolos TCP e UDP.
Na API Java, a comunicação é feita por meio de sockets.
3
4. INTRODUÇÃO
A interface de programa para UDP fornece uma abstração de
passagem de mensagem, a forma mais simples de
comunicação entre processos.
Permite que um processo remetente transfira uma mensagem
(datagramas) para processo destino.
4
5. INTRODUÇÃO
A interface de programa TCP fornece uma abstração de um
fluxo bidirecional entre pares de processos.
A informação consiste em um fluxo contínuo de dados sem dar
a noção de limites da mensagem (início e fim).
5
6. INTRODUÇÃO
Os fluxos comunicação de acordo com o paradigma
produtor-consumidor.
• par de processos com funções distintas
• produz itens de dados;
• consome itens de dados;
• Os itens de dados criados são enfileirados na chegada
(buffer) até que o consumidor esteja pronto para recebe-los.
• O consumidor deve esperar quando nenhum item de dados
estiver disponível.
• O produtor deve esperar caso o armazenamento usado para
conter os itens de dados esteja cheio.
6
9. SÍNCRONO VS
ASSÍNCRONO
• Síncrona:
• os processos remetente e destino são sincronizados a cada
mensagem.
• Send e Receive são operações que causam bloqueio.
9
10. SÍNCRONO VS
ASSÍNCRONO
• Assíncrono:
• a operação Send é não bloqueante
• o remetente pode prosseguir assim que a mensagem tenha
sido copiada para um buffer local
• Receive pode ter variantes com e sem bloqueio.
10
11. DESTINOS DA
MENSAGEM
• As mensagens são enviadas para destinos identificados pelo
par (endereço IP, porta local).
• Uma porta é o destino da mensagem dentro de um
computador, e pode ter vários remetentes.
• Os processos podem usar várias portas para receber
mensagens e qualquer processo que saiba essas portas
pode enviar mensagens para processos remetentes.
11
12. CONFIABILIDADE E
ORDENAMENTO
Confiabilidade:
garantia que as mensagens foram entregues,
independentemente do número de mensagens que
possam ter sido eliminadas ou perdidas.
Ordenamento:
algumas aplicações exigem que as mensagens sejam
entregues na ordem de emissão.
12
14. SERIALIZAÇÃO EM
JAVA
Serialização
refere à atividade de simplificar o objeto em uma
forma sequencial conveniente para armazenamento
em disco ou transmitir uma mensagem.
Desserialização
consiste em restaurar o estado de um objeto a partir
de sua forma serializada.
Serializable não possui métodos e sua implementação tem o
efeito de permitir que suas instâncias sejam serializadas.
14
18. COMUNICAÇÃO
CLIENTE-SERVIDOR
Baseada em 3 primitivas:
• doOperation:
• método usado pelo cliente para invocar ações remotas.
• getRequest:
• usado por um processo servidor para ler as requisições de
serviço.
• sendReply:
• usado pelo servidor para enviar a mensagem de resposta ao
cliente.
18
21. SOCKETS
TCP e UDP utilizam sockets como forma de comunicação.
A comunicação entre processos consiste na transmissão de
mensagens entre soquetes.
Para que um processo receba mensagens, seu socket deve estar
vinculado a um endereço IP e uma porta local.
21
23. COMUNICAÇÃO POR
DATAGRAMA UDP
Transmitido do processo remetente ao processo destino sem a
existência de confirmações ou novas tentativas de envio.
Se ocorrer uma falha, a mensagem poderá não chegar.
23
25. QUESTÕES
RELACIONADAS AO UDP
• Tamanho da mensagem:
• Limite de 64 kb.
• Timeout:
• não é adequado que um processo espere indefinidamente
para receber algo, pois o processo remetente pode ter
falhado ou a mensagem pode ter se perdido.
• Falhas por omissão:
• mensagens podem ser descartadas devido a erros de soma
de verificação ou porque não há espaço no buffer de origem
ou destino.
• Ordenamento:
• as mensagens podem ser entregues em ordem diferente da
que foram emitidas.
25
31. COMUNICAÇÃO POR
FLUXO TCP
• Tamanho das mensagens:
• o aplicativo pode escolher o volume de dados que vai ser
enviado ou recebido em um fluxo.
• Mensagens perdidas:
• Se o destinatário não receber uma mensagem, o remetente a
retransmite.
• Controle de fluxo:
• Controle para processos rápidos não sobrecarregarem
processos lentos.
• Destinos da mensagem:
• uma vez estabelecida as conexões, os processos
simplesmente leem ou escrevem no fluxo, sem necessidade
de usar endereços IP e portas, pois já foi estabelecida uma
conexão.
31
32. COMUNICAÇÃO POR
FLUXO TCP
Threads:
quando um servidor aceita uma conexão, ele cria
uma nova thread para se comunicar com o novo
cliente.
Falhas:
Os fluxos TCP usam timeout e retransmissões para
tratar pacotes perdidos.
32