User Datagram Protocol

Documentos relacionados
Sockets e Threads em Java

Redes de Computadores II. Programação com Sockets em Python

Resumo das Propriedades de UDP e de TCP

Network Programming. Conceitos Básicos A classe InetAddress Programação de Socket TCP Programação de Socket UDP

Redes de Computadores Programação com Sockets

Programação Paralela e Distribuída. Prof. Cidcley T. de Souza

socket Objetivo: aprender a construir aplicações cliente/servidor que se comunicam usando sockets

Programando sistemas distribuídos com objetos distribuídos na rede TCP/IP. Prof. Me. Sérgio Carlos Portari Júnior

FUNDAMENTOS DE REDES DE COMPUTADORES Unidade 5 Camada de Transporte e Aplicação. Luiz Leão

Programação de Sockets

Redes de Computadores

Programação com sockets (em Java)

Programação de sockets com TCP

Programação com Sockets

Protocolos TCP e UDP. Protocolo TCP. Protocolo TCP. A necessidade de uma comunicação segura: Transmission Control Protocol

Redes de Computadores

PROGRAMAÇÃO COM SOCKETS

Sistemas Operacionais - Básico e Avançado - Prof. Celso Maciel da Costa Mestrado em Informática - PUCRS

Comunicação entre processos

Programação de Sockets

Sockets - Conceitos Básicos. COMUNICAÇÃO ENTRE PROCESSOS Sockets. Conceitos Básicos. Tipos de Sockets

Rede de computadores Protocolos UDP. Professor Carlos Muniz

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DO RIO GRANDE DO NORTE DEPARTAMENTO ACADÊMICO DE TECNOLOGIA DA INFORMAÇÃO

Programação Orientada por Objectos com Java. Ademar Aguiar. MRSC, Programação em Comunicações

Redes de Computadores I

Prof. Marcelo Cunha Parte 6

Sistemas Distribuídos

Funções da Camada de

Java 2 Standard Edition Fundamentos de

Volnys Bernal 1. Trabalho Chat UDP. PSI 2653 Meios Eletrônicos Interativos I

REDES DE COMPUTADORES Prof. Ricardo Rodrigues Barcelar

Redes de Computadores

Sistemas Distribuídos Java Sockets

Jéfer Benedett Dörr

Arquitetura de Redes de Computadores

Mecanismos de Comunicação. Sockets em java (

Funções da. Os principais serviços oferecidos pela camada de transporte são: Controle de conexão, Fragmentação, Endereçamento e Confiabilidade.

PROTOCOLOS DE COMUNICAÇÃO

Redes TCP/IP. Prof. M.Sc. Alexandre Fraga de Araújo. INSTITUTO FEDERAL DO ESPÍRITO SANTO Campus Cachoeiro de Itapemirim

CCNA 2 Conceitos Básicos de Roteadores e Roteamento. Capítulo 8 - Mensagens de Erro e de Controle do Conjunto de Protocolos TCP/IP

Sistemas Distribuídos

Redes de Computadores e Telecomunicações - Camada de Transporte

Funcionalidades da camada de rede

Capítulo 4 - Sumário

Programação em Rede Baseada em Java. Luiz Affonso Guedes Tópicos em Redes de Computadores Programação Distribuída

Cálculo de Soma de Verificação do User Datagram Protocol

Programação com Sockets

Laboratório - Uso do Wireshark para examinar uma captura UDP DNS

Arquitetura de sistemas distribuídos

Sockets em Java. Leonardo R. Nunes - leonardo@sumersoft.com. 1. Introdução. 2. Sockets TCP/IP

Roteiro... Sistemas Distribuídos Aula 4. Troca de mensagens. Comunicação entre processos. Conceitos de SD, vantagens e desvantagens

Utilização das classes Java para comunicação TCP/IP e UDP/IP

Sistemas Distribuídos

Aula 30 - Sockets em Java

Passagem de Mensagens

Camada de Transporte. Protocolos TCP e UDP

Lista de exercícios - 1º bimestre 2016 REDES

Camada de Transporte Protocolos TCP e UDP

Níkolas Timóteo Paulino da Silva Redes de Computadores I ADS 2ºTermo

Introdução às camadas de transporte e de rede

Data and Computer Network Endereçamento IP

Nível de Transporte Portas, Protocolos UDP e TCP

Aplicações com Banco de Dados e Cliente-Servidor

Rede de computadores Cliente- servidor. Professor Carlos Muniz

Redes de Computadores

FUNDAMENTOS DE REDES DE COMPUTADORES Unidade IV Camada de Rede. Luiz Leão

Capítulo 3 Camada de transporte

Arquitetura da Internet TCP/IP

Protocolos de Rede. Protocolos em camadas

Transcrição:

User Datagram Protocol UDP: Protocolo utiliza para distinguir para qual usuário ou aplicativo deve ser encaminhado um datagrama destinado a uma máquina que esteja executando mais de um processo. Problemas: Os processos são criados e destruídos dinâmicamente e os transmissores raramente sabem o bastante para identificar um processo de uma outra máquina. Deseja-se substituir os processos (no caso de uma reinicialização da máquina) sem informar a todos os transmissores. Como permitir que um transmissor entre em contato com um servidor (de arquivos, por exemplo) sem saber qual processo na máquina de destino.

Solução: User Datagram Protocol Portas de protocolo: São pontos de destino abstratos, identificadas por um número inteiro positivo. Elas utilizam buffer, que modo que os dados que chegarem antes que um processo esteja pronto para aceitá-los não sejam perdidos. Os buffers são implementados como filas. Para comunicar-se com uma porta exterior, um transmissor precisa conhecer tanto o endereço IP como o número da porta na máquina de destino. Além da porta de destino, uma mensagem UDP deve ter também a informação sobre a porta de origem para onde as respostas deverão ser endereçadas.

User Datagram Protocol Assim como o IP, o UDP oferece um serviço não-confiável de transmissão sem conexão. Desta forma, fica a cargo do aplicativo resolver o problema da confiabilidade, como perda de mensagens, duplicação, retardo, transmissão defeituosa e perda de conectividade. Formato de mensagens UDP: O campo Comprimento contém o número de octetos na mensagem UDP O campo Soma de Verificação é opcional, pois evita overhead em redes de alta confiabilidade.

User Datagram Protocol Pseudocabeçalho UDP Tem como finalidade verificar se a mensagem UDP atingiu o seu destino correto. O destino correto consiste em uma máquina específica e uma porta específica dentro desta máquina. O pseudocabeçalho não é transmitido junto como a mensagem UDP, mas a soma de verificação o abrange. No destino final, o pseudocabeçalho é remontado a partir do datagrama IP

User Datagram Protocol Colocação conceitual em camadas Encapsulamento UDP

User Datagram Protocol Contradição entre organização em camadas e o cálculo da soma de verificação UDP. Multiplexação: O software UDP aceita mensagens de muitos programas aplicativos e os passa ao IP. Demultiplexação: E aceita mensagens UDP recebida de IP e as passa ao programa aplicativo apropriado. Quando o UDP recebe uma mensagem, verifica se o número da porta de destino confere com uma das portas atualmente em uso. Se não houver correspondência, a mensagem é descartada e uma mensagem de erro é enviada. Caso contrário, o UDP enfileira a mensagem na porta apropriada. Se não houver espaço na fila, a mensagem é descartada e uma mensagem de erro é gerada.

User Datagram Protocol

User Datagram Protocol Como deverão ser atribuídos números de porta de protocolo? 1. Uso de autoridade central que atribua números de portas de acordo com a necessidade e publique a lista. 2. Atribuição dinâmica: Sempre que um programa necessita de uma porta, o software de rede atribui uma. Para saber que número de porta a máquina de destino está usando, o emissor enviar uma mensagem perguntando: que porta o serviço X está usando? O TCP/IP usa uma abordagem híbrida. Algumas portas são atribuídas a priori e outras são deixadas a cargo dos aplicativos.

UDP: Programação Socket Interação Cliente/Servidor usando UDP: Servidor Cria Socket: socketservidor = DatagramSocket() Lê mensagem de socketservidor Cliente Cria Socket: socketcliente = DatagramSocket() Cria endereço: host, porta de origem. Envia mensagem em socketcliente Lê resposta de socketcliente Escreve resposta em socketservidor Fecha socketcliente

Programação Socket com UDP: Exemplo usando JAVA import java.io.*; import java.net.*; public class ClienteUDP { public static void main(string argv[]) throws Exception { int porta; byte[] dadosenviados; byte[] dadosrecebidos = new byte[1024]; String frase = null; String frasemodificada = null; //argv[1] contem o numero da porta do servidor no host porta = (new Integer(argv[1])).intValue(); //Cria Stream de entrada. Redireciona entrada do teclado BufferedReader entradadousuario = new BufferedReader(new InputStreamReader(System.in)); //Cria socket cliente DatagramSocket socketcliente = new DatagramSocket(); //Localiza o host especificado na linha de comando. //A classe InetAddress contem as informacoes de end. IP do host InetAddress enderecoip = InetAddress.getByName(argv[0]);

Programação Socket com UDP: Exemplo usando JAVA //Le frase do teclado frase = entradadousuario.readline(); dadosenviados = frase.getbytes(); //Cria datagrama de envio. Em JAVA, a classe DatagramPacket e' usada para //conter as informacoes do datagrama. Estas informacoes sao: array de //bytes (dadosenviados), comprimento do array, endereco IP do destino, //porta UDP do destino. DatagramPacket datagramaenviado = new DatagramPacket(dadosEnviados, dadosenviados.length, enderecoip, porta); //Envia datagrama para servidor socketcliente.send(datagramaenviado); //Espera resposta do servidor //Cria datagrama para receber mensagem do servidor DatagramPacket datagramarecebido = new DatagramPacket(dadosRecebidos, dadosrecebidos.length); //Recebe datagrama do servidor socketcliente.receive(datagramarecebido); //Imprime resultado frasemodificada = new String(datagramaRecebido.getData()); System.out.println(enderecoIP.getHostName() + " : " + frasemodificada); //Fecha socket socketcliente.close();}}

Programação Socket com UDP: Exemplo usando JAVA import java.io.*; import java.net.*; import java.util.*; public class ServidorUDP { public static void main(string argv[]) throws Exception { byte[] dadosenviados; byte[] dadosrecebidos = new byte[1024]; String frase, frasemodificada; InetAddress enderecoipdocliente; int portadocliente; //Cria socket UDP na porta 6789 DatagramSocket socketservidor = new DatagramSocket(6789); while(true) { //Cria datagrama para receber mensagem do cliente DatagramPacket datagramarecebido = new DatagramPacket(dadosRecebidos, dadosrecebidos.length); //Recebe datagrama socketservidor.receive(datagramarecebido);

Programação Socket com UDP: Exemplo usando JAVA //O servidor deve obter o endereco IP do cliente e a porta UDP de origem. //Isto se deve ao fato do protocolo UDP ser sem conexao, ou seja, cada pacote //enviado deve conter o endereco do destino. enderecoipdocliente = datagramarecebido.getaddress(); portadocliente = datagramarecebido.getport(); //Executa o processamento. Neste caso, converte a frase para letras maiusculas frase = new String(datagramaRecebido.getData()); System.out.println(enderecoIPDoCliente.getHostName() + " : " + frase); frasemodificada = frase.touppercase(); //Prepara resposta para ser enviada ao cliente //Converte String para byte[] dadosenviados = frasemodificada.getbytes(); //Cria datagrama para enviar a resposta ao cliente DatagramPacket datagrama = new DatagramPacket(dadosEnviados, dadosenviados.length, enderecoipdocliente, portadocliente); //Envia resposta para o cliente socketservidor.send(datagrama); } } } //Para assegurar que nenhuma parte da mensagem anterior continue presente, // preencha o buffer de dados recebidos com 0. Arrays.fill(dadosRecebidos, (byte)0);

Programação Socket com UDP Resumo dos métodos utilizados: Class DatagramSocket void close() : Fecha o socket UDP. void connect(inetaddress address, int port) : Conecta o socket a um endereço remoto. void disconnect() : Desconecta o socket. InetAddress getinetaddress() : Retorna o endereço ao qual este socket esta conectado. InetAddress getlocaladdress() : Obtém o endereço local, ao qual o socket esta associado. int getlocalport() : Retorna o número da porta a qual o socket esta associado. int getport() : Retorna a porta remota deste socket. void receive(datagrampacket p) : Recebe um datagrama. void send(datagrampacket p) : Envia um datagrama. voidsetsotimeout(int timeout) : Habilita/Desabilita SO_TIMEOUT, para o tempo timeout, em milisegundos. Este é o máximo tempo que o método receive irá esperar por datagrama.