Modificada: 15/8/05

Curso de Engenharia de Computação - Redes de Computadores I / 2s2005

Atividade #3 ( 8 pontos)

Entrega

·        T1( 4ª) entrega 26/8 (6a.)

·        T2 (2ª) entrega 24/8 (4ª)

·        T3,T4 (6ª) entrega 29/8 (2ª)

 

ObjetivoObter conhecimentos básicos para o desenvolvimento de servidores iterativos

 

 

O arquivo UDPtimed.c contém o código para o servidor TIME iterativo sem conexão UDPtimed, baseado no algoritmo 2 apresentado no texto texto  Projeto e implementação de servidores. UDPtimed usa as funções passiveUDP() e passivesock(), definidas os arquivos passiveUDP.c e passivesock.c.

 

1.      Estude o texto acima e traga as suas dúvidas para discussão em sala.

2.      Estude o código fornecido e responda (1 ponto):

a.       Para que serve a variável global portbase no arquivo passivesock.c?

b.      O que indica e para que serve a constante UNIXEPOCH, em UDPtimed.c?

3.      Compile e teste o servidor UDPtimed usando o cliente UDPtime apresentado anteriormente. O servidor UDPtimed necessita de algum privilégio especial para rodar em seu sistema local? Para rodar o cliente TIME é necessário algum privilégio? Justifique. (1 ponto)

4.      Como o servidor UDPtimed obtém o endereço do cliente para lhe enviar a resposta? (1 ponto)

5.      O código do exemplo UDPtimed.c especifica um buffer de 1 byte quando chama recvfrom(). O que aconteceria se um buffer de 0 (zero) byte fosse especificado? Teste esta alteração e explique o resultado. (1 ponto)

6.      Conduza um experimento e determine o que acontece se N clientes enviarem pedidos simultâneos para o servidor UDPtimed. Varie o valor de N (número de clientes) e S (tamanho do datagrama enviado). Explique como foi realizado o experimento e mostre e explique os resultados obtidos. (4 pontos).

 

 

Observações:    

·        O trabalho poderá ser feito em grupos de até 3 componentes.

·        Os comandos script ou tee do Linux podem ser úteis para gerar a transcrição de sessões de testes e levantamento de dados.

·        Tenha sempre à mão todo o código e relatórios entregues.

 

 

Forma de entrega

 

Enviar um arquivo compactado (extensão .zip), anexado a uma mensagem, seguindo as instruções abaixo:

·        Destinatário: juan@puc-campinas.edu.br

·        Campo assunto (subject):

REDES-I/ATIVIDADE:<atividade>/Turma:<turma>/<RA do 1º. Autor>/<RA do 2º. Autor>/<RA do 3º. Autor>

Onde <atividade> será substituído pelo número da atividade, neste caso 2,  <turma> será a turma em que os membros do grupo estão matriculados, <RA 1º. Autor> será o RA do primeiro autor etc. Os RAs devem ser colocados em ordem crescente.  Por exemplo, o campo assunto da mensagem de encaminhamento do relatório feito por alunos da turma 3, com  RAs 02123456,  03123456 e 03123457 será o seguinte:

REDES-I/ATIVIDADE:2/Turma:3/02123456/03123456/03123457

Observe que não há espaço após “ATIVIDADE:” e “Turma:”

·        Corpo da mensagem: nomes e RAs dos membros do grupo

·        Nome do arquivo compactado:ATIV2-<RA do 1º. Autor>.zip. No exemplo acima, ele se chamaria ATIV2-02123456.zip.

·        Conteúdo do arquivo compactado: 

1.      Arquivos com os códigos fonte dos programas modificados ou desenvolvidos, incluindo o makefile. A primeira linha de cada arquivo deve ser um comentário com o nome do arquivo. A segunda e terceira linhas devem indicar os nomes e RAs dos autores, também na forma de comentários.

2.      Arquivo (formatos doc ou pdf)  contendo uma breve descrição (até uma página, fonte Times New Roman 12, espaço simples) do código implementado e dos testes realizados. Informar o local e ambiente (distribuição e versão do Linux) onde os testes foram realizados.

3.      Arquivo com a transcrição da sessão de testes.