Relatório 1º Laboratório: O Java e os Sockets. Licenciatura: ETI Turma : ETC1 Grupo : rd3_t3_02 Data: 22/02/2010

Documentos relacionados
Capítulo II Modelos de Programação Distribuída

Comunicação entre processos

Relatório do 2º Guião Laboratorial de Avaliação: Encaminhamento de pacotes. Licenciatura: ETI Turma : ETC1 Grupo : rd2_t3_02 Data: 30/10/2009

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

Sockets. Introdução. Introdução. Programando para redes em Java. mecanismo de alto nível para acessar recursos na Internet.

Sistemas Distribuídos

Sockets. Bruno Guimarães Lucas Rossini

UNIVERSIDADE ESTADUAL DO OESTE DO PARANÁ CENTRO DE CIÊNCIAS EXATAS E TECNOLÓGICAS COLEGIADO DE INFORMÁTICA

Programa de Computador que funciona em Rede

Programação de Sockets

Programação de Sockets em C/C++

Camada de Transporte, protocolos TCP e UDP

Camada de Transporte. Bruno Silvério Costa

Sockets em Ruby. Curso de Tecnologia em Redes de Computadores Programação para Redes

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

Programação de sockets com TCP

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

Programação: Sockets em Java

Redes de Computadores (LTIC) 2013/14. GRUPO 1 (7 valores) 1º Teste 1 de Abril de Nome: Nº de aluno:

INF1013 MODELAGEM DE SOFTWARE

Mecanismos de Comunicação. Sockets em java (

Cliente-servidor com Sockets TCP

Programação com sockets (em Java)

Olho por olho, e o mundo acabará cego. Mohandas Gandhi

Endereços de transporte TPDU. Nível de Rede Endereço de rede. Figura 1. Entidade de transporte

Sistemas Distribuídos

Redes de Computadores II

Java : Comunicação Cliente-Servidor.

Traceroute É uma ferramenta de diagnóstico que rastreia a rota de um pacote através de uma rede de computadores e que utiliza os protocolos IP e ICMP.

Aula 30 - Sockets em Java

INSTITUTO SUPERIOR DE ENGENHARIA DE LISBOA

Trabalho de laboratório sobre ARP

Comunicação Inter-Processos. Prof. Adriano Fiorese. Conceitos Iniciais

Java Básico. Matrícula de Alunos. Marco Antonio, Arquiteto de Software TJDF Novembro/2005

Portal de Aprendizado Tutorial do Aluno

Figura 1 Tela de escolha das atividades do curso

Transporte. Sua função é: Promover uma transferência de dados confiável e econômica entre máquina de origem e máquina de destino.

4.4. UML Diagramas de interacção

Redes de Computadores. 1 Questões de múltipla escolha. TE090 - Prof. Pedroso. 17 de junho de 2015

Redes de Computadores. Trabalho de Laboratório Nº7

Lab 4 Análise de Pacotes utilizando o TCPDUMP

Trabalho de laboratório sobre DHCP

Curso de especialização em Teleinformática Disciplina Sistemas Distribuídos Prof. Tacla

Sockets com Java Parte I

Redes de Computadores I Licenciatura em Eng. Informática e de Computadores 1 o Semestre, 26 de Outubro de o Teste A

Cliente-servidor com Sockets TCP

Redes de Computadores

Java 2 Standard Edition Fundamentos de

Sistemas Distribuídos Java Sockets

Redes de Computadores (RCOMP 2014/2015)

REDES DE COMPUTADORES

Qualidade em Servicos de Rede Prof. Eduardo Maronas Monks Roteiro de Laboratorio Camada de Transporte Parte II

Redes de Computadores. Trabalho de Laboratório Nº2

6 de Julho de Exercício 23 Para que servem portas na camada de transporte?

Redes de Computadores. Camada de Transporte

Redes de Computadores. TCP Orientação à Conexão. Prof. Othon M. N. Batista Mestre em Informática

Redes de Computadores_Marcelo Furtado Pratica 2- Qualidade de serviços

Licenciatura em Eng.ª Informática Redes de Computadores - 2º Ano - 2º Semestre. Trabalho Nº 1 - Ethereal

A camada de rede do modelo OSI

PROGRAMAÇÃO ORIENTADA A OBJETOS -TRATAMENTO DE EXCEÇÕES. Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br

Trabalho de laboratório sobre ARP

PROCESSO REQUISIÇÃO PROTOCOLO DHCP

Comunicação entre Processos

Licenciatura em Engenharia Informática Sistemas Distribuídos I 2ª chamada, 6 de Julho de º Semestre, 2004/2005

FTP FILE F TRANSFER PROTOCOL. Tópicos

Redes de Computadores

INF01018 Aula Prática 1 Cliente-Servidor e Multicast

Passando pelas Camadas TCP/IP Transmissão de Dados

insfcanceof new public switch transient while byte continue extends for int null

Os protocolos de encaminhamento têm como objectivo a construção e manutenção automática das tabelas de encaminhamento.

CAPÍTULO 6 A CAMADA DE TRANSPORTE

Redes de Computadores 1ª Colecção Exercícios diversos 2 de Novembro de 2006 Arquitecturas de comunicação, controlo de acesso ao meio

Manual do Gestor da Informação do Sistema

XPontos. Manual de Instruções

Departamento de Informática

Engenharia Elétrica Eletrônica Slides 20: TCP/IP em Winsocks 2. API do Windows para programar utilizando o protocolo TCP/IP Prof. Jean Marcelo SIMÃO

Capítulo 5. Tratamento de excepções

Departamento de Informática

Curso: Redes II (Heterogênea e Convergente) Tema da Aula: Controle de Congestionamento

Laboratório nº 3: Ferramentas para verificação de conetividade IP

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

Exercícios de Revisão Java Básico

SIMULADOR DE ROTEAMENTO DE PACOTES (V. 3 20/05/2010)

Redes de Computadores

Sistemas Distribuídos Modelo Cliente-Servidor

Comunicação entre processos (grupos) COMUNICAÇÃO ENTRE PROCESSOS Comunicação de grupo. Comunicação entre processos (grupos)

Manual do Teclado de Satisfação Online WebOpinião

Redes de Computadores 1 o Exame

Programação de Sockets

Manual de Orientação GCT Gestão de Contratação. Secretaria de Estado da Fazenda Secretaria de Estado do Planejamento, Orçamento e Gestão Versão 0.

ADDRESS RESOLUTION PROTOCOL. Thiago de Almeida Correia

Capítulo 8. CICLOS. Tabela 8.1 Programa8a.f90.

Ferramentas de Modelação e Análise de Sistemas baseadas em Redes de Petri (RdP)

Aleph. Entre Bibliotecas. Reunião da REJE 09 de novembro de 2011

3. Explique o motivo pelo qual os protocolos UDP e TCP acrescentam a informação das portas (TSAP) de origem e de destino em seu cabeçalho.

Computação Distribuída

Transcrição:

Licenciaturas em Informática e Gestão de Empresas, Engenharia de Telecomunicações e Informática e Engenharia Informática Redes Digitais III Relatório 1º Laboratório: O Java e os Sockets Licenciatura: ETI Turma : ETC1 Grupo : rd3_t3_02 Data: 22/02/2010 Número do Aluno Nome do Aluno 28400 André Coelho 28428 Carlos Duque I. TCP: Cliente-Servidor I.3. Pare a captura e analise-a para validar a funcionalidade cliente - servidor e tente responder às seguintes perguntas: a) Qual o protocolo de transporte utilizado? TCP. b) Qual o porto do cliente e como este foi escolhido? O porto é o 1040, foi escolhido um porto não atribuído, de forma aleatória, dentro de uma gama utilizada normalmente pelo protocolo TCP. c) Que tipo de encerramento de ligação TCP foi utilizado (simétrico ou assimétrico)? Que alterações de código seriam necessárias para que o tipo de encerramento fosse alterado? Implemente as alterações necessárias para alterar a forma de encerrar a ligação e valide-as experimentalmente. Através da captura observámos que o cliente enviou o fyn e desligou-se de imediato, sendo este tipo de encerramento assimétrico. Todos os dados enviados posteriormente por parte do servidor serão perdidos, pois o cliente já não se encontra ligado. Para que o encerramento seja simétrico o cliente tem de enviar o fyn, avisando o servidor que se vai desligar. De seguida, o cliente aguarda pelo seu fyn + ack, enviado pelo servidor e responde com um ack, concluindo assim o encerramento de ligação, para satisfazer o protocolo de 3 vias. 1

Para encerrar o cliente de forma simétrica, pode ser usado o método shutdownoutput da classe Socket,ou seja: clientsocket.shutdownoutput(); public void shutdownoutput() throws IOException Disables the output stream for this socket. For a TCP socket, any previously written data will be sent followed by TCP's normal connection termination sequence. If you write to a socket output stream after invoking shutdownoutput() on the socket, the stream will throw an IOException. Throws: IOException - if an I/O error occurs when shutting down this socket. No PC pcx-2 arranque dois clientes em simultâneo após ter iniciado a captura de pacotes. Analisando a captura e o output produzido por cada cliente explique como é que o servidor consegue diferenciar os dois clientes, relativamente à comunicação através de sockets. O servidor distingue os dois clientes através do porto atribuído a cada um deles, são atribuídos os portos 1041 e 1042. Sendo assim, quando o servidor pretende responder ao cliente 1 encaminha a sua resposta para o porto 1041 e ao cliente 2 para o porto 1042. Tente arrancar em primeiro lugar o cliente e só depois o servidor. Recorrendo à captura efectuada, descreva o que aconteceu com mensagens pertinentes retiradas dessa captura. Ao observar esta captura podemos ver que na resposta do servidor, a flag reset [RST] está activa. Isto indica que o servidor pretende que se seja feito um reset à ligação pois não tem nenhuma ligação activa naquele porto. I.4. Como é que pode simular do lado do servidor (ver I.2) um atraso na sua resposta ao cliente? O atraso pode ser simulado através de um sleep. try { sleep(1500);} catch (InterruptedException e){ System.out.println("Delay: " + e.getmessage());} 2

Que mensagem aparece no cliente quando existe uma situação de timeout? Justifique-a. A mensagem que aparece do lado do cliente é IO: Read timed out, valor de e.getmessage(). Quando ocorre timeout é lançada uma IOException que é apanhada pelo catch onde é dado o output de descrição do erro. catch (IOException e) { System.out.println("IO: " + e.getmessage());} Poderia ser útil usar um temporizador do lado do servidor? Se sim, altere o código e experimente. Poderia ser utilizado o método setsotimeout, da classe ServerSocket, para implementar um temporizador. public void setsotimeout(int timeout) throws SocketException Enable/disable SO_TIMEOUT with the specified timeout, in milliseconds. With this option set to a non-zero timeout, a call to accept() for this ServerSocket will block for only this amount of time. If the timeout expires, a java.net.sockettimeoutexception is raised, though the ServerSocket is still valid. The option must be enabled prior to entering the blocking operation to have effect. The timeout must be > 0. A timeout of zero is interpreted as an infinite timeout. 3

II. UDP: Cliente-Servidor Pare a captura e analise-a para validar a funcionalidade cliente-servidor e tente responder às seguintes perguntas: a) Qual o porto do servidor? O porto do servidor é o 9876 b) Qual o porto do cliente e como este foi escolhido? O porto do cliente é o 1049 e tal como no exemplo do protocolo TCP, foi escolhido um porto livre dentro de uma gama normalmente utilizada pelo protocolo UDP. c) Verifique no código e depois confirme na captura, como é que o servidor teve acesso ao IP e porto do cliente, para depois lhe enviar a resposta. O servidor fica à espera de receber um pacote, quando recebe uma mensagem, retira dela tanto o porto como o ip de quem a enviou. /* O servidor bloqueia ate chegar um pacote dum potencial cliente. */ serversocket.receive(receivepacket); /* Obtem-se numa string a mensagem enviada pelo cliente. */ String sentence = new String(receivePacket.getData()); /* Obtem-se o endereço IP do cliente. */ InetAddress IPAddress = receivepacket.getaddress(); /* Obtem-se o porto do cliente. */ int port = receivepacket.getport(); 4

III. Multicast Deverá verificar a correcta funcionalidade desta aplicação Multicast, tentando analisar a captura efectuada e respondendo depois às seguintes perguntas: a) Qual é o protocolo de transporte utilizado? O protocolo de transporte utilizado é UDP. b) Qual o endereço MAC associado ao grupo multicast e como este é que é formado? O endereço MAC associado a este grupo é o 01:00:5e:00:00:01. Foi obtido de acordo com a seguinte figura: Os últimos 23 bits do endereço de IP multicast são traduzidos directamente nos últimos 23 bits do endereço MAC multicast. A gama de endereços MAC entre 01:00:5e:00:00:01 e 01:00:5E:7F:FF:FF está reservada para este efeito. c) Qual é o valor do campo TTL? O valor do campo TTL é 100. d) Como é que poderia aumentar o TTL? Observamos que no código da classe MulticastPeer esta definido para o valor de 100 saltos, no método, s.settimetolive(100). Para aumentarmos este valor bastaria passar um argumento maior neste método. 5

Altere o endereço do grupo para 224.0.0.50 e repita o cenário de teste anterior. Analise as capturas dos dois cenários de teste do multicast. e) Consegue visualizar mensagens do protocolo IGMP? Em caso afirmativo liste-as com os endereços de rede utilizados. Caso contrário justifique também. O protocolo Igmp é usado para gerir grupos de multicast. As mensagens Igmp Membership Report são usadas quando um cliente pretende aderir a um grupo multicast. Além disso, o Leave group é usado quando um host abandona um grupo multicast e é enviada a para o endereço de multicast 224.0.0.2. f) Qual a versão do protocolo IGMP? Versão 2 g) Verifique se está a ser utilizado o mecanismo de supressão de respostas a uma mensagem do tipo IGMP Query, baseado no Máximo Tempo de Resposta? Justifique a sua resposta. Podemos observar que o campo Max Response Time na mensagem Membership Query tem o valor de 10 segundos, isto significa que o mecanismo de supressão de resposta está a ser utilizado. Em todos os outros tipos de mensagem este campo é ignorado pelo receptor, sendo o seu valor colocado a 0 segundos pelo emissor. 6