Baixe o app para aproveitar ainda mais
Prévia do material em texto
Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática Disciplina de Sistemas Distribuídos Comunicação em Sistemas Distribuídos 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. 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 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 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 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 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 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 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 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 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 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 Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática Disciplina de Sistemas Distribuídos Overhead das camadas Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática Disciplina de Sistemas Distribuídos Data Link Layer 2-3 Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática Disciplina de Sistemas Distribuídos Arquitetura TCP/IP 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: FrameRelay, ATM, PPP, etc As Camadas OSI x TCP/IP Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática Disciplina de Sistemas Distribuídos Arquitetura Internet 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 Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática Disciplina de Sistemas Distribuídos HLEN. 4 bits Número do porta de origem 16 bits Número de Seqüência 32 bits Tamanho da janela 16 bits Opções (se existir) Dados 20 bytes Reservado 6 bits Número da porta de destino 16 bits Número de ACK (Reconhecimento) 32 bits Checksum TCP 16 bits Ponteiro de Urgência 16 bits U R G A C K P S H R S T S Y N F I N Cabeçalho TCP 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 Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática Disciplina de Sistemas Distribuídos Source Port Source Port 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 de enviar #10 Sequencia TCP e Números de ACK 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 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 6 Recebe 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 Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática Disciplina de Sistemas Distribuídos Client-Server TCP 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 Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática Disciplina de Sistemas Distribuídos Formato do Segmento UDP Número do porta de origem 16 bits Dados 8 octetos Número da porta de destino 16 bits Comprimento 16 bits Checksum 16 bits 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 (message passing) 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 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. 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: Bloqueadas Não bloqueadas A comunicação segue dois modelos: Persistente Transiente 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. 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 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. Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática Disciplina de Sistemas Distribuídos Comunicação entre processosComunicaçã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. Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática Disciplina de Sistemas Distribuídos Comunicação entre processos 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 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 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 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 Porta Cliente Conexão TCP 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 Ethernet Camada Física Token Ring Camada Física EIA/TIA 232 / V35 Ethernet CSMA/CD Token Ring FR/PPP IP TCP UDP T E L N E T F T P S M T P D N S T F T P S N M P 23 20/21 25 53 69 161 6 17 ICMP ARP RARP Arquitetura TCP/IP - “Well Know ports” 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 protocolo de 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 pelo criador da aplicação controlado pelo sistema operacional host o servidor processo TCP com buffers, variáveis socket host ou servidor internet controlado pelo criador da aplicação controlado pelo sistema operacional 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 os processos de aplicação podem tanto enviar quanto receber mensagens de e para outro processo de aplicação (local ou remoto) socket 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 Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática Disciplina de Sistemas Distribuídos Berkeley Sockets (2) • Connection-oriented communication pattern using sockets. 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ência confiável, em ordem, de bytes (“pipe”) entre o cliente e o servidor ponto de vista da aplicação 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) o u t T o S e r v e r para rede da rede i n F r o m S e r v e r i n F r o m U s e r teclado monitor Process clientSocket input stream input stream output stream TCP socket stream de entrada: seqüência de bytes para dentro do processo stream de saída: seqüência de bytes para fora do processo process o cliente TCP socket cliente Sockets com TCP Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática Disciplina de Sistemas Distribuídos Interação Cliente/servidor: TCP espera por pedido de conexão entrante connectionSocket = welcomeSocket.accept() cria socket, port=x, para solicitação entrante: welcomeSocket = ServerSocket() cria socket, conecta com hostid, port=x clientSocket = Socket() fecha connectionSocket lê resposta de clientSocket fecha clientSocket Servidor (executando em hostid) Cliente envia pedido usando clientSocketlê pedido de connectionSocket escreve resposta para connectionSocket TCP estabel. de conexão 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()); Cria stream de entrada Cria socket cliente, conecta ao servidor Cria stream de saída ligado ao socket 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(); } } Cria stream de entrada ligado ao socket Envia linha para o servidor Lê linha do servidor Instituto Presbiteriano Mackenzie Faculdade de Computaçãoe 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())); Cria socket de aceitação na porta 6789 Espera, no socket de aceitação por contato do cliente Cria stream de entrada, ligado ao socket 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 do socket Cria stream de saída, ligado ao socket Escreve linha para o socket Fim do while loop, retorne e espere por outra conexão do cliente 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 envia explicitamente endereço IP e porta de destino em cada mensagem • servidor deve extrair o endereço IP e porta do transmissor de cada datagrama recebido • UDP: dados transmitidos podem ser recebidos foram de ordem ou perdidos ponto de vista da aplicação UDP fornece a transferência não confiável de grupos de bytes (“datagramas”) entre o cliente e o servidor Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática Disciplina de Sistemas Distribuídos Interação Cliente/servidor: UDP fecha clientSocket Servidor (executando hostid) lê resposta de clientSocket cria socket, clientSocket = DatagramSocket() Cliente Cria, endereço (hostid, port=x, envia datagrama de pedido usando clientSocket cria socket, port=x, para solicitação entrante: serverSocket = DatagramSocket() lê pedido de: serverSocket escreve resposta para serverSocket especificando endereço do host cliente e número da porta Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática Disciplina de Sistemas Distribuídos Exemplo: cliente Java (UDP) s e n d P a c k e t para rede da rede r e c e i v e P a c k e t i n F r o m U s e r teclado monitor Process clientSocket pacote UDP stream de entrada pacote UDP UDP socket Saída: envia pacote (TCP envia “byte stream”) Entrada: recebe pacote (TCP recebe “byte stream”) process o cliente socket UDP cliente 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(); Cria stream de entrada Cria socket cliente Translada nome do host para endereço IP usando DNS 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 com dados a enviar, tamanho, endereço IP porta Envia datagrama para servidor Lê datagrama do servidor 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); Cria socket datagrama na porta 9876 Cria espaço para datagramas recebidos Recebe datagram a 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 por outro datagrama Cria datagrama para enviar ao cliente 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
Compartilhar