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

Prof. Célio Guimarães     IC - Unicamp    sala 47

Atualizado em 08/08/2011 Critérios de avaliação e programa da disciplina

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 suportados por Linux.
Funções para tratar cadeias de caracteres: C string functions
Uma rápida introdução a scripts CGI em C


(*)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.