Modificada: 29/8/05

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

Atividade #4 ( 9 pontos)

 

Entrega

·        T1( 4ª) entrega 8/9 (5ª.)

·        T2 (2ª) entrega 8/9 (5ª.)

·        T3,T4 (6ª) entrega 8/9 (5ª.)

 

ObjetivoObter conhecimentos básicos para o desenvolvimento de servidores com conexão, iterativos e concorrentes

 

PARTE I – TCPdaytimed: um servidor orientado a conexão iterativo (4 pontos)

 

O arquivo TCPdaytimed.c contém o código para o servidor DAYTIME iterativo e orientado a conexão TCPdaytimed, baseado no algoritmo 1 apresentado no texto Projeto e implementação de servidores. TCPdaytimed usa as funções passiveUDP() e passivesock(), definidas os arquivos passiveTCP.c e passivesock.c.

 

1.      Estude o texto acima.

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

    1. Para que serve a função ctime()?
    2. Por que o servidor utiliza dois identificadores de soquetes msock e ssock?

3.      Modifique o código do servidor iterativo TCPdaytimed de modo que ele não feche explicitamente a conexão após enviar uma resposta. Ele continua funcionando corretamente? Explique. (1 ponto)

4.      Monte experimentos que permitam visualizar o número máximo de clientes que o servidor TCPdaytimed é capaz de atender até recusar serviço. Explique como foi realizado o experimento. Analise e procure explicar os resultados obtidos.
(2 pontos)

 

 

PARTE II  TCPechod: um servidor orientado a conexão concorrente (5 pontos)

 

O arquivo TCPechod.c contém o código de um servidor concorrente para o serviço ECHO, baseado no algoritmo 4, apresentado no texto Projeto e implementação de servidores.

 

  1. Por que a instancia filha do servidor TCPechod.c, criada para atender a uma nova requisição, fecha o soquete msock mas não o soquete ssock? Quais seriam as conseqüências de deixar o msock aberto? (1 ponto)
  2. Explique o que aconteceria se a chamada (void) signal(SIGCHLD,reaper) for retirada do servidor TCPechod.c. 
    (1 ponto)
  3. Por que na função reaper() a primitiva wait3() é chamada com o argumento WNOHANG? (1 ponto)
  4. Monte experimentos que permitam visualizar o número máximo de clientes que o servidor TCPechod é capaz de atender até recusar serviço. Explique como foi realizado o experimento. Analise e procure explicar os resultados obtidos.
    (2 pontos)

 

 

Observações:    

  • Veja ao final da mensagem o novo formato para o relatório a ser enviado
  • Faça alguns testes para ilustrar o funcionamento dos clientes e servidores. Os testes devem incluir:
    • Cliente e servidor rodando no mesmo hospedeiro (localhost).
    • Cliente e servidor rodando em hospedeiros diferentes da mesma sub-rede (no sentido TCP/IP)
    • Cliente e servidor rodando em hospedeiros diferentes de sub-rede diferentes.

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

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

 

 

Forma de entrega

 

Enviar o relatório em 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 4,  <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.  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: ATIV4-<RA do 1º. Autor>.zip.

·        Conteúdo do arquivo compactado

·        Relatório com a seguinte estrutura (em formato MS-Word ):

·         Página de rosto: identificar a disciplina, a atividade e os nomes dos integrantes do grupo (incluindo endereço de email).

·         Corpo: respostas ou análises solicitadas, incluindo a citação das fontes usadas para elaborar a resposta

·         Referências: usando a notação ABNT

·        Anexo A: descrição do ambiente em que os testes e as coletas de dados foram feitas, incluindo local e o sistema operacional usado.

·        Anexo B: transcrição das sessões de testes em que o código foi testado e os dados coletados

·        Anexo C: Arquivos com o código 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.