MC823 - Laboratório de Redes de Computadores
2º Sem 2008

Prof. Célio Guimarães     IC - Unicamp    sala 40
PED: Neumar Costa Malheiros - ncm@ic.unicamp.br

Atualizado em 04/12/2008

Exame: dia 18 dez 5ªF 19 hs sala IC301
Alunos que deverão fazer exame:
43381
44559

Critérios de avaliação e programa da disciplina

Prova de avaliação: 17 Nov 08 21Hs Sala CB18

Inclua o número do grupo: Turma A e Turma B nos seus relatórios e listagens

O objetivo principal desta disciplina é familiarizar os alunos com conceitos básicos de programação de aplicações Cliente-Servidor utilizando a biblioteca "Berkeley Sockets" com a linguagem C e usando os protocolos TCP e UDP. Isto permite explorar recursos poderosos da biblioteca não disponíveis em outras linguagens.

Será tomado como modelo de aplicação o exemplo do "Serviço de Eco" adotado pelo livro clássico de Richard Stevens (veja bibliografia a seguir). Nesta aplicação as linhas de um arquivo texto (possivelmente grande) são sucessivamente enviadas do cliente para um servidor remoto que simplesmente envia de volta ao cliente cada linha recebida; diferentes técnicas para implementar esta aplicação são detalhadas, e os alunos implementarão várias delas como atividades de laboratório; as técnicas mais sofisticadas conseguem um desempenho de 1 a 2 ordens de magnitude melhor do que a técnica simples de "Pedido-Resposta"(*).

Bibliografia

Richard Stevens - Unix Network Programming Vol 1, 2ª ed, Pr Hall, 1998
Notas de aula (em pdf).
Tutorial do Beej sobre sockets: guide to network programming
Tutorial sobre o protocolo HTTP

Documentos adicionais diversos. Veja em particular o documento sobre buferização da biblioteca padrão.
Lista de sinais suporatdos por Linux.
Um exemplo de programa que não se deixa matar pelo sinal SIGINT (emitido ao se digitar ^C).
Funções para tratar cadeias de caracteres: C string functions
Uma rápida introdução a scripts CGI em C

Atividade 1 (opcional): Serviço de Eco simplificado: a1.html   Submissão: 25/08/08. Prazo de entrega: 01/09/08
Atividade 2(obrigatória): Serviço de Eco TCP: a2.html   Submissão: 27/08/08. Prazo de entrega: 15/09/08
Atividade 3(obrigatória): Serviço de Eco UDP: a3.html   Submissão: 04/09/08. Prazo de entrega: 29/09/08
Obs: veja "dicas" sobre como "desconectar" o servidor do cliente nas notas de aula e no final da especificação (a3.html)
Atividade 4 (obrigatória): Serviço de Eco usando E/S multiplexada: a4.html   Submissão: 24/09/08. Prazo de entrega: 13/10/08

Atividade 5(obrigatória): Emulador do servidor inetd: a5.html   Submissão: 01/10/08. Prazo de entrega: 27/10/08 Obs: esta atividade terá um peso maior que as anteriores

Atividade 6(obrigatória): Emulador de um browser via script CGI: a6.html   Submissão: 04/11/08. Prazo de entrega: 24/11/08
Obs: esta atividade terá um peso maior que as anteriores


(*)Todas as medidas de tempo dos laboratórios visam obter tempos de transmissão/recepção na rede (com o cliente e servidor em subredes distintas) + tempo de processamento pelo kernel TCP ou UDP; não devem ser influenciadas por: tempos de saída no vídeo seja no cliente ou no servidor, tempos de abertura de conexão e por tempos de leitura de arquivos do disco.