1 Execute servidor (UDPServer.java) e cliente (UDPClient.java) na mesma
mquina. 2 O que acontece se voc executar o cliente antes do servidor? 3 Altere as portas do servidor e cliente no cdigo. O que acontece se as portas forem diferentes? 4 Execute servidor e cliente em mquinas diferentes. Que modificaes so necessrias no cdigo? 5 Envie vrias mensagens ao servidor a partir de vrias mquinas diferentes (ao mesmo tempo!). O que acontece nesse caso? Capturando pacotes com Wireshark: 6 Execute servidor (UDPServer.java) e cliente (UDPClient.java) em mquinas diferentes e capture os pacotes enviados usando o Wireshark. 7 Selecione um pacote UDP. Quantos e quais so os campos do cabealho do pacote? 8 Qual o nmero de protocolo para o UDP no cabealho IP? 9 Examine um par de pacotes UDP em que o primeiro pacote enviado pelo cliente e o segundo pacote a resposta do servidor a este pacote. Descreva a relao entre os nmeros de portas nos dois pacotes. Sugesto de atividades para casa: 10 Modifique o programa cliente para enviar mais de uma mensagem digitada pelo usurio. necessrio alterar tambm o cdigo do servidor? Faa as modificaes necessrias. 11 Modifique o programa para que o servidor no responda a um usurio indesejado. (Dica: use white ou black list).
Sockets TCP
1 Execute servidor (TCPServer.java) e cliente (TCPClient.java) na mesma
mquina. 2 O que acontece se voc executar o cliente antes do servidor? 3 Altere as portas do servidor e cliente no cdigo. O que acontece se as portas forem diferentes? 4 Execute servidor e cliente em mquinas diferentes. Que modificaes so necessrias no cdigo? 5 Envie vrias mensagens ao servidor a partir de vrias mquinas diferentes (ao mesmo tempo!). O que acontece nesse caso? 6 Verifique o cliente e servidor UDP do tpico anterior. Quais as principais diferenas para o cliente e servidor TCP? Capturando pacotes com Wireshark: 7 Execute servidor (TCPServer.java) e cliente (TCPClient.java) em mquinas diferentes e capture os pacotes enviados usando o Wireshark. 8 Qual o endereo IP e porta TCP usado pelo cliente? E pelo servidor? 9 Execute novamente o cliente. Verifique a porta e IP do cliente. 10 Qual o Sequence Number do segmento TCP SYN usado para iniciar a conexo TCP entre cliente e servidor? Qual o nmero do segmento SYNACK enviado pelo servidor em resposta ao SYN enviado pelo cliente? Qual o valor campo Acknowledgment Number do cabealho TCP para o segmento SYNACK? Como o servidor determinou este valor? 11 Identifique e explique os demais campos do cabealho TCP identificados na troca de mensagens cliente/servidor (janela de recepo, flags, etc). 12 possvel achar no campo de dados as mensagens enviadas pelo cliente e servidor? Sugesto de atividades para casa: 13 Modifique o programa cliente para que permanea conectado enviando mensagens ao servidor. A conexo s era desfeita se o cliente enviar o comando tchau para o servidor. Faa tambm as modificaes necessrias no cdigo do servidor. 14 Desafio: o servidor dos exerccios anteriores suporta requisies simultneas de vrios clientes? Implemente um servidor que atenda a vrios clientes simultaneamente. (Dica: use Threads). 2
Dicas o o o o o o
Descubra o IP da sua mquina com o comando ipconfig (Windows) ou ifconfig
(Linux). Consulte a pgina de documentao do Java para aplicaes de rede: http://docs.oracle.com/javase/7/docs/api/java/net/package-summary.html Para usar threads, consulte a pgina de documentao do Java: http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html Obtenha o Wireshark em https://www.wireshark.org/ Aprenda a usar a filtragem no Wireshark: Menu Capture > Capture Filters Tutorial interessante para entender o funcionamento do TCP: http://packetlife.net/blog/2010/jun/7/understanding-tcp-sequenceacknowledgment-numbers/