12.07.2015 Views

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 ...

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!