You are on page 1of 15

INSTITUTO FERDERAL DE EDUCAO CINCIA E TECNOLOGIA DO RIO GRANDE DO NORTE - CAMPUS PARNAMIRIM DISCIPLINA: REDES DE COMPUTADORES II DOCENTE: VICTOR

PIMENTEL

RELATRIO DA AULA PRTICA DE PROGRAMAO DE SOCKETS

DISCENTE: Brunno Moreira da Silva

PARNAMIRIM / RN Abril de 2013

INSTITUTO FERDERAL DE EDUCAO CINCIA E TECNOLOGIA DO RIO GRANDE DO NORTE - CAMPUS PARNAMIRIM DISCIPLINA: REDES DE COMPUTADORES II DOCENTE: VICTOR PIMENTEL

RELATRIO DA AULA PRTICA DE PROGRAMAO DE SOCKETS

DISCENTE: Brunno Moreira da Silva

Relatrio apresentado disciplina de Redes de Computadores II inclusiva do curso Tcnico Subsequente em Informtica do Instituto Federal de Educao Cincia e Tecnologia do Rio Grande do Norte Campus Parnamirim, para fins avaliativos na II unidade.

PARNAMIRIM / RN Abril de 2013

Introduo
Uma Rede de Computadores por si s bastante complexa, constituindo-se de vrios componentes e sistemas finais interconectados por todos os tipos de meios de conexo. Dada complexidade de uma rede, sua arquitetura dividida em camadas, na qual cada camada implementa e oferece um conjunto de servios a outra camada(a imediatamente superior) e utiliza servios oferecidos por outra camada(a imediatamente inferior), mais especificamente quem implementa, utiliza e oferece servios so os protocolos presentes em cada camada. Um protocolo pode ser visto como sendo um conjunto de diretivas que define como um servio ser oferecido. As aplicaes que rodam nos sistemas finais esto situadas na camada de aplicao, logo acima da camada de transporte. Aplicaes que se comunicam atravs de uma rede so chamadas aplicaes distribudas. Tais aplicaes utilizam os servios oferecidos pela infraestrutura e arquitetura da rede utilizada, mais especificamente os servios oferecidos pelos protocolos da camada de transporte, a saber, o servio de comunicao lgica entre processos (Aplicaes em execuo) que rodam na camada de aplicaes em diferentes sistemas finais. Dessa forma os protocolos da camada de transporte podem ser vistos como uma interface entre as aplicaes da camada de aplicao e a rede. Quando vai se desenvolver uma aplicao, o primeiro passo definir o problema em questo para em seguida modelar o software que ira resolver o problema. No desenvolvimento de aplicaes que se comunicam atravs de uma rede (aplicaes distribudas) necessrio decidir qual protocolo da camada de transporte a aplicao ira utilizar, TCP ou UDP. A deciso de qual protocolo utilizar pode depender de vrios fatores, mas o principal : o que a aplicao ira fazer? No sentido de qual o problema que ser resolvido. O UDP oferece um servio de comunicao fim a fim no confivel, enquanto o TCP oferece um servio confivel de transferncia de dados. A escolha de qual protocolo utilizar depende do objetivo da aplicao. A aplicao aqui citada e utilizada no laboratrio foi desenvolvida utilizando-se ambos os protocolos por motivos didticos. Este trabalho tem como finalidade apresentar uma descrio das atividades e ferramentas utilizadas durante a prtica de programao de sockets, no qual foi testada uma aplicao distribuda simples j implementada, de forma a ver toda teoria apresentada em sala na prtica. A aplicao utilizada apresentava duas verses: uma implementa utilizando o protocolo TCP e a outra o protocolo UDP, cada qual com dois componentes, o Cliente e o Servidor. Este trabalho apresenta-se dividido em vrias partes, que apresenta os fundamentos tericos e descrio das atividades e ferramentas utilizadas durante a prtica.

Fundamentao Terica e Aplicao


1. O Sistema Operacional Linux O Linux um Sistema Operacional de cdigo aberto desenvolvido inicialmente por Linus Torvalds, distribudo sobre a licena GPL, que especifica o que um indivduo pode e o que no pode fazer com sistema. Empresas e pessoas que fazem alteraes no sistema devem disponibilizar de forma livre tanto o cdigo fonte quanto o executvel do sistema. O termo Linux utilizado de forma genrica para designar qualquer sistema operacional que tenho como ncleo o Linux. O Linux no bem um sistema operacional, ele constitui o principal componente de um Sistema Operacional: o kernel (ncleo). Um sistema operacional pode ser visto como sendo um conjunto de softwares (incluindo o kernel), cujo objetivo oferecer uma mquina mais simples para os usurios e suas aplicaes, e gerenciar de forma eficiente os recursos de hardware. O kernel de um sistema operacional, dependendo da arquitetura do sistema pode desempenha vrias funes, como por exemplo, gerencia de memria, controlar os dispositivos de entrada e sada, os arquivos e os demais programas que so executados.

1.1. Caracterizao da Distribuio Ubuntu Linux Uma distribuio Linux constitui-se do kernel Linux com algumas modificaes mais um conjunto de aplicativos. Dado que o Linux est sob a licena de software livre (open source), vrias pessoas e empresas fazem suas prprias alteraes adicionando novas funcionalidades e o distribuem junto com um ambiente grfico e um conjunto de aplicativos. Dessa forma h vrias distribuies Linux, cada uma com suas peculiaridades, a escolha da distribuio depende das necessidades do usurio. Ubuntu uma distribuio Linux baseada na Debian, sendo uma das mais populares, devido a sua evoluo constante de forma a se tornar mais amigvel com usurios no tcnicos. Sua proposta oferecer um Sistema Operacional que qualquer pessoa possa utilizar sem dificuldades, independentemente de nacionalidade, nvel de conhecimento ou limitaes fsicas. Devido a sua popularidade e estabilidade vrias outras distribuies se originaram do Ubuntu. Entre suas caractersticas podemos citar brevemente: Utiliza a interface Unity, utiliza a ferramenta APT (ser explicada mais adiante) para gerenciamento e instalao de software, alm de ser totalmente gratuito. Na pratica de sockets realizada as mquinas do laboratrio continham o Ubuntu 12.04 LTS instalado. Devido as limitaes estabelecidas pelo usurio administrador, a prtica foi realizada atravs do software de virtualizao Virtual Box, pelo qual foi emulada uma imagem do Ubuntu 12.04 LTS criando uma mquina virtual, de forma ter acesso as configuraes de rede e poder utilizar as ferramentas necessrias para realizao da prtica.

2. A ferramenta DPKG Uma das ferramentas necessrias e utilizadas para realizao da prtica foi o DPKG. 2.1. Caracterizao da Ferramenta O DPKG (Debian Package) uma ferramenta de gerenciamento de pacotes* para distribuies Linux Debian, que permite criar, remover e gerenciar pacotes. Considerada uma ferramenta de pacote de baixo nvel, pois permite gerenciar somente os pacotes locais instalados no sistema, sendo possvel interagir com ela somente por linha de comando.

2.2. Listando Pacotes Instalados com a ferramenta DPKG O DPKG foi utilizado para verificar os pacotes instalados no sistema, de forma a preparar o ambiente para a execuo das aplicaes Java, dessa forma foram necessrios os seguintes pacotes: Open JDK (Java Development Kit): necessrio para criar aplicaes Java.

Open JRE (Java Runtime Environment ): necessrio para executar as aplicaes

Java.

Open SSH-Client: necessrio para utilizar a ferramenta de transferncia de arquivos.


Para verificao de tais pacotes foi executado o seguinte comando: dpkg l. Tal comando lista todos os pacotes instalados no computador.

Figure 1: Resultado do comando 'dpkg -l'

* Um pacote de software o software empacotado num formato de arquivo (Wikipedia)

Na imagem a cima podemos ver o resultado da execuo da ferramenta dpkg (dpkg l), na qual so listados todos os pacotes instalados. 3. A ferramenta APT Outra ferramenta utilizada na prtica foi o APT, necessrio caso a mquina no tivesse os pacotes necessrios. 3.1. Caracterizao da Ferramenta Assim como o DPKG, o APT uma ferramenta de gerenciamento de pacotes, diferenciando-se desse por permitir o gerenciamento atravs de acesso remoto, ou seja, permite baixar arquivos de outras mquinas. Uma ferramenta que permite instalar e atualizar pacotes e suas dependncias. Essa uma forte carcteristica do APT, pois permite a resoluo das dependncias sem que se precise ficar instalando um a um os pacotes que se interdependem. A prpria ferramenta procura o pacote e suas dependncias e os instala.

3.2. Instalao de pacotes no Linux com a ferramenta APT Para instalao dos pacotes e suas dependncias foram utilizados os seguintes comandos: apt-get update: Atualiza a lista de repositrios** cadastrados. apt-cache search nome: procura, nos repositrios informados no sources.list* por pacotes que se enquadrem no nome pesquisado. Apt-get install jdk: instala um pacote e suas dependncias. Nesse caso o JDK.

Figure 2: Atualizando lista de repositrios com o 'apt-get update'

* Arquivo localizado no Sistema Operacional que contm a lista de repositrios e o caminho onde podem ser encontrados. O apt-get update atualiza essa lista. ** Cada servidor mantm um repositrio (conjunto de pacotes). Na figura acima podemos ver o resulta da execuo do comando apt-get update, necessrio para atualizar a lista de repositrios. J na imagem abaixo podemos ver o resultado da execuo do comando apt-cache search jdk, que procura por pacotes relacionados ao JDK localizados localmente.

Figure 3: Listando pacotes relacionados ao JDK

Figure 4: Instalando o JDK e suas depndcias com comando: apt-get install openjdk - 7 - jdk

Na figura 4 acima, podemos ver a execuo do comando para instalar com o APT. Caso o pacote necessite de algum outro pacote ou biblioteca, o APT ir procurar qual pacote adicional dever instalar.

4. Configuraes de Rede no Linux 4.1. A ferramenta IFCONFIG 4.1.1. Caracterizao da Ferramenta O comando "ifconfig" serve para configurar a rede, bem como ver como ela est configurada, podendo verificar a configurao de um Endereo IP e mscara de rede em uma interface, e habilitar e desabilitar uma determinada interface.

4.1.2. Verificando as configuraes da rede com o ifconfig A imagem abaixo mostra a execuo do comando ifconfig, que exibe as configuraes de todas as interfaces de rede instaladas e reconhecidas pelo sistema. Pode-se observa que so listadas trs interfaces: eth0(interface de rede local), lo(interface de loopback) e wlan(interface de rede wireless) para cada interface so listadas vrias informaes. Para a interface wlan0, por exemplo, tm-se as seguintes configuraes: Protocolo da camada de enlace: ethernet Endereo IP: 10.0.0.101 Endereo de broadcast: 10.0.0.255 Mascar de subrede: 255.255.255.0
Figure 5: resultado do comando ifconfig.

4.1.3. Realizando as configuraes de endereamento da placa de rede com o IFCONFIG Para realizao da prtica, foi necessrio mudar de rede, da rede local do instituto para a rede local do laboratrio, sendo necessrio mudar o endereo IP da placa de rede. Dessa forma foi utilizado o seguinte comando, que apresenta a seguinte sintaxe:

ifconfig interface IP/mascara netmask Mascara

Onde interface a interface de rede a qual deseja-se configurar, IP/mascara refere-se ao novo endereo IP e sua mascara(a quantidade de bits) e Mascara representa a mascara de rede. Um exemplo de tal comando pode ser visto na imagem abaixo.

Figure 6: mudando de rede com o ifconfig.

5. A ferramenta SCP A ferramenta scp foi utilizada para baixar da mquina do professor os arquivos necessrios para realizao da prtica. Tais arquivos sero listados mais adiante.

5.1. Caracterizao da Ferramenta O programa SCP um cliente que implementa o protocolo SCP, ou seja, um programa para fazer cpias com segurana. O cliente SCP mais usado atualmente o comando scp, que provido na grande maioria das implementaes de SSH. 5.2. Copiando arquivos remotamente via SCP O comando utilizado para baixar os arquivos da mquina do professor foi: Scp r usurio@host:/diretrio/ArquivoFonte /ArquivoAlvo Onde -r especifica ao scp para baixar arquivos recursivamente, ou seja, uma pasta; usurio representa o nome do usurio da mquina da qual os arquivos sero baixados; host representa o IP da mquina origem dos arquivos; /diretrio/ArquivoFonte representa o caminho do arquivo que ser baixado; /ArquivoAlvo representa o caminho no disco rgido onde os arquivos baixados devem ser colocados.

6. A aplicao Uma aplicao distribuda consiste de um par de componentes (uma aplicao cliente e outra aplicao servidor), geralmente executados em sistemas finais diferentes. A aplicao cliente aquele que inicia a comunicao, enquanto a aplicao servidora espera uma solicitao de comunicao. Quando em execuo essas aplicaes so denominadas processos (programa rodando em um host), que se comunicam atravs da rede por meio de uma interface chamada socket. Um socket (porta), o end-point da comunicao entre processos, sendo a combinao do endereo IP mais o nmero de porta, a interface entre os processos da camada de aplicao e a camada de transporte. O endereo IP um nmero que identifica unicamente cada host na internet, enquanto o nmero de porta utilizado para comunicao entre processos. Em um host pode haver vrios processos, dessa forma quando dados chegam da rede a camada de transporte (mais especificamente o protocolo), ela deve entregar os dados ao processo correto, o que feito por meio de socket, que identifica unicamente um processor em um host, onde os dados so entregues a porta correta. A tarefa de entregar dados a um processo em um host chamada de demultiplexao. A tarefa de reunir os dados provenientes das portas dos processos da camada de aplicao e enviar para a rede chamada de multiplexao. Os dados provenientes dos processos da camada de aplicao atravs das portas so encapsulados em segmentos, a unidade de dados da camada de transporte. Cada segmento possui um conjunto de cabealhos, que por sua vez define um conjunto de campos. A cada campo associada uma informao importante para que os dados possam entregues. Os protocolos da camada de transporte definem os campos nmero de porta fonte e nmero de porta destino, para que a comunicao possa de fato ocorrer. Dessa forma cada aplicao deve possuir um nmero de porta. No desenvolvimento de uma aplicao distribuda, uma deciso importante a escolha de qual protocolo da camada de aplicao ser utilizado. Uma vez escolhido o protocolo a aplicao ser desenvolvida utilizando os servios oferecidos pelo protocolo da camada de transporte escolhido. H dois protocolos da camada de transporte que se distinguem quanto aos servios oferecidos, a saber, o TCP que oferece um servio orientado a conexo e confivel de transferncia de dados e o UDP que oferece um servio no orientado a conexo e no confivel de transferncia de dados. A aplicao utilizada na prtica foi desenvolvida utilizando-se ambos os protocolos TCP e UDP, de forma a verificar como se da implementao de uma aplicao em cada protocolo. A aplicao possui um requisito simples: o lado servidor aguarda a conexo com

um cliente, este por sua vez envia uma mensagem e ter como resposta do servidor a mesma mensagem com as letras maisculas. 7. A ferramenta OpenJDK As aplicaes distribudas (que utilizam os protocolos da camada de transporte TCP/UDP) utilizadas no laboratrio foram implementadas com a tecnologia Java, logo era necessrio preparar o ambiente para poder executa-las. A preparao do ambiente foi descrita nas sees anteriores, onde um dos itens citados foi o JDK, que ser abordado brevemente nesta seo. O JDK (Java Development Kit) um conjunto de ferramentas fornecido livremente pela Sun. Agrega um conjunto de softwares que constitui compilador, interpretador e utilitrios, fornecendo assim um pacote de ferramentas necessrias ao desenvolvimento de aplicaes Java. Dentre as ferramentas podemos citar: Javac (compilador) Java (interpretador) Javadoc (gerador de documentao) Ferramentas essncias para o desenvolvimento e execuo de aplicaes Java. 7.1. Caracterizao da ferramenta OpenJDK um projeto da Sun Microsystems para a criao de um Development Kit baseado totalmente em software livre e de cdigo aberto. 7.2. Compilando o cdigo .java Tendo em mos o cdigo fonte do programa em java, o comando utilizado para compilar o cdigo fonte java atravs do terminal : Javac nome.java Onde javac o compilador Java e nome corresponde ao nome do cdigo fonte em java. Uma vez compilado ser gerado um arquivo nome.class que corresponde ao cdigo em linguagem de mquina, mais especificamente o cdigo da MVJ (Mquina Virtual Java). Os cdigos fontes compilados foram: TCPClient.java TCPServer.java UDPClient.java UDPServer.java Como dito anteriormente a aplicao foi implementada usando os dois protocolos da camada de transporte o TCP e UDP, por motivos didticos, de forma a verificar os

Java

conceitos estudados em teoria aplicados prtica. A imagem abaixo representa um exemplo do cdigo fonte TCPClient.java sendo compilado

Figure 7: Compilando o cdigo fonte TCPClient.java

7.3. Executando a aplicao Uma vez compilada e com o arquivo nome.class em mos, basta executar o comando: Java nome Onde o nome corresponde ao nome da aplicao compilada para nome.class. As imagens abaixo mostram a execuo da aplicao (processos) tanto na verso TCP como na UDP, juntamente com seus componentes, o cliente e o servidor, no momento em que o cliente estabele conexo(no caso do TCP) e utiliza o servio oferecido pelo servidor.

Figure 8: Processos cliente e servidor da aplicao com TCP

Figure 9: Processos cliente e servidor da aplicao com UDP

Observando-se as imagens a cima verifica-se que para o usurio final no h nenhuma diferena quanto ao protocolo utilizado, tal escolha transparente ao usurio, que de fato verdade. Os impactos da escolha do protocolo sero sentidos pelo desenvolvedor da aplicao, no que diz respeito a confiabilidade e complexidade. Enquanto o protocolo o UDP mais simples de ser implementado, pois no oferece confiabilidade, necessitando de poucos parmetros, o TCP mais complexo, pois oferece confiabilidade, necessitando de mais parmetros. A confiabilidade no oferecida pelo UDP pode ser implementada na aplicao, tornando-a mais complexa, dependendo da aplicao. De forma geral, o desenvolvimento de uma aplicao distribuda no uma tarefa trivial, exigindo tempo e investimentos para se obter um produto final desejado no que diz respeito as necessidades do usurio.

Concluso
Diante da realizao da prtica de programao de sockets vimos toda teoria apresentada em sala de aula sendo aplicada diante de nossos olhos em questo de segundos, mas os segundos necessrios para produo desse relatrio. Qualquer indivduo sem o conhecimento terico prvio, a ns apresentado, trataria tal situao como sendo a execuo de um aplicativo normal, sem saber que por trs de sua execuo vrios conceitos esto envolvidos. Dessa forma o estudo de uma rede (por mnimo que seja), no que diz respeito a sua arquitetura e sua pilha de protocolos importante para o desenvolvimento de aplicaes distribudas, uma vez que todos esses conceitos devem ser introduzidos durante o desenvolvimento para criao de uma aplicao que utilize de forma eficiente os servios oferecidos pela infraestrutura da rede.

Referncias Kurose, James F.; Ross, Keith; Redes de Computadores e a Internet: uma abordagem topdown. 5. ed. So Paulo: Addison Wesley, 2010. METROPLE DIGITAL. Disponvel em: < http://www.metropoledigital. ufrn.br/aulas/disciplinas/sist_operacional/aula_04.html >. Acesso em: 16 abril 2013. WIKIPEDIA. Disponvel em: < http://pt.wikipedia.org/wiki/Socket >. Acesso em: 17 abril 2013. WIKIPEDIA. Disponvel em: < http://pt.wikipedia.org/wiki/Dpkg >. Acesso em: 17 abril 2013. GUIA FOCA LINUX. Disponvel em: < http:// www.guiafoca. org/ ? page_id=326 >. Acesso em 15 abril 2013

You might also like