·

Bioquímica ·

Rede de Computadores

Send your question to AI and receive an answer instantly

Ask Question

Preview text

INSTITUTO FEDERAL DA PARAÍBA DIRETORIA DE ENSINO DEPARTAMENTO DE ENSINO SUPERIOR CAMPUS JOÃO PESSOA DISCIPLINA PROTOCOLOS DE INTERCONEXÃO DE REDES DE COMPUTADORES PROFESSOR LEONIDAS LIMA PERÍODO 20232 Página 19 Prática 02 API de Sockets e Protocolo de Aplicação 1 Organizando o ambiente a Inicialize a máquina virtual fornecida pelo professor colocando a sua interface de rede em modo bridge b Abra uma sessão de trabalho para o usuário aluno senha ifpb c Abra um terminal para execução dos comandos d Faça o download do instalador do visual studio code wget 4 httpsupdatecodevisualstudiocomlatestlinuxdebx64stable O codedeb e Faça a instalação do visual studio code sudo dpkg i codedeb sudo senha para aluno 2 Fazendo o download dos códigos fontes dos exemplos a Use o aplicativo wget e faça o download do código fonte do cliente e servidor de transferência de arquivos escritos na linguagem Python wget httpaulasua2vhostifpbedubrPIRCsocketsarqtargz b Descompacte o conteúdo do arquivo baixado tar xvzf socketsarqtargz c Copie os arquivos clientearqpy e servidorarqpy para o diretório usrlocalbin sudo cp socketsarqpy usrlocalbin sudo senha para aluno 3 Testando os aplicativos servidorarqpy e clientearqpy a Use a interface gráfica e abra uma sessão do wireshark para monitorar os pacotes TCP enviados pela interface Loopback na porta 40000 b Crie um arquivo denominado seunometxt colocando no seu interior seu nome completo e matrícula echo Seu Nome Completo Matrícula seunometxt c Execute o aplicativo servidorarqpy em sua máquina virtual servidorarqpy d Abra um outro terminal crie um diretório denominado arquivos e faça dele o diretório corrente mkdir arquivos cd arquivos e Execute o aplicativo clientearqpy em sua máquina virtual conectando com o seu servidor e realize a transferência do arquivo seunometxt criado anteriormente clientearqpy Servidor 12700140000 Para sair use CTRLD Arquivo seunometxt Recebendo seunometxt Para sair use CTRLD Arquivo INSTITUTO FEDERAL DA PARAÍBA DIRETORIA DE ENSINO DEPARTAMENTO DE ENSINO SUPERIOR CAMPUS JOÃO PESSOA DISCIPLINA PROTOCOLOS DE INTERCONEXÃO DE REDES DE COMPUTADORES PROFESSOR LEONIDAS LIMA PERÍODO 20232 Página 29 Prática 02 API de Sockets e Protocolo de Aplicação f Encerre o cliente e alterne para a janela do wireshark Observe os pacotes TCP enviados e recebidos no processo de comunicação entre o cliente e o servidor Use o menu Analyze Follow TCP Stream e veja o fluxo de dados enviados pelo cliente em vermelho e devolvido pelo servidor em azul g Execute o aplicativo nc conectando com o seu servidor Na sequência solicite a transferência do arquivo seunometxt nc localhost 40000 seunometxt h Alterne para a janela do aplicativo servidorarqpy e verifique o que aconteceu Observe que o arquivo seunometxt não foi transferido pois o aplicativo nc inseriu um newline ao final do nome do mesmo Cliente conectado 127001 35778 Arquivo solicitado seunometxt Traceback most recent call last File usrlocalbinservidorarqpy line 21 in module arq opennomeArq rb FileNotFoundError Errno 2 No such file or directory seunometxt Obs Isso é consequência do não uso de um protocolo de aplicação para gerenciar a comunicação entre as partes cliente e servidor da nossa aplicação tornando suas funcionalidades totalmente vinculadas à forma de implementação dos aplicativos que não seguem um padrão prévio Perceba que se quisermos listar os arquivos disponíveis ou altenar para outro diretório no servidor teremos que alterar cliente e servidor para atingirmos este objetivo e tornaremos a aplicação cada vez mais vinculada à implementação i Encerre a captura e salve os pacotes capturados no wireshark com o nome TCPloopbackpcapng Este arquivo também deverá ser enviado ao professor como forma de comprovar a realização desta parte da atividade 4 Altere as aplicações em Python para permitir o uso do protocolo BTP Batleo Transfer Protocol O protocolo BTP é um protocolo simplificado criado mais com um objetivo didáticopedagógico de ilustrar a importância de usar um protocolo de aplicação no projeto de aplicações distribuídas que possui a função de gerenciar a comunição entre as partes de uma aplicação distribuída para transferência de arquivos No BTP são utilizados os seguintes comandos INSTITUTO FEDERAL DA PARAÍBA DIRETORIA DE ENSINO DEPARTAMENTO DE ENSINO SUPERIOR CAMPUS JOÃO PESSOA DISCIPLINA PROTOCOLOS DE INTERCONEXÃO DE REDES DE COMPUTADORES PROFESSOR LEONIDAS LIMA PERÍODO 20232 Página 39 Prática 02 API de Sockets e Protocolo de Aplicação GET Solicita o download de um arquivo do diretório corrente do servidor Requisição GET nomearquivo Respostas OK tamanho ERR msgerro CWD Requisita a alteração do diretório corrente do servidor Requisição CWD nomediretório Respostas OK ERR msgerro LIST Solicita lista de arquivos e diretórios do diretório corrente Requisição LIST Resposta OK numarquivos QUIT Encerra a sessão de BTP Requisição QUIT Resposta OK Destes comandos apenas o CWD ainda não está implementado sendo a implementação do mesmo uma das tarefas a serem realizadas nesta atividade a Copie o diretório socketsarq gerando o diretório socketsbtp cp r socketsarq socketsbtp b Alterne para o diretório socketsbtp cd socketsbtp c Modifique o nome do cliente para clientebtppy mv clientearqpy clientebtppy d Modifique o nome do servidor para servidorbtppy mv servidorarqpy servidorbtppy e Abra o arquivo Visual Studio code para editar os arquivos code f Altere o arquivo clientebtppy para ficar com as seguintes linhas de código usrbinenv python3 import socket import sys TAMMSG 1024 Tamanho do bloco de mensagem HOST 127001 IP do Servidor PORT 40000 Porta que o Servidor escuta def decodecmdusrcmdusr cmdmap INSTITUTO FEDERAL DA PARAÍBA DIRETORIA DE ENSINO DEPARTAMENTO DE ENSINO SUPERIOR CAMPUS JOÃO PESSOA DISCIPLINA PROTOCOLOS DE INTERCONEXÃO DE REDES DE COMPUTADORES PROFESSOR LEONIDAS LIMA PERÍODO 20232 Página 49 Prática 02 API de Sockets e Protocolo de Aplicação exit quit ls list cd cwd get get tokens cmdusrsplit if tokens0lower in cmdmap tokens0 cmdmaptokens0lower return jointokens else return False if lensysargv 1 HOST sysargv1 printServidor HOSTstrPORT serv HOST PORT sock socketsocketsocketAFINET socketSOCKSTREAM sockconnectserv printPara encerrar use EXIT CTRLD ou CTRLC while True try cmdusr inputBTP except cmdusr EXIT cmd decodecmdusrcmdusr if not cmd printComando indefinido cmdusr else socksendstrencodecmd dados sockrecvTAMMSG if not dados break msgstatus dadosdecodesplit 0 dados dadoslenmsgstatus1 printmsgstatus cmd cmdsplit cmd0 cmd0upper if cmd0 QUIT break elif cmd0 LIST numarquivos intmsgstatussplit1 dados dadosdecode while True arquivos dadossplit residual arquivos1 último sem fica para próxima for arq in arquivos1 printarq numarquivos 1 if numarquivos 0 break dados sockrecvTAMMSG if not dados break dados residual dadosdecode elif cmd0 GET nomearq joincmd1 printRecebendo nomearq arq opennomearq wb INSTITUTO FEDERAL DA PARAÍBA DIRETORIA DE ENSINO DEPARTAMENTO DE ENSINO SUPERIOR CAMPUS JOÃO PESSOA DISCIPLINA PROTOCOLOS DE INTERCONEXÃO DE REDES DE COMPUTADORES PROFESSOR LEONIDAS LIMA PERÍODO 20232 Página 59 Prática 02 API de Sockets e Protocolo de Aplicação tamarquivo intmsgstatussplit1 while True arqwritedados tamarquivo lendados if tamarquivo 0 break dados sockrecvTAMMSG if not dados break arqclose sockclose g Altere o arquivo servidorbtppy para ficar com as seguintes linhas de código usrbinenv python3 import socket import os TAMMSG 1024 Tamanho do bloco de mensagem HOST 0000 IP do Servidor PORT 40000 Porta que o Servidor escuta def processamsgclientemsg con cliente msg msgdecode printCliente cliente enviou msg msg msgsplit if msg0upper GET nomearq joinmsg1 printArquivo solicitado nomearq try statusarq osstatnomearq consendstrencodeOK formatstatusarqstsize arq opennomearq rb while True dados arqreadTAMMSG if not dados break consenddados except Exception as e consendstrencodeERR formate elif msg0upper LIST listaarq oslistdir consendstrencodeOK formatlenlistaarq for nomearq in listaarq if ospathisfilenomearq statusarq osstatnomearq consendstrencodearq 1fKB formatnomearq statusarqstsize1024 elif ospathisdirnomearq consendstrencodedir formatnomearq else consendstrencodeesp formatnomearq elif msg0upper QUIT consendstrencodeOK return False else consendstrencodeERR Invalid command return True def processaclientecon cliente printCliente conectado cliente while True msg conrecvTAMMSG if not msg or not processamsgclientemsg con cliente break conclose printCliente desconectado cliente INSTITUTO FEDERAL DA PARAÍBA DIRETORIA DE ENSINO DEPARTAMENTO DE ENSINO SUPERIOR CAMPUS JOÃO PESSOA DISCIPLINA PROTOCOLOS DE INTERCONEXÃO DE REDES DE COMPUTADORES PROFESSOR LEONIDAS LIMA PERÍODO 20232 Página 69 Prática 02 API de Sockets e Protocolo de Aplicação sock socketsocketsocketAFINET socketSOCKSTREAM serv HOST PORT sockbindserv socklisten50 while True try con cliente sockaccept except break processaclientecon cliente sockclose h Copie os arquivos clientebtppy e servidorbtppy para o diretório usrlocalbin sudo cp btppy usrlocalbin sudo senha para aluno i Desloque o diretório corrente para o diretório home do usuário aluno cd aluno j Execute o aplicativo servidorbtppy em sua máquina virtual servidorbtppy k Alterner para outro terminal e execute o aplicativo nc fazendo a conexão com o servidor Na sequência solicite a transferência do arquivo seunometxt nc localhost 40000 get seunometxt OK 30 Seu Nome e Sobrenome NumMat quit OK Observe que agora como a forma de comunicação é padronizada pelo protocolo de aplicação o arquivo foi transferido com sucesso mesmo usando como cliente o aplicativo netcat nc l Retorne ao aplicativo wireshark selecione o menu Capture Options e inicie uma sessão de captura monitorando pacotes TCP enviados pela interface enp0s3 na porta 40000 do protocolo TCP INSTITUTO FEDERAL DA PARAÍBA DIRETORIA DE ENSINO DEPARTAMENTO DE ENSINO SUPERIOR CAMPUS JOÃO PESSOA DISCIPLINA PROTOCOLOS DE INTERCONEXÃO DE REDES DE COMPUTADORES PROFESSOR LEONIDAS LIMA PERÍODO 20232 Página 79 Prática 02 API de Sockets e Protocolo de Aplicação m Transfira o aplicativo clientebtppy para a sua máquina real e execute o mesmo conectando com o servidor da máquina virtual Máquina real Linux Máquina real Windows clientebtppy 1921680X Servidor 1921680X40000 Para sair use EXIT CtrlD ou CTRLC BTP C python clientebtppy 1921680X Servidor 1921680X40000 Para sair use EXIT CtrlD ou CTRLC BTP n Solicite uma listagem dos arquivos contidos no servidor BTP ls OK 42 dir mail arq mbox 13KB o Realize a transferência do arquivo seunometxt criado anteriormente BTP get seunometxt OK 30 Recebendo seunometxt BTP p Abra um novo terminal em sua máquina real e execute o aplicativo clientebtppy conectando com o servidor da máquina virtual Máquina real Linux Máquina real Windows clientebtppy 1921680X Servidor 1921680X40000 Para sair use EXIT CtrlD ou CTRLC BTP C python clientebtppy 1921680X Servidor 1921680X40000 Para sair use EXIT CtrlD ou CTRLC BTP q Solicite uma listagem dos arquivos contidos no servidor BTP ls Por que não foi retornada a listagem r Retorne à janela do primeiro cliente e encerre o aplicativo clientebtppy usando o comando exit s Alterne para a outra janela executando o aplicativo clientebtppy e observe o que aconteceu Veja que a listagem dos arquivos e diretórios agora foi mostrada e o prompt BTP ficou novamente disponível Isso ocorreu pois o servidorbtppy é uma aplicação monoprocessada e só dá atenção a um único cliente por vez t Solicite uma alteração do diretório corrente do servidor para o diretório socketsbtp BTP cd socketsbtp ERR Invalid command BTP Este erro ocorreu pelo fato do comando CWD ainda não ter sido implementado no servidor u Encerre o aplicativo clientebtppy digitando CtrlC v Retorne ao terminal na máquina virtual e encerre o aplicativo servidor digitando CtrlC w Retorne à janela do aplicativo wireshark e observe os pacotes TCP enviados e recebidos no processo de comunicação entre os clientes e o servidor INSTITUTO FEDERAL DA PARAÍBA DIRETORIA DE ENSINO DEPARTAMENTO DE ENSINO SUPERIOR CAMPUS JOÃO PESSOA DISCIPLINA PROTOCOLOS DE INTERCONEXÃO DE REDES DE COMPUTADORES PROFESSOR LEONIDAS LIMA PERÍODO 20232 Página 89 Prática 02 API de Sockets e Protocolo de Aplicação x Encerre a captura e salve os pacotes capturados no wireshark com o nome BTPenp0s3pcapng Este arquivo também será enviado ao professor comprovando a realização desta parte da atividade 5 Melhorando o aplicativo servidorbtppy a Retorne ao aplicativo wireshark selecione o menu Capture Options e inicie uma sessão de captura monitorando pacotes TCP enviados pela interface enp0s3 na porta 40000 do protocolo TCP b No terminal onde estava rodando o servidor alterne para o diretório socketsbtp cd socketsbtp c Altere o código em Python do aplicativo servidorbtppy para incluir o tratamento do comando CWD d Modifique o código em Python do aplicativo servidorbtppy para tornálo multiprocessado permitindo o uso do protocolo BTP a partir de múltiplos clientes e Realize a cópia do arquivo servidorbtppy para o diretório usrlocalbin sudo cp servidorbtppy usrlocalbin sudo senha para aluno f Desloque o diretório corrente para o diretório home do usuário aluno cd aluno g Execute o aplicativo servidorbtppy em sua máquina virtual servidorbtppy h Execute o aplicativo clientebtppy na sua máquina real conectando ao servidor da máquina virtual Máquina real Linux Máquina real Windows clientebtppy 1921680X Servidor 1921680X40000 Para sair use EXIT CtrlD ou CTRLC BTP C python clientebtppy 1921680X Servidor 1921680X40000 Para sair use EXIT CtrlD ou CTRLC BTP INSTITUTO FEDERAL DA PARAÍBA DIRETORIA DE ENSINO DEPARTAMENTO DE ENSINO SUPERIOR CAMPUS JOÃO PESSOA DISCIPLINA PROTOCOLOS DE INTERCONEXÃO DE REDES DE COMPUTADORES PROFESSOR LEONIDAS LIMA PERÍODO 20232 Página 99 Prática 02 API de Sockets e Protocolo de Aplicação i Solicite uma listagem dos arquivos contidos no servidor BTP ls OK 42 dir mail arq mbox 13KB j Realize a transferência do arquivo seunometxt criado anteriormente BTP get seunometxt OK 30 Recebendo seunometxt BTP k Abra um novo terminal em sua máquina real e execute o aplicativo clientebtppy conectando com o servidor da máquina virtual Máquina real Linux Máquina real Windows clientebtppy 1921680X Servidor 1921680X40000 Para sair use EXIT CtrlD ou CTRLC BTP C python clientebtppy 1921680X Servidor 1921680X40000 Para sair use EXIT CtrlD ou CTRLC BTP l Solicite uma alteração do diretório corrente do servidor para o diretório socketsbtp BTP cd socketsbtp OK BTP m Solicite uma listagem dos arquivos contidos no servidor BTP ls OK 2 arq clientebtppy 17K arq arq servidorbtppy 20KB BTP n Realize a transferência do arquivo servidorbtppy BTP get servidorbtppy OK 2012 Recebendo servidorbtppy BTP o Encerre o aplicativo clientebtppy usando o comando exit p Alterne para a outra janela executando o aplicativo clientebtppy e encerre o mesmo com CtrlC q Retorne à máquina virtual e encerre o aplicativo servidor digitando CtrlC r Retorne à janela do aplicativo wireshark e observe os pacotes TCP enviados e recebidos no processo de comunicação entre os clientes e o servidor s Encerre a captura e salve os pacotes capturados no wireshark com o nome BTPOKenp0s3pcapng Este arquivo também será enviado ao professor comprovando a realização desta parte da atividade 6 Encerrando o sistema e desligando a máquina a Use o comando poweroff e desligue a máquina sudo poweroff sudo senha para aluno