comunicação - std29006 engenharia de...
TRANSCRIPT
![Page 1: Comunicação - STD29006 Engenharia de Telecomunicaçõesdocente.ifsc.edu.br/mello/std/std-aula-03-comunicacao.pdf · 2020-02-21 · Na codi˜cação de caracteres (i.e. ASCII vs](https://reader034.vdocuments.pub/reader034/viewer/2022043003/5f84126d24123f0722073c7e/html5/thumbnails/1.jpg)
ComunicaçãoSTD29006 – Engenharia de Telecomunicações
Prof. Emerson Ribeiro de Mello
http://docente.ifsc.edu.br/mello/std
20 DE FEVEREIRO DE 2020
![Page 2: Comunicação - STD29006 Engenharia de Telecomunicaçõesdocente.ifsc.edu.br/mello/std/std-aula-03-comunicacao.pdf · 2020-02-21 · Na codi˜cação de caracteres (i.e. ASCII vs](https://reader034.vdocuments.pub/reader034/viewer/2022043003/5f84126d24123f0722073c7e/html5/thumbnails/2.jpg)
Processos
![Page 3: Comunicação - STD29006 Engenharia de Telecomunicaçõesdocente.ifsc.edu.br/mello/std/std-aula-03-comunicacao.pdf · 2020-02-21 · Na codi˜cação de caracteres (i.e. ASCII vs](https://reader034.vdocuments.pub/reader034/viewer/2022043003/5f84126d24123f0722073c7e/html5/thumbnails/3.jpg)
Processo para o sistema operacional
Para cada processo existe um espaço de memória reservado
Um processo não pode interferir no funcionamento de outroprocesso
Escalonamento de processos é uma atividade crucial de sistemasoperacionais modernos
Estados: Pronto (ready), Em execução (running) e Em espera (waiting)
A concorrência entre processos é tratada de forma transparente parao usuário
chaveamento de contexto: CPU, alocação de segmento de memória,zerar segmento, etc.
1/32
![Page 4: Comunicação - STD29006 Engenharia de Telecomunicaçõesdocente.ifsc.edu.br/mello/std/std-aula-03-comunicacao.pdf · 2020-02-21 · Na codi˜cação de caracteres (i.e. ASCII vs](https://reader034.vdocuments.pub/reader034/viewer/2022043003/5f84126d24123f0722073c7e/html5/thumbnails/4.jpg)
Comunicação entre Processos (IPC)
Arquivos
Signals
Pipe
Sockets
echo -e "Fulano\nAna\nPedro" > alunos.txt
cat alunos.txt
2/32
![Page 5: Comunicação - STD29006 Engenharia de Telecomunicaçõesdocente.ifsc.edu.br/mello/std/std-aula-03-comunicacao.pdf · 2020-02-21 · Na codi˜cação de caracteres (i.e. ASCII vs](https://reader034.vdocuments.pub/reader034/viewer/2022043003/5f84126d24123f0722073c7e/html5/thumbnails/5.jpg)
Comunicação entre Processos (IPC)
Arquivos
Signals
Pipe
Sockets
kill -9 PID
Veja aqui um exemplo em C de como tratar sinais Unix
2/32
![Page 6: Comunicação - STD29006 Engenharia de Telecomunicaçõesdocente.ifsc.edu.br/mello/std/std-aula-03-comunicacao.pdf · 2020-02-21 · Na codi˜cação de caracteres (i.e. ASCII vs](https://reader034.vdocuments.pub/reader034/viewer/2022043003/5f84126d24123f0722073c7e/html5/thumbnails/6.jpg)
Comunicação entre Processos (IPC)
Arquivos
Signals
Pipe
Sockets
cat /etc/passwd | grep aluno
2/32
![Page 7: Comunicação - STD29006 Engenharia de Telecomunicaçõesdocente.ifsc.edu.br/mello/std/std-aula-03-comunicacao.pdf · 2020-02-21 · Na codi˜cação de caracteres (i.e. ASCII vs](https://reader034.vdocuments.pub/reader034/viewer/2022043003/5f84126d24123f0722073c7e/html5/thumbnails/7.jpg)
Comunicação entre Processos (IPC)
Arquivos
Signals
Pipe
Sockets
Para listar os sockets unix dos processos emexecução
ss -lx
# ou com o netstat (obsoleto)
netstat -tln --unix
2/32
![Page 8: Comunicação - STD29006 Engenharia de Telecomunicaçõesdocente.ifsc.edu.br/mello/std/std-aula-03-comunicacao.pdf · 2020-02-21 · Na codi˜cação de caracteres (i.e. ASCII vs](https://reader034.vdocuments.pub/reader034/viewer/2022043003/5f84126d24123f0722073c7e/html5/thumbnails/8.jpg)
Threads
Processo pode ser composto por diversas Threads
Cada thread possui um pedaço independente de código e nãointerfere no funcionamento de outras threads
Dados de um processo podem ser compartilhados facilmente portodas as threads
Concorrência não é transparente para o desenvolvedorContexto da thread: ready, running, waiting, blocked
3/32
![Page 9: Comunicação - STD29006 Engenharia de Telecomunicaçõesdocente.ifsc.edu.br/mello/std/std-aula-03-comunicacao.pdf · 2020-02-21 · Na codi˜cação de caracteres (i.e. ASCII vs](https://reader034.vdocuments.pub/reader034/viewer/2022043003/5f84126d24123f0722073c7e/html5/thumbnails/9.jpg)
Cliente multithread – Ex: navegador web
Documento HTML é composto por texto e uma coleção de mídias
Navegador web abre uma conexão TCP para obter cada elemento
Cada elemento é exibido assim que é descarregado
4/32
![Page 10: Comunicação - STD29006 Engenharia de Telecomunicaçõesdocente.ifsc.edu.br/mello/std/std-aula-03-comunicacao.pdf · 2020-02-21 · Na codi˜cação de caracteres (i.e. ASCII vs](https://reader034.vdocuments.pub/reader034/viewer/2022043003/5f84126d24123f0722073c7e/html5/thumbnails/10.jpg)
Cliente multithread – Ex: navegador web
4/32
![Page 11: Comunicação - STD29006 Engenharia de Telecomunicaçõesdocente.ifsc.edu.br/mello/std/std-aula-03-comunicacao.pdf · 2020-02-21 · Na codi˜cação de caracteres (i.e. ASCII vs](https://reader034.vdocuments.pub/reader034/viewer/2022043003/5f84126d24123f0722073c7e/html5/thumbnails/11.jpg)
Servidor multithread – Ex: servidor de arquivos
Operações de I/O são chamadas de sistema bloqueantes
Comportamento padrão do servidor de arquivos1 Aguardar por pedido relacionado com uma operação com arquivos
2 Processa o pedido e envia a resposta
Dispatcher thread
Worker thread
Server
Operating system
Request coming infrom the network
Request dispatchedto a worker thread
Servidor possui uma thread para esperar pedidos de clientesDispara uma thread para atender cada cliente
5/32
![Page 12: Comunicação - STD29006 Engenharia de Telecomunicaçõesdocente.ifsc.edu.br/mello/std/std-aula-03-comunicacao.pdf · 2020-02-21 · Na codi˜cação de caracteres (i.e. ASCII vs](https://reader034.vdocuments.pub/reader034/viewer/2022043003/5f84126d24123f0722073c7e/html5/thumbnails/12.jpg)
Servidor multithread – Exemplo em Java
Aguarda conexões e dispara Threads
public class Servidor{
public static void main(String args[]){
ServerSocket servidor = new ServerSocket(1234);
while(true){
Socket conexao = servidor.accept();
Thread t = new ServidorThread(conexao);
t.start();
}
}
}
public class ServidorThread extends Thread{
private Socket conexao;
public ServidorThread(Socket c){
this.conexao = c;
}
public void run(){
System.out.println("Thread executada");
}
}
6/32
![Page 13: Comunicação - STD29006 Engenharia de Telecomunicaçõesdocente.ifsc.edu.br/mello/std/std-aula-03-comunicacao.pdf · 2020-02-21 · Na codi˜cação de caracteres (i.e. ASCII vs](https://reader034.vdocuments.pub/reader034/viewer/2022043003/5f84126d24123f0722073c7e/html5/thumbnails/13.jpg)
Distribuição de tarefas
Aplicação multithreadThread principal aguarda por conexões dos clientes
Nova thread é disparada para atender cada cliente
Aplicação distribuídaProcesso coordenador (master)
Responsável por distribuir tarefas, coordenar e compilar as respostasdos trabalhadores
Processos trabalhadores (workers)Responsáveis por processar tarefas
7/32
![Page 14: Comunicação - STD29006 Engenharia de Telecomunicaçõesdocente.ifsc.edu.br/mello/std/std-aula-03-comunicacao.pdf · 2020-02-21 · Na codi˜cação de caracteres (i.e. ASCII vs](https://reader034.vdocuments.pub/reader034/viewer/2022043003/5f84126d24123f0722073c7e/html5/thumbnails/14.jpg)
Comunicaçãoem Sistemas Distribuídos
![Page 15: Comunicação - STD29006 Engenharia de Telecomunicaçõesdocente.ifsc.edu.br/mello/std/std-aula-03-comunicacao.pdf · 2020-02-21 · Na codi˜cação de caracteres (i.e. ASCII vs](https://reader034.vdocuments.pub/reader034/viewer/2022043003/5f84126d24123f0722073c7e/html5/thumbnails/15.jpg)
Comunicação em Sistemas Distribuídos
Comunicação entre processos é a essência de SD, pois processos sãoexecutados em diferentes máquinas
Protocolos de rede organizados em camadasFlexibilidade para o desenvolvimento de softwares
Softwares da camada de aplicação não precisam ter ciência sobre oformato de um quadro ethernet
8/32
![Page 16: Comunicação - STD29006 Engenharia de Telecomunicaçõesdocente.ifsc.edu.br/mello/std/std-aula-03-comunicacao.pdf · 2020-02-21 · Na codi˜cação de caracteres (i.e. ASCII vs](https://reader034.vdocuments.pub/reader034/viewer/2022043003/5f84126d24123f0722073c7e/html5/thumbnails/16.jpg)
Comunicação entre cliente e servidor: interface de usuário
Aplicação faz uso de protocolopróprio para comunicação
Ex: Aplicativo cliente localsincroniza com servidor remoto
Cliente leve usado somentecomo terminal para o usuário
Armazenamento,processamento são executadosno servidor
9/32
![Page 17: Comunicação - STD29006 Engenharia de Telecomunicaçõesdocente.ifsc.edu.br/mello/std/std-aula-03-comunicacao.pdf · 2020-02-21 · Na codi˜cação de caracteres (i.e. ASCII vs](https://reader034.vdocuments.pub/reader034/viewer/2022043003/5f84126d24123f0722073c7e/html5/thumbnails/17.jpg)
Comunicação entre cliente e servidor: interface de usuário
Protocolo de comunicação no nível de aplicação
Terminal do usuário e aplicações poderiam estar em máquinasdistintas
9/32
![Page 18: Comunicação - STD29006 Engenharia de Telecomunicaçõesdocente.ifsc.edu.br/mello/std/std-aula-03-comunicacao.pdf · 2020-02-21 · Na codi˜cação de caracteres (i.e. ASCII vs](https://reader034.vdocuments.pub/reader034/viewer/2022043003/5f84126d24123f0722073c7e/html5/thumbnails/18.jpg)
Comunicação entre cliente e servidor: interface de usuário
9/32
![Page 19: Comunicação - STD29006 Engenharia de Telecomunicaçõesdocente.ifsc.edu.br/mello/std/std-aula-03-comunicacao.pdf · 2020-02-21 · Na codi˜cação de caracteres (i.e. ASCII vs](https://reader034.vdocuments.pub/reader034/viewer/2022043003/5f84126d24123f0722073c7e/html5/thumbnails/19.jpg)
Contatando um aplicativo servidor (endpoint)
Um aplicativo servidor está associado a um IP, PORTA sobre umprotocolo de transporte e o cliente precisa conhecer essasinformações previamente
Um serviço pode estar associado a qualquer porta livre, porém éinteressante evitar as portas padronizadas
Alguns serviços já possuem portas padronizadas pela IANA80 HTTP/TCP, 21 FTP/TCP, 25/TCP SMTP
cat /etc/services
10/32
![Page 20: Comunicação - STD29006 Engenharia de Telecomunicaçõesdocente.ifsc.edu.br/mello/std/std-aula-03-comunicacao.pdf · 2020-02-21 · Na codi˜cação de caracteres (i.e. ASCII vs](https://reader034.vdocuments.pub/reader034/viewer/2022043003/5f84126d24123f0722073c7e/html5/thumbnails/20.jpg)
Exemplo FTP: modo ativo e passivo
11/32
![Page 21: Comunicação - STD29006 Engenharia de Telecomunicaçõesdocente.ifsc.edu.br/mello/std/std-aula-03-comunicacao.pdf · 2020-02-21 · Na codi˜cação de caracteres (i.e. ASCII vs](https://reader034.vdocuments.pub/reader034/viewer/2022043003/5f84126d24123f0722073c7e/html5/thumbnails/21.jpg)
Exemplo FTP: modo ativo e passivo
11/32
![Page 22: Comunicação - STD29006 Engenharia de Telecomunicaçõesdocente.ifsc.edu.br/mello/std/std-aula-03-comunicacao.pdf · 2020-02-21 · Na codi˜cação de caracteres (i.e. ASCII vs](https://reader034.vdocuments.pub/reader034/viewer/2022043003/5f84126d24123f0722073c7e/html5/thumbnails/22.jpg)
Atribuição dinâmica de endpoint
12/32
![Page 23: Comunicação - STD29006 Engenharia de Telecomunicaçõesdocente.ifsc.edu.br/mello/std/std-aula-03-comunicacao.pdf · 2020-02-21 · Na codi˜cação de caracteres (i.e. ASCII vs](https://reader034.vdocuments.pub/reader034/viewer/2022043003/5f84126d24123f0722073c7e/html5/thumbnails/23.jpg)
Comunicação fora do fluxo principal (out-of-band)
Como interromper um servidor uma vez que ele aceitou acomunicação e está transferindo dados?
1 Thread/processo ouvindo em uma outra porta para receber dadosde controle
2 Facilidades da camada de transporte (não muito usual)TCP permite o envio de mensagens urgentes dentro de uma mesmaconexão
Mensagens urgentes podem ser capturadas fazendo uso de SIGNALsdo S.O.
13/32
![Page 24: Comunicação - STD29006 Engenharia de Telecomunicaçõesdocente.ifsc.edu.br/mello/std/std-aula-03-comunicacao.pdf · 2020-02-21 · Na codi˜cação de caracteres (i.e. ASCII vs](https://reader034.vdocuments.pub/reader034/viewer/2022043003/5f84126d24123f0722073c7e/html5/thumbnails/24.jpg)
Comunicação fora do fluxo principal (out-of-band)
Como interromper um servidor uma vez que ele aceitou acomunicação e está transferindo dados?
1 Thread/processo ouvindo em uma outra porta para receber dadosde controle
2 Facilidades da camada de transporte (não muito usual)TCP permite o envio de mensagens urgentes dentro de uma mesmaconexão
Mensagens urgentes podem ser capturadas fazendo uso de SIGNALsdo S.O.
13/32
![Page 25: Comunicação - STD29006 Engenharia de Telecomunicaçõesdocente.ifsc.edu.br/mello/std/std-aula-03-comunicacao.pdf · 2020-02-21 · Na codi˜cação de caracteres (i.e. ASCII vs](https://reader034.vdocuments.pub/reader034/viewer/2022043003/5f84126d24123f0722073c7e/html5/thumbnails/25.jpg)
Comunicação fora do fluxo principal (out-of-band)
Como interromper um servidor uma vez que ele aceitou acomunicação e está transferindo dados?
1 Thread/processo ouvindo em uma outra porta para receber dadosde controle
2 Facilidades da camada de transporte (não muito usual)TCP permite o envio de mensagens urgentes dentro de uma mesmaconexão
Mensagens urgentes podem ser capturadas fazendo uso de SIGNALsdo S.O.
13/32
![Page 26: Comunicação - STD29006 Engenharia de Telecomunicaçõesdocente.ifsc.edu.br/mello/std/std-aula-03-comunicacao.pdf · 2020-02-21 · Na codi˜cação de caracteres (i.e. ASCII vs](https://reader034.vdocuments.pub/reader034/viewer/2022043003/5f84126d24123f0722073c7e/html5/thumbnails/26.jpg)
Servidores e manutenção do estado
Servidor que não mantém estado (stateless server)Não mantém qualquer informação sobre o cliente após atendê-lo efechar a conexão
Clientes e servidores são independentes, minimizando problemas deinconsistência de estado diante de uma falha do servidor
Pode ter o desempenho prejudicado, uma vez que o servidor nãoconsegue correlacionar pedidos subsequentes
Servidor que mantém estado (stateful server)Mantém informações sobre a interação com o cliente
Ex: Sabe quais arquivos foram abertos, sabe quais dados o cliente jápossui em cache
Oferece um ótimo desempenho, uma vez que o cliente pode mantercópias locais das informações, contudo a confiabilidade é sua maiordificuldade (inconsistência)
14/32
![Page 27: Comunicação - STD29006 Engenharia de Telecomunicaçõesdocente.ifsc.edu.br/mello/std/std-aula-03-comunicacao.pdf · 2020-02-21 · Na codi˜cação de caracteres (i.e. ASCII vs](https://reader034.vdocuments.pub/reader034/viewer/2022043003/5f84126d24123f0722073c7e/html5/thumbnails/27.jpg)
Servidores e manutenção do estado
Servidor que não mantém estado (stateless server)Não mantém qualquer informação sobre o cliente após atendê-lo efechar a conexão
Clientes e servidores são independentes, minimizando problemas deinconsistência de estado diante de uma falha do servidor
Pode ter o desempenho prejudicado, uma vez que o servidor nãoconsegue correlacionar pedidos subsequentes
Servidor que mantém estado (stateful server)Mantém informações sobre a interação com o cliente
Ex: Sabe quais arquivos foram abertos, sabe quais dados o cliente jápossui em cache
Oferece um ótimo desempenho, uma vez que o cliente pode mantercópias locais das informações, contudo a confiabilidade é sua maiordificuldade (inconsistência)
14/32
![Page 28: Comunicação - STD29006 Engenharia de Telecomunicaçõesdocente.ifsc.edu.br/mello/std/std-aula-03-comunicacao.pdf · 2020-02-21 · Na codi˜cação de caracteres (i.e. ASCII vs](https://reader034.vdocuments.pub/reader034/viewer/2022043003/5f84126d24123f0722073c7e/html5/thumbnails/28.jpg)
Middleware
Aplicação que provê um conjunto de protocolos de comunicaçãoatuando como mediador entre processos clientes e servidores
Protocolos de alto nível independentes de aplicações
Provê suporte para transações, sincronização, protocolos deautenticação, etc
15/32
![Page 29: Comunicação - STD29006 Engenharia de Telecomunicaçõesdocente.ifsc.edu.br/mello/std/std-aula-03-comunicacao.pdf · 2020-02-21 · Na codi˜cação de caracteres (i.e. ASCII vs](https://reader034.vdocuments.pub/reader034/viewer/2022043003/5f84126d24123f0722073c7e/html5/thumbnails/29.jpg)
Middleware
15/32
![Page 30: Comunicação - STD29006 Engenharia de Telecomunicaçõesdocente.ifsc.edu.br/mello/std/std-aula-03-comunicacao.pdf · 2020-02-21 · Na codi˜cação de caracteres (i.e. ASCII vs](https://reader034.vdocuments.pub/reader034/viewer/2022043003/5f84126d24123f0722073c7e/html5/thumbnails/30.jpg)
Middleware – Tipos de comunicação
Persistência
Persistente – mensagem fica armazenada no middleware o tempoque for necessário até ser entregue para o receptor – ex: e-mail
Transitória – mensagem fica armazenada no middleware apenasenquanto emissor e receptor estiverem ativos – ex: tcp/udp
Sincronismo
Síncrono – emissor fica bloqueado esperando resposta
Assíncrono – não fica bloqueado e recebe uma notificação quando aresposta estiver disponível
Fluxo
Discreto – partes trocam mensagens, sendo cada mensagem tratadacomo uma unidade completa de informação – ex: navegação web
Fluxo contínuo – são trocadas diversas mensagens consecutivas eestão relacionadas entre si – ex: rádio pela Internet
16/32
![Page 31: Comunicação - STD29006 Engenharia de Telecomunicaçõesdocente.ifsc.edu.br/mello/std/std-aula-03-comunicacao.pdf · 2020-02-21 · Na codi˜cação de caracteres (i.e. ASCII vs](https://reader034.vdocuments.pub/reader034/viewer/2022043003/5f84126d24123f0722073c7e/html5/thumbnails/31.jpg)
Middleware – Tipos de comunicação
PersistênciaPersistente – mensagem fica armazenada no middleware o tempoque for necessário até ser entregue para o receptor – ex: e-mail
Transitória – mensagem fica armazenada no middleware apenasenquanto emissor e receptor estiverem ativos – ex: tcp/udp
Sincronismo
Síncrono – emissor fica bloqueado esperando resposta
Assíncrono – não fica bloqueado e recebe uma notificação quando aresposta estiver disponível
Fluxo
Discreto – partes trocam mensagens, sendo cada mensagem tratadacomo uma unidade completa de informação – ex: navegação web
Fluxo contínuo – são trocadas diversas mensagens consecutivas eestão relacionadas entre si – ex: rádio pela Internet
16/32
![Page 32: Comunicação - STD29006 Engenharia de Telecomunicaçõesdocente.ifsc.edu.br/mello/std/std-aula-03-comunicacao.pdf · 2020-02-21 · Na codi˜cação de caracteres (i.e. ASCII vs](https://reader034.vdocuments.pub/reader034/viewer/2022043003/5f84126d24123f0722073c7e/html5/thumbnails/32.jpg)
Middleware – Tipos de comunicação
PersistênciaPersistente – mensagem fica armazenada no middleware o tempoque for necessário até ser entregue para o receptor – ex: e-mail
Transitória – mensagem fica armazenada no middleware apenasenquanto emissor e receptor estiverem ativos – ex: tcp/udp
SincronismoSíncrono – emissor fica bloqueado esperando resposta
Assíncrono – não fica bloqueado e recebe uma notificação quando aresposta estiver disponível
Fluxo
Discreto – partes trocam mensagens, sendo cada mensagem tratadacomo uma unidade completa de informação – ex: navegação web
Fluxo contínuo – são trocadas diversas mensagens consecutivas eestão relacionadas entre si – ex: rádio pela Internet
16/32
![Page 33: Comunicação - STD29006 Engenharia de Telecomunicaçõesdocente.ifsc.edu.br/mello/std/std-aula-03-comunicacao.pdf · 2020-02-21 · Na codi˜cação de caracteres (i.e. ASCII vs](https://reader034.vdocuments.pub/reader034/viewer/2022043003/5f84126d24123f0722073c7e/html5/thumbnails/33.jpg)
Middleware – Tipos de comunicação
PersistênciaPersistente – mensagem fica armazenada no middleware o tempoque for necessário até ser entregue para o receptor – ex: e-mail
Transitória – mensagem fica armazenada no middleware apenasenquanto emissor e receptor estiverem ativos – ex: tcp/udp
SincronismoSíncrono – emissor fica bloqueado esperando resposta
Assíncrono – não fica bloqueado e recebe uma notificação quando aresposta estiver disponível
FluxoDiscreto – partes trocam mensagens, sendo cada mensagem tratadacomo uma unidade completa de informação – ex: navegação web
Fluxo contínuo – são trocadas diversas mensagens consecutivas eestão relacionadas entre si – ex: rádio pela Internet
16/32
![Page 34: Comunicação - STD29006 Engenharia de Telecomunicaçõesdocente.ifsc.edu.br/mello/std/std-aula-03-comunicacao.pdf · 2020-02-21 · Na codi˜cação de caracteres (i.e. ASCII vs](https://reader034.vdocuments.pub/reader034/viewer/2022043003/5f84126d24123f0722073c7e/html5/thumbnails/34.jpg)
Modelo cliente/servidor
Geralmente baseada no modelo de comunicação síncrono e compersistência transitória
Cliente e servidor precisam estar ativos ao mesmo tempo e clientefica bloqueado até receber a resposta
17/32
![Page 35: Comunicação - STD29006 Engenharia de Telecomunicaçõesdocente.ifsc.edu.br/mello/std/std-aula-03-comunicacao.pdf · 2020-02-21 · Na codi˜cação de caracteres (i.e. ASCII vs](https://reader034.vdocuments.pub/reader034/viewer/2022043003/5f84126d24123f0722073c7e/html5/thumbnails/35.jpg)
Sockets
![Page 36: Comunicação - STD29006 Engenharia de Telecomunicaçõesdocente.ifsc.edu.br/mello/std/std-aula-03-comunicacao.pdf · 2020-02-21 · Na codi˜cação de caracteres (i.e. ASCII vs](https://reader034.vdocuments.pub/reader034/viewer/2022043003/5f84126d24123f0722073c7e/html5/thumbnails/36.jpg)
Sockets
18/32
![Page 37: Comunicação - STD29006 Engenharia de Telecomunicaçõesdocente.ifsc.edu.br/mello/std/std-aula-03-comunicacao.pdf · 2020-02-21 · Na codi˜cação de caracteres (i.e. ASCII vs](https://reader034.vdocuments.pub/reader034/viewer/2022043003/5f84126d24123f0722073c7e/html5/thumbnails/37.jpg)
Cliente e Servidor com Sockets
Formas de comunicação entre processos no mesmo S.O.
Arquivos, Signals, Pipe, etc.
ls -lR /etc/ | grep passwd
Sockets permite a comunicação entre processos, executados emdiferentes máquinas
API em C criada em 1983 no 4.2 BSD UNIX, é padrão em todos S.O.
Sockets IP são identificados: protocolo de transporte, endereço IP eporta
TCP – Orientado a conexãoUDP – Orientado a datagramas (sem conexão)
19/32
![Page 38: Comunicação - STD29006 Engenharia de Telecomunicaçõesdocente.ifsc.edu.br/mello/std/std-aula-03-comunicacao.pdf · 2020-02-21 · Na codi˜cação de caracteres (i.e. ASCII vs](https://reader034.vdocuments.pub/reader034/viewer/2022043003/5f84126d24123f0722073c7e/html5/thumbnails/38.jpg)
Cliente e Servidor com Sockets
Formas de comunicação entre processos no mesmo S.O.
Arquivos, Signals, Pipe, etc.
ls -lR /etc/ | grep passwd
Sockets permite a comunicação entre processos, executados emdiferentes máquinas
API em C criada em 1983 no 4.2 BSD UNIX, é padrão em todos S.O.
Sockets IP são identificados: protocolo de transporte, endereço IP eporta
TCP – Orientado a conexãoUDP – Orientado a datagramas (sem conexão)
19/32
![Page 39: Comunicação - STD29006 Engenharia de Telecomunicaçõesdocente.ifsc.edu.br/mello/std/std-aula-03-comunicacao.pdf · 2020-02-21 · Na codi˜cação de caracteres (i.e. ASCII vs](https://reader034.vdocuments.pub/reader034/viewer/2022043003/5f84126d24123f0722073c7e/html5/thumbnails/39.jpg)
Cliente e Servidor com Sockets
20/32
![Page 40: Comunicação - STD29006 Engenharia de Telecomunicaçõesdocente.ifsc.edu.br/mello/std/std-aula-03-comunicacao.pdf · 2020-02-21 · Na codi˜cação de caracteres (i.e. ASCII vs](https://reader034.vdocuments.pub/reader034/viewer/2022043003/5f84126d24123f0722073c7e/html5/thumbnails/40.jpg)
Cliente e Servidor com Sockets TCP
21/32
![Page 41: Comunicação - STD29006 Engenharia de Telecomunicaçõesdocente.ifsc.edu.br/mello/std/std-aula-03-comunicacao.pdf · 2020-02-21 · Na codi˜cação de caracteres (i.e. ASCII vs](https://reader034.vdocuments.pub/reader034/viewer/2022043003/5f84126d24123f0722073c7e/html5/thumbnails/41.jpg)
Código Python: cliente e Servidor com Sockets TCP
import socket
serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
serversocket.bind(('localhost', 1234))
serversocket.listen(5)
(clientsocket, address) = serversocket.accept()
while True:
mensagem = clientsocket.recv(1024)
if not mensagem: break
print("Mensagem recebida do cliente: {}".format(mensagem))
clientsocket.send(b"Oi, tudo bem?")
clientsocket.close()
Cliente
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(("127.0.0.1", 1234))
s.send(b"ola")
resposta = s.recv(1024)
print("Resposta do servidor: {}".format(resposta.decode()))
s.close()
22/32
![Page 42: Comunicação - STD29006 Engenharia de Telecomunicaçõesdocente.ifsc.edu.br/mello/std/std-aula-03-comunicacao.pdf · 2020-02-21 · Na codi˜cação de caracteres (i.e. ASCII vs](https://reader034.vdocuments.pub/reader034/viewer/2022043003/5f84126d24123f0722073c7e/html5/thumbnails/42.jpg)
Cliente e Servidor com Sockets UDP
23/32
![Page 43: Comunicação - STD29006 Engenharia de Telecomunicaçõesdocente.ifsc.edu.br/mello/std/std-aula-03-comunicacao.pdf · 2020-02-21 · Na codi˜cação de caracteres (i.e. ASCII vs](https://reader034.vdocuments.pub/reader034/viewer/2022043003/5f84126d24123f0722073c7e/html5/thumbnails/43.jpg)
Protocolo definido entre Cliente e Servidor
24/32
![Page 44: Comunicação - STD29006 Engenharia de Telecomunicaçõesdocente.ifsc.edu.br/mello/std/std-aula-03-comunicacao.pdf · 2020-02-21 · Na codi˜cação de caracteres (i.e. ASCII vs](https://reader034.vdocuments.pub/reader034/viewer/2022043003/5f84126d24123f0722073c7e/html5/thumbnails/44.jpg)
Protocolo definido entre Cliente e Servidor – em Java
Servidor
OutputStream os = conexao.getOutputStream();
DataOutputStream dout = new DataOutputStream(os);
dout.writeUTF("duke.png"); //1
dout.writeLong(31.339); // 2
dout.write(blocos); // 3
Cliente
Socket conexao = new Socket("127.0.0.1", 1234);
InputStream is = conexao.getInputStream();
DataInputStream dis = new DataInputStream(is);
String nome = dis.readUTF(); //1
long tamanhoArq = dis.readLong(); //2
byte[] arq = dis.read(blocos, 0, tamanhoArq); //3
25/32
![Page 45: Comunicação - STD29006 Engenharia de Telecomunicaçõesdocente.ifsc.edu.br/mello/std/std-aula-03-comunicacao.pdf · 2020-02-21 · Na codi˜cação de caracteres (i.e. ASCII vs](https://reader034.vdocuments.pub/reader034/viewer/2022043003/5f84126d24123f0722073c7e/html5/thumbnails/45.jpg)
Transmissão de dados pela rede
![Page 46: Comunicação - STD29006 Engenharia de Telecomunicaçõesdocente.ifsc.edu.br/mello/std/std-aula-03-comunicacao.pdf · 2020-02-21 · Na codi˜cação de caracteres (i.e. ASCII vs](https://reader034.vdocuments.pub/reader034/viewer/2022043003/5f84126d24123f0722073c7e/html5/thumbnails/46.jpg)
Transmissão de dados pela rede
Transmissão de dados pela rede requer um acordo prévio entrecliente e servidor para que ambos possam representar os dadoscorretamente em seus ambientes
Mensagens são transmitidas como fluxos de bytes
Máquinas distintas podem ter diferençaNa ordenação de bytes
Na quantidade de bytes para representar inteiros
Na representação de valores reais
Na codificação de caracteres (i.e. ASCII vs UNICODE)
26/32
![Page 47: Comunicação - STD29006 Engenharia de Telecomunicaçõesdocente.ifsc.edu.br/mello/std/std-aula-03-comunicacao.pdf · 2020-02-21 · Na codi˜cação de caracteres (i.e. ASCII vs](https://reader034.vdocuments.pub/reader034/viewer/2022043003/5f84126d24123f0722073c7e/html5/thumbnails/47.jpg)
Heterogeneidade de representação de dados
Os processos cliente e servidor podem ser executados emdiferentes arquiteturas de máquinas (i.e. Intel versus PowerPC)
A extremidade (endianness) se refere à ordem usada pararepresentar valores numéricos na memória ou quando transmitidopela rede
big-endian – bytes em ordem decrescente do seu peso numérico –byte mais significativo é armazenado primeiro
little-endian – bytes em ordem crescente do seu peso numérico –byte menos significativo é armazenado primeiro
Fazendo uma analogia com a escrita de um número 123 no papel123 (big-endian)
321 (little-endian)
27/32
![Page 48: Comunicação - STD29006 Engenharia de Telecomunicaçõesdocente.ifsc.edu.br/mello/std/std-aula-03-comunicacao.pdf · 2020-02-21 · Na codi˜cação de caracteres (i.e. ASCII vs](https://reader034.vdocuments.pub/reader034/viewer/2022043003/5f84126d24123f0722073c7e/html5/thumbnails/48.jpg)
Heterogeneidade de representação de dados
Arquitetura x86-64 usa little-endian (convenção da Intel)
Poucas arquiteturas (PowerPC antigo, Xilinx MicroBlaze, etc) usam obig-endian, porém foi convencionado pela IETF para ser usado pelosprotocolos da Internet
Cabeçalho IP usa big-endian
bi-endian podem operar com ambas (ARM, MIPS, IA-64)
27/32
![Page 49: Comunicação - STD29006 Engenharia de Telecomunicaçõesdocente.ifsc.edu.br/mello/std/std-aula-03-comunicacao.pdf · 2020-02-21 · Na codi˜cação de caracteres (i.e. ASCII vs](https://reader034.vdocuments.pub/reader034/viewer/2022043003/5f84126d24123f0722073c7e/html5/thumbnails/49.jpg)
Quantidade de bytes para representar um número inteiro
Em Java o tipo primitivo long sempre ocupa 8 bytes
Na linguagem C depende da arquitetura de máquina
#include<limits.h>
int main(void){
int i; long l;
printf("%ld, %d",sizeof(i),INT_MAX);
printf("%ld, %ld",sizeof(l),LONG_MAX);
}
/* Resultado em maquina 64bits */
4, 2147483647
8, 9223372036854775807
/* Resultado em maquina 32bits */
4, 2147483647
4, 2147483647
28/32
![Page 50: Comunicação - STD29006 Engenharia de Telecomunicaçõesdocente.ifsc.edu.br/mello/std/std-aula-03-comunicacao.pdf · 2020-02-21 · Na codi˜cação de caracteres (i.e. ASCII vs](https://reader034.vdocuments.pub/reader034/viewer/2022043003/5f84126d24123f0722073c7e/html5/thumbnails/50.jpg)
Codificação de caracteres
01 byte para representar um caracter em ASCII
De 01 a 04 bytes para representar um caracter em UTF-8
RFC 3629 define o UTF-8 como elemento padrão dos protocolos daInternet
Python 3 tem o Unicode como o padrão para texto
JVM usa o padrão do sistema operacionalExiste uma proposta de padrão para tornar o UTF-8 como acodificação padrão para toda API do JDK
29/32
![Page 51: Comunicação - STD29006 Engenharia de Telecomunicaçõesdocente.ifsc.edu.br/mello/std/std-aula-03-comunicacao.pdf · 2020-02-21 · Na codi˜cação de caracteres (i.e. ASCII vs](https://reader034.vdocuments.pub/reader034/viewer/2022043003/5f84126d24123f0722073c7e/html5/thumbnails/51.jpg)
Prática: ferramenta netcat
![Page 52: Comunicação - STD29006 Engenharia de Telecomunicaçõesdocente.ifsc.edu.br/mello/std/std-aula-03-comunicacao.pdf · 2020-02-21 · Na codi˜cação de caracteres (i.e. ASCII vs](https://reader034.vdocuments.pub/reader034/viewer/2022043003/5f84126d24123f0722073c7e/html5/thumbnails/52.jpg)
Ferramenta netcat
Servidor aceita uma única conexão e depois encerra
# Ouvir na porta 1234/TCP
nc -l 1234
# Conectar no servidor
nc IP-do-servidor 1234
Cliente enviando um arquivo para o servidor
nc -l 1234 > arquivo.txt nc IP-do-servidor 1234 < arq.txt
Usando UDP
nc -u -l 1234 nc -u IP-do-servidor 1234
Um simples servidor web
echo -e 'HTTP/1.1 200 OK\n\n <html><h1>Ola mundo</h1></html>' | nc -l
1234
30/32
![Page 53: Comunicação - STD29006 Engenharia de Telecomunicaçõesdocente.ifsc.edu.br/mello/std/std-aula-03-comunicacao.pdf · 2020-02-21 · Na codi˜cação de caracteres (i.e. ASCII vs](https://reader034.vdocuments.pub/reader034/viewer/2022043003/5f84126d24123f0722073c7e/html5/thumbnails/53.jpg)
Leitura obrigatória
Capítulo 4 do livro do COULORIS – Sistemas Distribuídos: Conceitose projeto
Capítulos sobre comunicação entre processos do livro doTANENBAUM
31/32
![Page 54: Comunicação - STD29006 Engenharia de Telecomunicaçõesdocente.ifsc.edu.br/mello/std/std-aula-03-comunicacao.pdf · 2020-02-21 · Na codi˜cação de caracteres (i.e. ASCII vs](https://reader034.vdocuments.pub/reader034/viewer/2022043003/5f84126d24123f0722073c7e/html5/thumbnails/54.jpg)
Laboratório com sockets
![Page 55: Comunicação - STD29006 Engenharia de Telecomunicaçõesdocente.ifsc.edu.br/mello/std/std-aula-03-comunicacao.pdf · 2020-02-21 · Na codi˜cação de caracteres (i.e. ASCII vs](https://reader034.vdocuments.pub/reader034/viewer/2022043003/5f84126d24123f0722073c7e/html5/thumbnails/55.jpg)
Aulas baseadas em
TANENBAUM, ANDREW S.; STEEN, MAARTEN VANSISTEMAS DISTRIBUIDOS: PRINCÍPIOS E PARADIGMASCOULOURIS, GEORGE; KINDBERG, TIM; DOLLIMORE, JEANSISTEMAS DISTRIBUÍDOS: CONCEITOS E PROJETOPAUL KRZYZANOWSKIDISTRIBUTED SYSTEMS – RUTGERS UNIVERSITY
32/32