comunicação em sistemas distribuídosmeusite.mackenzie.com.br/mariofci/com_socket.pdf ·...

58
Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática Disciplina de Sistemas Distribuídos Comunicação em Sistemas Distribuídos

Upload: truongxuyen

Post on 09-Nov-2018

219 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Comunicação em Sistemas Distribuídosmeusite.mackenzie.com.br/mariofci/COM_Socket.pdf · Disciplina de Sistemas Distribuídos Comunicação em Sistemas ... aplicativos, como correio

Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática

Disciplina de Sistemas Distribuídos

Comunicação em Sistemas Distribuídos

Page 2: Comunicação em Sistemas Distribuídosmeusite.mackenzie.com.br/mariofci/COM_Socket.pdf · Disciplina de Sistemas Distribuídos Comunicação em Sistemas ... aplicativos, como correio

Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática

Disciplina de Sistemas Distribuídos

Objetivos

• Estudar os modelos de comunicação nos Sistemas Operacionais de

Rede.

• Apresentar as características da camada de Transporte e seus

protocolos.

• Estudar as principais formas de inter-processos.

• Apresentar os principais modelos de Middleware.

• Message-oriented Middleware.

• Remote Procedure Call

• Remote Metod Invocation

• CORBA

• Transaction Processing Monitor.

Page 3: Comunicação em Sistemas Distribuídosmeusite.mackenzie.com.br/mariofci/COM_Socket.pdf · Disciplina de Sistemas Distribuídos Comunicação em Sistemas ... aplicativos, como correio

Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática

Disciplina de Sistemas Distribuídos

A Finalidade do Modelo de Referência OSI

•Open Systems Interconnections

criado pela ISO (International

Organization for Standardization)

Objetivos:

• Reduzir a complexidade

• Padronizar as interfaces

• Facilitar a engenharia modular

• Garantir a interoperabilidade

• Acelerar a evolução

• Reduzir conflitos entre equipamentos

• Simplificar o desenvolvimento

Aplicação

Apresentação

Sessão

Transporte

Rede

Enlace

Físico

Page 4: Comunicação em Sistemas Distribuídosmeusite.mackenzie.com.br/mariofci/COM_Socket.pdf · Disciplina de Sistemas Distribuídos Comunicação em Sistemas ... aplicativos, como correio

Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática

Disciplina de Sistemas Distribuídos

Camadas do Modelo OSI - Aplicação

Serviços da rede para as aplicações

Disponibiliza serviços da rede para os diversos

aplicativos, como correio eletrônico, FTP,

Emulação de terminal, E-commerce, etc)

• Contempla as tecnologias que permitem ao

software do usuário a utilização dos recursos da

rede.

• Por exemplo: um processador de texto utiliza os

serviços de transferência de arquivo para

ingressar na rede.

Aplicação

Apresentação

Sessão

Transporte

Rede

Enlace

Físico

Page 5: Comunicação em Sistemas Distribuídosmeusite.mackenzie.com.br/mariofci/COM_Socket.pdf · Disciplina de Sistemas Distribuídos Comunicação em Sistemas ... aplicativos, como correio

Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática

Disciplina de Sistemas Distribuídos

Camadas do Modelo OSI - Apresentação

Representação de dados

• Garantir que os dados sejam compreensíveis para o

sistema receptor

• Cuidar da formatação e codificação dos dados

• Estruturar e eventualmente converter os dados

• Negociar e compatibilizar a sintaxe com a camada de

aplicação

• Pode ocorrer compressão, criptografia ou

decodificação dos dados

• Exemplos de protocolos de apresentação: MPEG,

JPEG, GIF, ASCII, etc

Aplicação

Apresentação

Sessão

Transporte

Rede

Enlace

Físico

Page 6: Comunicação em Sistemas Distribuídosmeusite.mackenzie.com.br/mariofci/COM_Socket.pdf · Disciplina de Sistemas Distribuídos Comunicação em Sistemas ... aplicativos, como correio

Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática

Disciplina de Sistemas Distribuídos

Camadas do Modelo OSI - Sessão

Comunicação interhosts

• Estabelece, gerencia, regulamenta e finaliza sessões

entre as apresentações

• Sessões de comunicação consiste em requisições e resposta a serviços que ocorrem entre as aplicações localizadas em equipamentos de rede diferentes.

• Oferece recursos para sincronismo entre aplicações em hosts diferentes

• Coordena os direitos de acesso

• Fornece relatórios acessibilidade

• Exemplos de protocolos de sessão: Sistemas operacionais, como Windows, Novel Netware, MAC OS

Aplicação

Apresentação

Sessão

Transporte

Rede

Enlace

Físico

Page 7: Comunicação em Sistemas Distribuídosmeusite.mackenzie.com.br/mariofci/COM_Socket.pdf · Disciplina de Sistemas Distribuídos Comunicação em Sistemas ... aplicativos, como correio

Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática

Disciplina de Sistemas Distribuídos

Camadas do Modelo OSI - Transporte

Conexões ponto a ponto

• Trata das funções de transporte de segmentos entre os

hosts

• Responsável pela confiabilidade do transporte de dados

• Estabelece, mantém e finaliza circuitos virtuais fim-a-fim

• Fornece controle de fluxo das informações

• Mantém um serviço de transporte de dados que isola as camadas superiores (upper layers) das inferiores (data layers)

• Responsável pela qualidade de tipo de serviço requeridos pelos níveis superiores (taxa, tamanho do pacote, tempo disponível para retransmissão, controle do fluxo de dados)

• Exemplos: TCP, UDP, SPX

Aplicação

Apresentação

Sessão

Transporte

Rede

Enlace

Físico

Page 8: Comunicação em Sistemas Distribuídosmeusite.mackenzie.com.br/mariofci/COM_Socket.pdf · Disciplina de Sistemas Distribuídos Comunicação em Sistemas ... aplicativos, como correio

Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática

Disciplina de Sistemas Distribuídos

Camadas do Modelo OSI - Rede

Endereçamento e Melhor Rota

• Prove o endereçamento lógico usado pelos roteadores

• Fornece seleção das melhores rotas entre redes

• Construção das tabelas de roteamento

• Serviços de InternetWorking

• Fornece conectividade de redes geograficamente separadas

• Métodos de movimentação de informações entre redes

• A camada de rede pode escolher uma rota específica e impedir que os dados sejam enviados a redes não envolvidas

• Exemplos: IP, IPX, X.25

Aplicação

Apresentação

Sessão

Transporte

Rede

Enlace

Físico

Page 9: Comunicação em Sistemas Distribuídosmeusite.mackenzie.com.br/mariofci/COM_Socket.pdf · Disciplina de Sistemas Distribuídos Comunicação em Sistemas ... aplicativos, como correio

Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática

Disciplina de Sistemas Distribuídos

Camadas do Modelo OSI - Enlace

Acessos aos meios

• Organização dos bits em grupos lógicos de informações

chamados de frames ou quadros.

• Fornece transferência de dados entre os meios

• Responsável pelo endereçamento físico e topologia de rede

• Possui funções de notificação de erros e controle de fluxo

• Função de identificar fisicamente os hosts em uma rede

• Exemplos:

LAN: Ethernet, IEEE 802.3/802.2, etc

WAN: Frame Relay, HDLC, PPP, ATM etc

Aplicação

Apresentação

Sessão

Transporte

Rede

Enlace

Físico

Page 10: Comunicação em Sistemas Distribuídosmeusite.mackenzie.com.br/mariofci/COM_Socket.pdf · Disciplina de Sistemas Distribuídos Comunicação em Sistemas ... aplicativos, como correio

Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática

Disciplina de Sistemas Distribuídos

Camadas do Modelo OSI - Física

Transmissão digital

• Cuida das estruturas e especificações físicas

• Define as especificações elétricas, mecânicas e funcionais da mídia de transmissão

• Procedimentos para ativar, manter e desativar o link físico entre sistemas

• Controla níveis de tensão, taxas de dados, distâncias máximas de transmissão e conectores físicos

• Responsável pela pinagem de cabos

• Codificação da transmissão de bits e regras de sincronização (clocking)

• Exemplo: V.24, V.35, E1, E3, SDH etc

Aplicação

Apresentação

Sessão

Transporte

Rede

Enlace

Físico

Page 11: Comunicação em Sistemas Distribuídosmeusite.mackenzie.com.br/mariofci/COM_Socket.pdf · Disciplina de Sistemas Distribuídos Comunicação em Sistemas ... aplicativos, como correio

Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática

Disciplina de Sistemas Distribuídos

Comunicação entre as Camadas do Modelo OSI

DadosA

DadosAASTR

DadosAAST

DadosAAS

DadosAA

Aplicação

Apresentação

Sessão

Transporte

Rede

Enlace

Físico

DadosAASTR

DadosAAST

DadosAAS

DadosAA

Usuário A Dados

DadosA

DadosAASTRE E

DadosAASTREF F

DadosAASTRE E

DadosAASTREF F

Aplicação

Apresentação

Sessão

Transporte

Rede

Enlace

Físico

Usuário BDados

E E

Page 12: Comunicação em Sistemas Distribuídosmeusite.mackenzie.com.br/mariofci/COM_Socket.pdf · Disciplina de Sistemas Distribuídos Comunicação em Sistemas ... aplicativos, como correio

Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática

Disciplina de Sistemas Distribuídos

Modelo de Referência OSI

Protocolo de transporte

Sessão

Transporte

Rede

Enlace

Físico

Aplicação

Apresentação

Protocolo de sessão

Protocolo de apresentação

Protocolo de aplicação

Sub-rede De Comunicações

Roteador Roteador

Rede

Enlace

Físico

Rede

Enlace

Físico

Rede

Enlace

Físico

Sessão

Transporte

Aplicação

Apresentação

Page 13: Comunicação em Sistemas Distribuídosmeusite.mackenzie.com.br/mariofci/COM_Socket.pdf · Disciplina de Sistemas Distribuídos Comunicação em Sistemas ... aplicativos, como correio

Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática

Disciplina de Sistemas Distribuídos

Overhead das camadas

Page 14: Comunicação em Sistemas Distribuídosmeusite.mackenzie.com.br/mariofci/COM_Socket.pdf · Disciplina de Sistemas Distribuídos Comunicação em Sistemas ... aplicativos, como correio

Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática

Disciplina de Sistemas Distribuídos

Data Link Layer

2-3

Page 15: Comunicação em Sistemas Distribuídosmeusite.mackenzie.com.br/mariofci/COM_Socket.pdf · Disciplina de Sistemas Distribuídos Comunicação em Sistemas ... aplicativos, como correio

Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática

Disciplina de Sistemas Distribuídos

Arquitetura TCP/IP

Page 16: Comunicação em Sistemas Distribuídosmeusite.mackenzie.com.br/mariofci/COM_Socket.pdf · Disciplina de Sistemas Distribuídos Comunicação em Sistemas ... aplicativos, como correio

Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática

Disciplina de Sistemas Distribuídos

Aplicação

Apresentação

Sessão

Transporte

Rede

Enlace

Físico

FTP, SMTP,

Telnet, etc..

TCP/UDP

IP, ICMP, ARP/RARP

Não Padronizado

Modelo OSI TCP/IP

Para redes LAN: Ethernet, Gigabit Eth, 802.3, 802.5

Para redes WAN: Frame Relay, ATM, PPP, etc

As Camadas OSI x TCP/IP

Page 17: Comunicação em Sistemas Distribuídosmeusite.mackenzie.com.br/mariofci/COM_Socket.pdf · Disciplina de Sistemas Distribuídos Comunicação em Sistemas ... aplicativos, como correio

Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática

Disciplina de Sistemas Distribuídos

Arquitetura Internet

Page 18: Comunicação em Sistemas Distribuídosmeusite.mackenzie.com.br/mariofci/COM_Socket.pdf · Disciplina de Sistemas Distribuídos Comunicação em Sistemas ... aplicativos, como correio

Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática

Disciplina de Sistemas Distribuídos

Comunicação entre processos

cliente servidor

request

reply

Comunicação lógica

kernel kernel

Comunicação real

Page 19: Comunicação em Sistemas Distribuídosmeusite.mackenzie.com.br/mariofci/COM_Socket.pdf · Disciplina de Sistemas Distribuídos Comunicação em Sistemas ... aplicativos, como correio

Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática

Disciplina de Sistemas Distribuídos

HLEN.4 bits

Número do porta de origem16 bits

Número de Seqüência32 bits

Tamanho da janela16 bits

Opções (se existir)

Dados

20 bytes

Reservado6 bits

Número da porta de destino16 bits

Número de ACK (Reconhecimento)32 bits

Checksum TCP16 bits

Ponteiro de Urgência16 bits

URG

ACK

PSH

RST

SYN

FIN

Cabeçalho TCP

Page 20: Comunicação em Sistemas Distribuídosmeusite.mackenzie.com.br/mariofci/COM_Socket.pdf · Disciplina de Sistemas Distribuídos Comunicação em Sistemas ... aplicativos, como correio

Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática

Disciplina de Sistemas Distribuídos

Triplo HandShake TCP / Estabelecer conexão

Envia SYN (seq=100 ctl=SYN)

SYN recebido

Envia SYN, ACK (seq=300 ack=101 ctl=syn,ack)

Estabelecido(seq=101 ack=301 ctl=ack)

Host A Host B

1

2

3

SYN recebido

Page 21: Comunicação em Sistemas Distribuídosmeusite.mackenzie.com.br/mariofci/COM_Socket.pdf · Disciplina de Sistemas Distribuídos Comunicação em Sistemas ... aplicativos, como correio

Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática

Disciplina de Sistemas Distribuídos

SourcePort

SourcePort

Dest.Port

Dest.Port ……

Sequence#

Sequence#

Acknowledgement#

Acknowledgement#

10281028 2323

Source Dest.

111111

Seq.

101101

Ack.

10281028 2323

Source Dest.

101010

Seq.

100100

Ack.

102810282323

Source Dest.

111111

Seq.

100100

Ack.

102810282323

Source Dest.

121212

Seq.

101101

Ack.

Recebi o #10,Agora preciso do#11.

Acabo deenviar #10

Sequencia TCP e Números de ACK

Page 22: Comunicação em Sistemas Distribuídosmeusite.mackenzie.com.br/mariofci/COM_Socket.pdf · Disciplina de Sistemas Distribuídos Comunicação em Sistemas ... aplicativos, como correio

Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática

Disciplina de Sistemas Distribuídos

Host A Host B

ACK TCP Simples

No exemplo ao lado:

• O tamanho da janela

é 1

• Com esse tamanho,

cada segmento deve

ser reconhecido (ACK)

antes que outro

segmento possa ser

enviado.

• Resulta num uso

pouco eficiente da

banda

Envia 1

Recebe 1

Envia ACK 2

Recebe ACK 2

Envia 2

Envia 3

Recebe 2

Envia ACK 3

Recebe 3

Envia ACK 4

Recebe ACK 4

Recebe ACK 3

Page 23: Comunicação em Sistemas Distribuídosmeusite.mackenzie.com.br/mariofci/COM_Socket.pdf · Disciplina de Sistemas Distribuídos Comunicação em Sistemas ... aplicativos, como correio

Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática

Disciplina de Sistemas Distribuídos

Janela Deslizante TCP

Host A Host B

Envia 1

Envia 2

Envia 3 Recebe 1

Recebe 2

Recebe 3

Envia ACK 4

Recebe ACK 4

Envia 4

Envia 5

Envia 6Recebe 4

Recebe 5

Recebe 6

Envia ACK 7

Recebe ACK 7

No exemplo ao lado:

• O tamanho da janela é 3

• Um tamanho de janela

maior permite que mais

dados sejam transmitidos

enquanto se espera um

reconhecimento.

• O termo janela deslizante

se refere ao fato do

tamanho da janela se

adequar dinamicamente

durante a sessão TCP.

• A janela deslizante

possibilita o uso otimizado

da banda

Page 24: Comunicação em Sistemas Distribuídosmeusite.mackenzie.com.br/mariofci/COM_Socket.pdf · Disciplina de Sistemas Distribuídos Comunicação em Sistemas ... aplicativos, como correio

Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática

Disciplina de Sistemas Distribuídos

Client-Server TCP

Page 25: Comunicação em Sistemas Distribuídosmeusite.mackenzie.com.br/mariofci/COM_Socket.pdf · Disciplina de Sistemas Distribuídos Comunicação em Sistemas ... aplicativos, como correio

Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática

Disciplina de Sistemas Distribuídos

• Protocolo de camada 4

• Opera em modo não orientado à conexão (connection less) - RFC 768

• Oferece protocolo sem confiabilidade

• Não há campos de seqüência ou de reconhecimento

• Os protocolos da camada de aplicação (superiores) devem prover reconhecimento para haver confiabilidade.

• Os protocolos que utilizam UDP são TFTP (Trivial File Transfer Protocol), SNMP (Simple Network Management Protocol), NFS (Network File System) e DNS (Domain Name System)

• Possibilita várias conexões UDP simultâneas no mesmo host

Protocolo UDP - User Datagram Protocol

Page 26: Comunicação em Sistemas Distribuídosmeusite.mackenzie.com.br/mariofci/COM_Socket.pdf · Disciplina de Sistemas Distribuídos Comunicação em Sistemas ... aplicativos, como correio

Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática

Disciplina de Sistemas Distribuídos

Formato do Segmento UDP

Número do porta de origem16 bits

Dados

8octetos

Número da porta de destino16 bits

Comprimento16 bits

Checksum16 bits

Page 27: Comunicação em Sistemas Distribuídosmeusite.mackenzie.com.br/mariofci/COM_Socket.pdf · Disciplina de Sistemas Distribuídos Comunicação em Sistemas ... aplicativos, como correio

Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática

Disciplina de Sistemas Distribuídos

Comunicação entre processos

Em um S.D. os processos (programas em execução) se comunicam através de:

Acesso compartilhado em uma memória comum

Rede na qual estão conectados via troca de mensagens (messagepassing) ou comunicação orientada à mensagens

Esta operação é conhecida como IPC (Inter-Process Communication)

Características:

Simplicidade

Atende diferentes aplicações

Semântica simples

Atende tanto IPCs local e remoto

Eficiência

Refere-se ao custo de estabelecer e encerrar uma conexão

Confiabilidade

Manipulação de mensagens perdidas, time-out, etc..

Segurança

Deve suportar criptografia

Portabilidade

Page 28: Comunicação em Sistemas Distribuídosmeusite.mackenzie.com.br/mariofci/COM_Socket.pdf · Disciplina de Sistemas Distribuídos Comunicação em Sistemas ... aplicativos, como correio

Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática

Disciplina de Sistemas Distribuídos

Comunicação entre processos

O destino da mensagem (p. ex. um servidor) é definido através de

de duas referências: endereço IP e porta local.

Este par recebe o nome de socket.

Socket é um end-point de um enlace de comunicação de duas vias

entre dois programas rodando em um Sistema Distribuído.

Um socket é descrito por uma API (Application Programer’s Interface).

Uma API para UDP estabelece a mais simples forma de comunicação entre

processos: datagramas ou message passing.

Uma API para TCP estabelece uma conexão entre um par de processos

definido como stream.

Um par socket estabelece uma conexão entre dois end-points

As duas principais primitivas de serviço são: send e receive.

Page 29: Comunicação em Sistemas Distribuídosmeusite.mackenzie.com.br/mariofci/COM_Socket.pdf · Disciplina de Sistemas Distribuídos Comunicação em Sistemas ... aplicativos, como correio

Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática

Disciplina de Sistemas Distribuídos

Comunicação entre processos

A comunicação entre processos pode ser:Síncrona

Assíncrona

As primitivas de serviço podem ser do tipo:

BloqueadasNão bloqueadas

A comunicação segue dois modelos:Persistente

Transiente

Page 30: Comunicação em Sistemas Distribuídosmeusite.mackenzie.com.br/mariofci/COM_Socket.pdf · Disciplina de Sistemas Distribuídos Comunicação em Sistemas ... aplicativos, como correio

Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática

Disciplina de Sistemas Distribuídos

Comunicação entre processos

Comunicação síncrona

Os processos atendem a uma semântica de

sincronização. O processo transmissor da mensagem estabelece uma conexão

e aguarda a resposta do processo remoto depois de enviada a solicitação.

Comunicação assíncrona

O processo transmissor não aguarda a resposta do

servidor. Depois de bufferizada a mensagem para posterior envio, o processo

segue, sem aguardar a resposta do processo remoto.

Page 31: Comunicação em Sistemas Distribuídosmeusite.mackenzie.com.br/mariofci/COM_Socket.pdf · Disciplina de Sistemas Distribuídos Comunicação em Sistemas ... aplicativos, como correio

Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática

Disciplina de Sistemas Distribuídos

Comunicação entre processos

Técnicas para o processo remoto detectar a chegada de uma mensagem:

Polling:

Uma primitiva test permite ao receptor verificar se alguma mensagem

chegou antes de chamar a primitiva receive

Interrupt:

Uma interrupção de software é usada para notificar o processo receptor

quando chega uma mensagem e esta é armazenada no buffer

Page 32: Comunicação em Sistemas Distribuídosmeusite.mackenzie.com.br/mariofci/COM_Socket.pdf · Disciplina de Sistemas Distribuídos Comunicação em Sistemas ... aplicativos, como correio

Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática

Disciplina de Sistemas Distribuídos

Comunicação entre processos

Primitiva Bloqueante (síncrona)

Para a primitiva send – enquanto a mensagem está sendo enviada o

processo fica bloqueado

Para a primitiva receive – fica bloqueado até alguma mensagem chegar

ou até um time-out.

Primitiva não – Bloqueante (assíncrona)

Para a primitiva send – retorna o controle imediatamente antes da

mensagem ser enviada.

Para a primitiva receive – passa para o kernel o ponteiro para o buffer e

retorna imediatamente, antes de receber a mensagem.

Page 33: Comunicação em Sistemas Distribuídosmeusite.mackenzie.com.br/mariofci/COM_Socket.pdf · Disciplina de Sistemas Distribuídos Comunicação em Sistemas ... aplicativos, como correio

Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática

Disciplina de Sistemas Distribuídos

Comunicação entre processos

Comunicação persistente

A mensagem submetida à transmissão é armazenada

nos sistemas de comunicação e assim que possível é entregue ao seu

destino, não sendo necessário queos processos send e receiver

estejam rodando

Comunicação transiente

A mensagem submetida à transmissão é armazenada

nos sistemas de comunicação, se e somente se, os processos send e

receiver estirem rodando.

Page 34: Comunicação em Sistemas Distribuídosmeusite.mackenzie.com.br/mariofci/COM_Socket.pdf · Disciplina de Sistemas Distribuídos Comunicação em Sistemas ... aplicativos, como correio

Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática

Disciplina de Sistemas Distribuídos

Comunicação entre processos

Page 35: Comunicação em Sistemas Distribuídosmeusite.mackenzie.com.br/mariofci/COM_Socket.pdf · Disciplina de Sistemas Distribuídos Comunicação em Sistemas ... aplicativos, como correio

Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática

Disciplina de Sistemas Distribuídos

Comunicação entre processos

a) Persistent asynchronous communication

b) Persistent synchronous communication

Page 36: Comunicação em Sistemas Distribuídosmeusite.mackenzie.com.br/mariofci/COM_Socket.pdf · Disciplina de Sistemas Distribuídos Comunicação em Sistemas ... aplicativos, como correio

Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática

Disciplina de Sistemas Distribuídos

Comunicação entre processos

c) Transient asynchronous communication

d) Receipt-based transient synchronous communication

Page 37: Comunicação em Sistemas Distribuídosmeusite.mackenzie.com.br/mariofci/COM_Socket.pdf · Disciplina de Sistemas Distribuídos Comunicação em Sistemas ... aplicativos, como correio

Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática

Disciplina de Sistemas Distribuídos

Comunicação entre processos

e) Delivery-based transient synchronous communication at message delivery

f) Response-based transient synchronous communication

Page 38: Comunicação em Sistemas Distribuídosmeusite.mackenzie.com.br/mariofci/COM_Socket.pdf · Disciplina de Sistemas Distribuídos Comunicação em Sistemas ... aplicativos, como correio

Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática

Disciplina de Sistemas Distribuídos

Comunicação entre processos

cliente servidor

request

reply

Comunicação lógica

kernel kernel

Comunicação real

Apresentação

Porta de entrada

Porta de conexão

PortaCliente

Conexão TCP

Page 39: Comunicação em Sistemas Distribuídosmeusite.mackenzie.com.br/mariofci/COM_Socket.pdf · Disciplina de Sistemas Distribuídos Comunicação em Sistemas ... aplicativos, como correio

Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática

Disciplina de Sistemas Distribuídos

Transport Layer

Network Layer

Data Link

Physical

Session

Presentation

Application

EthernetCamada Física

Token RingCamada Física

EIA/TIA 232 / V35

EthernetCSMA/CD

Token Ring FR/PPP

IP

TCP UDP

TELNET

FTP

SMTP

DNS

TFTP

SNMP

23 20/21 25 53 69 161

6 17

ICMP ARP RARP

Arquitetura TCP/IP - “Well Know ports”

Page 40: Comunicação em Sistemas Distribuídosmeusite.mackenzie.com.br/mariofci/COM_Socket.pdf · Disciplina de Sistemas Distribuídos Comunicação em Sistemas ... aplicativos, como correio

Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática

Disciplina de Sistemas Distribuídos

Programação de Sockets com TCP

Socket: uma porta entre o processo de aplicação e o protocolode transporte fim-a-fim (UCP or TCP)

serviço TCP: transferência confiável de bytes de um processo para outro

processo

TCP com buffers,variáveis

socket

controlado pelocriador da aplicação

controlado pelosistema

operacional

host oservidor

processo

TCP combuffers,variáveis

socket

host ouservidor

internet

controlado pelocriador da aplicação

controlado pelosistemaoperacional

Page 41: Comunicação em Sistemas Distribuídosmeusite.mackenzie.com.br/mariofci/COM_Socket.pdf · Disciplina de Sistemas Distribuídos Comunicação em Sistemas ... aplicativos, como correio

Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática

Disciplina de Sistemas Distribuídos

Sockets

Socket API

• introduzida no BSD4.1 UNIX, 1981

• explicitamente criados, usados e

liberados pelas aplicações

• paradigma cliente/servidor

• dois tipos de serviço de transporte

via socket API:

– datagrama não confiável

– confiável, orientado a cadeias de

bytes

uma interface local, controlada pelo OS (uma

“porta”) na qual osprocessos de aplicação

podem tanto enviarquanto receber

mensagens de e paraoutro processo de aplicação (local ou

remoto)

socket

Page 42: Comunicação em Sistemas Distribuídosmeusite.mackenzie.com.br/mariofci/COM_Socket.pdf · Disciplina de Sistemas Distribuídos Comunicação em Sistemas ... aplicativos, como correio

Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática

Disciplina de Sistemas Distribuídos

Berkeley Sockets (1)

Release the connectionClose

Receive some data over the connectionReceive

Send some data over the connectionSend

Actively attempt to establish a connectionConnect

Block caller until a connection request arrivesAccept

Announce willingness to accept connectionsListen

Attach a local address to a socketBind

Create a new communication endpointSocket

MeaningPrimitive

Page 43: Comunicação em Sistemas Distribuídosmeusite.mackenzie.com.br/mariofci/COM_Socket.pdf · Disciplina de Sistemas Distribuídos Comunicação em Sistemas ... aplicativos, como correio

Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática

Disciplina de Sistemas Distribuídos

Berkeley Sockets (2)

• Connection-oriented communication pattern using sockets.

Page 44: Comunicação em Sistemas Distribuídosmeusite.mackenzie.com.br/mariofci/COM_Socket.pdf · Disciplina de Sistemas Distribuídos Comunicação em Sistemas ... aplicativos, como correio

Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática

Disciplina de Sistemas Distribuídos

Sockets com TCP

Cliente deve contactar o servidor

• processo servidor já deve estar

executando antes de ser

contactado

• servidor deve ter criado socket

(porta) que aceita o contato do

cliente

Cliente contata o servidor:

• criando um socket TCP local

• especificando endereço IP e

número da porta do processo

servidor

• Quando o cliente cria o socket:

cliente TCP estabelece conexão

com o TCP do servidor

• Quando contactado pelo cliente,

o TCP do servidor cria um novo

socket para o processo servidor

comunicar-se com o cliente

– permite o servidor conversar

com múltiplos clientes

TCP fornece a transferênciaconfiável, em ordem, de bytes

(“pipe”) entre o cliente e oservidor

ponto de vista da aplicação

Page 45: Comunicação em Sistemas Distribuídosmeusite.mackenzie.com.br/mariofci/COM_Socket.pdf · Disciplina de Sistemas Distribuídos Comunicação em Sistemas ... aplicativos, como correio

Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática

Disciplina de Sistemas Distribuídos

Exemplo de aplicação cliente-

servidor:

• cliente lê linha da entrada padrão

do sistema (inFromUser stream)

, envia para o servidor via socket

(outToServer stream)

• servidor lê linha do socket

• servidor converte linha para letras

maiúsculas e envia de volta ao

cliente

• cliente lê a linha modificada

através do (inFromServer

stream)

outT

oS

erv

er

para rede da rede

inF

rom

Serv

er

inF

rom

User

teclado monitor

Process

clientSocket

input

stream

input

stream

output

stream

TCPsocket

stream de entrada:

seqüência de bytes

para dentro do processostream de saída:

seqüência de bytes

para fora do processo

processo

cliente

TCP socketcliente

Sockets com TCP

Page 46: Comunicação em Sistemas Distribuídosmeusite.mackenzie.com.br/mariofci/COM_Socket.pdf · Disciplina de Sistemas Distribuídos Comunicação em Sistemas ... aplicativos, como correio

Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática

Disciplina de Sistemas Distribuídos

Interação Cliente/servidor: TCP

espera por pedidode conexão entranteconnectionSocket =welcomeSocket.accept()

cria socket,port=x, para

solicitação entrante:welcomeSocket =

ServerSocket()

cria socket,conecta com hostid, port=xclientSocket =

Socket()

fechaconnectionSocket

lê resposta declientSocket

fechaclientSocket

Servidor (executando em hostid) Cliente

envia pedido usandoclientSocketlê pedido de

connectionSocket

escreve resposta paraconnectionSocket

TCP estabel. de conexão

Page 47: Comunicação em Sistemas Distribuídosmeusite.mackenzie.com.br/mariofci/COM_Socket.pdf · Disciplina de Sistemas Distribuídos Comunicação em Sistemas ... aplicativos, como correio

Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática

Disciplina de Sistemas Distribuídos

Exemplo: cliente Java (TCP)

import java.io.*;

import java.net.*;

class TCPClient {

public static void main(String argv[]) throws Exception

{

String sentence;

String modifiedSentence;

BufferedReader inFromUser =

new BufferedReader(new InputStreamReader(System.in));

Socket clientSocket = new Socket("hostname", 6789);

DataOutputStream outToServer =

new DataOutputStream(clientSocket.getOutputStream());

Criastream de entrada

Criasocket cliente,

conecta ao servidor

Criastream de saídaligado ao socket

Page 48: Comunicação em Sistemas Distribuídosmeusite.mackenzie.com.br/mariofci/COM_Socket.pdf · Disciplina de Sistemas Distribuídos Comunicação em Sistemas ... aplicativos, como correio

Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática

Disciplina de Sistemas Distribuídos

Exemplo: cliente Java (TCP), cont.

BufferedReader inFromServer =

new BufferedReader(new

InputStreamReader(clientSocket.getInputStream()));

sentence = inFromUser.readLine();

outToServer.writeBytes(sentence + '\n');

modifiedSentence = inFromServer.readLine();

System.out.println("FROM SERVER: " + modifiedSentence);

clientSocket.close();

}

}

Criastream de entrada

ligado ao socket

Envia linhapara o servidor

Lê linhado servidor

Page 49: Comunicação em Sistemas Distribuídosmeusite.mackenzie.com.br/mariofci/COM_Socket.pdf · Disciplina de Sistemas Distribuídos Comunicação em Sistemas ... aplicativos, como correio

Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática

Disciplina de Sistemas Distribuídos

Exemplo: servidor Java (TCP)

import java.io.*;

import java.net.*;

class TCPServer {

public static void main(String argv[]) throws Exception

{

String clientSentence;

String capitalizedSentence;

ServerSocket welcomeSocket = new ServerSocket(6789);

while(true) {

Socket connectionSocket = welcomeSocket.accept();

BufferedReader inFromClient =

new BufferedReader(new

InputStreamReader(connectionSocket.getInputStream()));

Criasocket de aceitação

na porta 6789

Espera, no socketde aceitação por

contato do cliente

Cria stream deentrada, ligado

ao socket

Page 50: Comunicação em Sistemas Distribuídosmeusite.mackenzie.com.br/mariofci/COM_Socket.pdf · Disciplina de Sistemas Distribuídos Comunicação em Sistemas ... aplicativos, como correio

Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática

Disciplina de Sistemas Distribuídos

Exemplo: servidor Java (cont)

DataOutputStream outToClient =

new DataOutputStream(connectionSocket.getOutputStream());

clientSentence = inFromClient.readLine();

capitalizedSentence = clientSentence.toUpperCase() + '\n';

outToClient.writeBytes(capitalizedSentence);

}

}

}

Lê linha dosocket

Cria stream de saída, ligado ao

socket

Escreve linhapara o socket

Fim do while loop,retorne e espere poroutra conexão do cliente

Page 51: Comunicação em Sistemas Distribuídosmeusite.mackenzie.com.br/mariofci/COM_Socket.pdf · Disciplina de Sistemas Distribuídos Comunicação em Sistemas ... aplicativos, como correio

Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática

Disciplina de Sistemas Distribuídos

Sockets com UDP

UDP: não há conexão entre o cliente e o servidor

• não existe apresentação

• transmissor enviaexplicitamente endereço IP e porta de destino em cadamensagem

• servidor deve extrair o endereçoIP e porta do transmissor de cada datagrama recebido

• UDP: dados transmitidospodem ser recebidos foram de ordem ou perdidos

ponto de vista da aplicaçãoUDP fornece a transferência

não confiável de grupos de bytes(“datagramas”) entre o cliente e o

servidor

Page 52: Comunicação em Sistemas Distribuídosmeusite.mackenzie.com.br/mariofci/COM_Socket.pdf · Disciplina de Sistemas Distribuídos Comunicação em Sistemas ... aplicativos, como correio

Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática

Disciplina de Sistemas Distribuídos

Interação Cliente/servidor: UDP

fechaclientSocket

Servidor (executando hostid)

lê resposta declientSocket

cria socket,

clientSocket = DatagramSocket()

Cliente

Cria, endereço (hostid, port=x,

envia datagrama de pedidousando clientSocket

cria socket,port=x, para

solicitação entrante:serverSocket = DatagramSocket()

lê pedido de:serverSocket

escreve resposta paraserverSocketespecificando endereçodo host cliente enúmero da porta

Page 53: Comunicação em Sistemas Distribuídosmeusite.mackenzie.com.br/mariofci/COM_Socket.pdf · Disciplina de Sistemas Distribuídos Comunicação em Sistemas ... aplicativos, como correio

Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática

Disciplina de Sistemas Distribuídos

Exemplo: cliente Java (UDP)

sendP

acket

para rede da rede

receiv

eP

acket

inF

rom

User

teclado monitor

Process

clientSocket

pacote

UDP

stream

de entrada

pacote

UDP

UDPsocket

Saída: envia pacote(TCP envia “byte stream”)

Entrada: recebepacote (TCP recebe “byte stream”)

processo

cliente

socket UDP cliente

Page 54: Comunicação em Sistemas Distribuídosmeusite.mackenzie.com.br/mariofci/COM_Socket.pdf · Disciplina de Sistemas Distribuídos Comunicação em Sistemas ... aplicativos, como correio

Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática

Disciplina de Sistemas Distribuídos

Exemplo: cliente Java (UDP)

import java.io.*;

import java.net.*;

class UDPClient {

public static void main(String args[]) throws Exception

{

BufferedReader inFromUser =

new BufferedReader(new InputStreamReader(System.in));

DatagramSocket clientSocket = new DatagramSocket();

InetAddress IPAddress = InetAddress.getByName("hostname");

byte[] sendData = new byte[1024];

byte[] receiveData = new byte[1024];

String sentence = inFromUser.readLine();

sendData = sentence.getBytes();

Criastream de entrada

Criasocket cliente

Transladanome do host para

endereço IPusando DNS

Page 55: Comunicação em Sistemas Distribuídosmeusite.mackenzie.com.br/mariofci/COM_Socket.pdf · Disciplina de Sistemas Distribuídos Comunicação em Sistemas ... aplicativos, como correio

Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática

Disciplina de Sistemas Distribuídos

Exemplo: cliente Java (UDP), cont.

DatagramPacket sendPacket =

new DatagramPacket(sendData, sendData.length, IPAddress, 9876);

clientSocket.send(sendPacket);

DatagramPacket receivePacket =

new DatagramPacket(receiveData, receiveData.length);

clientSocket.receive(receivePacket);

String modifiedSentence =

new String(receivePacket.getData());

System.out.println("FROM SERVER:" + modifiedSentence);

clientSocket.close();

}

}

Cria datagrama comdados a enviar,

tamanho, endereço IP porta

Envia datagramapara servidor

Lê datagramado servidor

Page 56: Comunicação em Sistemas Distribuídosmeusite.mackenzie.com.br/mariofci/COM_Socket.pdf · Disciplina de Sistemas Distribuídos Comunicação em Sistemas ... aplicativos, como correio

Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática

Disciplina de Sistemas Distribuídos

Exemplo: servidor Java (UDP)

import java.io.*;

import java.net.*;

class UDPServer {

public static void main(String args[]) throws Exception

{

DatagramSocket serverSocket = new DatagramSocket(9876);

byte[] receiveData = new byte[1024];

byte[] sendData = new byte[1024];

while(true)

{

DatagramPacket receivePacket =

new DatagramPacket(receiveData, receiveData.length);

serverSocket.receive(receivePacket);

Criasocket datagrama

na porta 9876

Cria espaço paradatagramas recebidos

Recebedatagram

a

Page 57: Comunicação em Sistemas Distribuídosmeusite.mackenzie.com.br/mariofci/COM_Socket.pdf · Disciplina de Sistemas Distribuídos Comunicação em Sistemas ... aplicativos, como correio

Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática

Disciplina de Sistemas Distribuídos

Exemplo: servidor Java, (cont.)

String sentence = new String(receivePacket.getData());

InetAddress IPAddress = receivePacket.getAddress();

int port = receivePacket.getPort();

String capitalizedSentence = sentence.toUpperCase();

sendData = capitalizedSentence.getBytes();

DatagramPacket sendPacket =

new DatagramPacket(sendData, sendData.length, IPAddress,

port);

serverSocket.send(sendPacket);

}

}

}

Obtém endereço IP e número da porta

do transmissor

Escreve o datagrama para

dentro do socket

Termina o while loop,retorna e espera poroutro datagrama

Cria datagramapara enviar ao cliente

Page 58: Comunicação em Sistemas Distribuídosmeusite.mackenzie.com.br/mariofci/COM_Socket.pdf · Disciplina de Sistemas Distribuídos Comunicação em Sistemas ... aplicativos, como correio

Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática

Disciplina de Sistemas Distribuídos

The Message-Passing Interface (MPI)

Check if there is an incoming message, but do not blockMPI_irecv

Receive a message; block if there are noneMPI_recv

Pass reference to outgoing message, and wait until receipt startsMPI_issend

Pass reference to outgoing message, and continueMPI_isend

Send a message and wait for replyMPI_sendrecv

Send a message and wait until receipt startsMPI_ssend

Send a message and wait until copied to local or remote bufferMPI_send

Append outgoing message to a local send bufferMPI_bsend

MeaningPrimitive