IPC Comunicação Entre Processos - Rossano Pablo Pinto's Home ...
IPC Comunicação Entre Processos - Rossano Pablo Pinto's Home ...
IPC Comunicação Entre Processos - Rossano Pablo Pinto's Home ...
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
<strong>IPC</strong><strong>Comunicação</strong> <strong>Entre</strong> <strong>Processos</strong>Sistemas DistribuídosProf. <strong>Rossano</strong> <strong>Pablo</strong> Pinto, Msc.rossano at gmail com1. Semestre 2008
Definição de Processo●Programa em execução– possui estado (running, stopped, blocked, ...)– possui uma identificação única no sistema: pidCopyleft <strong>Rossano</strong> <strong>Pablo</strong> Pinto 2
Identificação de Máquinas e<strong>Processos</strong>●Cada máquina em rede possui ID único– Físico: Endereço MAC– Lógico: Endereço de camada 3 (ex.: IP)●Como identificar um determinado“processo” na rede?– Porta: ID de 16 bits (65536 possíveis valores)– Portas baixas: 0 - 1023 (serviços conhecidos)– Portas altas: 1024 - 65535Copyleft <strong>Rossano</strong> <strong>Pablo</strong> Pinto 3
Identificação de Máquinas e<strong>Processos</strong>●Protocolos da camada de transporte(REVISÃO):– UDP (User Datagram Protocol)– TCP (Transmission Control Protocol)●●UDP -> não verifica se destinatáriorecebeu pacoteTCP -> verifica se destinatário recebeupacote– retransmite se necessárioCopyleft <strong>Rossano</strong> <strong>Pablo</strong> Pinto 4
Identificação de Máquinas e<strong>Processos</strong>● Portas (well-known ports 0-1023):– controladas pelo IANA21 FTP 111 RPC/PORTMAPPER22 SSH 123 NTP23 TELNET 443 HTTPS25 SMTP 631 IPP53 DNS ...80 HTTPCopyleft <strong>Rossano</strong> <strong>Pablo</strong> Pinto 5
Identificação de Máquinas e<strong>Processos</strong>● Portas (registered ports 1024-49151):– não controladas pelo IANA1099 RMIREGISTRY2049 NFS2401 CVS3306 MYSQL3690 SVN5353 MDNS6000 X11...Copyleft <strong>Rossano</strong> <strong>Pablo</strong> Pinto 6
Identificação de Máquinas e<strong>Processos</strong>●Outras portas– 49152 à 65535Copyleft <strong>Rossano</strong> <strong>Pablo</strong> Pinto 7
TCP/IP UDP/IP em Java●Exemplo Cliente/Servidor UDP/IP– Servidor●●Criar server socket, define portaLer do socket (bloqueia)– Cliente●●●Cria socket, não define porta (automático)Cria datagrama com MSG, HOST, PORTA doservidorEscreve no socketCopyleft <strong>Rossano</strong> <strong>Pablo</strong> Pinto 8
TCP/IP UDP/IP em Java●// UDP Server - receive packetDatagranSocket aSocket =new DatagramSocket(6789);DatagramPacket request =new DatagramPacket(buffer, buffer.length);aSocket.receive(request);Copyleft <strong>Rossano</strong> <strong>Pablo</strong> Pinto 9
TCP/IP UDP/IP em Java●// UDP Server - send packetDatagramPacket reply =new DatagramPacket(request.getData(),request.getLength(),request.getAddress(),request.getPort());aSocket.send(reply);Copyleft <strong>Rossano</strong> <strong>Pablo</strong> Pinto 10
TCP/IP UDP/IP em Java●// UDP Client - send packetDatagranSocket aSocket =new DatagramSocket();DatagramPacket request =new DatagramPacket(msg,length,host,port);aSocket.send(request);Copyleft <strong>Rossano</strong> <strong>Pablo</strong> Pinto 11
TCP/IP UDP/IP em Java●// UDP Client - receive packetDatagramPacket reply =new DatagramPacket(bufferbuffer.length);aSocket.receive(reply);Copyleft <strong>Rossano</strong> <strong>Pablo</strong> Pinto 12
Tarefa●●Executar o exemplo do cliente/servidor passadoem sala de aula. Cada aluno deve modificar oservidor para retornar para o cliente, além damensagem recebida, o nome e RA do aluno.Pense em uma maneira de requisitar algumserviço ao Servidor (definir protocolo). Ex.:dependendo da mensagem recebida peloservidor ele retorna para o usuário a datacorrente ou a mensagem “Hello World!”.Copyleft <strong>Rossano</strong> <strong>Pablo</strong> Pinto 13