1. Analisando tráfego de pacotes com Wireshark.
Cintya G. Furtado da Silva1
1
Universidade Federal do Pará – Campus Santarém
cynthia_furtsilva@hotmail.com
Resumo. Este artigo apresenta o software, Wireshark, como importante
ferramenta de gerência de redes para a observação e monitoramento do
tráfego de dados. Através de um experimento realizado com um notebook
conectado à internet, os segmentos de dados gerados a partir do acesso a um
site específico, que foram capturados pelo software, analisados, e
identificadas as ações de conexão e transferência de dados, os protocolos
utilizados, assim como os objetos envolvidos na transmissão das informações.
1. Introdução
As redes de computadores foram inicialmente criadas para compartilhar dispositivos e
periféricos como impressoras, modems de alta velocidade, pc-fax e etc, pois a aquisição
de muitas unidades desses equipamentos era inviável financeiramente. Entretanto, à
medida que as redes aumentam e se integram, o compartilhamento dos dispositivos
torna-se secundário em comparação às outras vantagens oferecidas [Lopes].
As redes passaram a fazer parte do cotidiano dos usuários como uma ferramenta
que oferece recursos e serviços que permitem a interação e compartilhamento,
principalmente de informações. Em função disso é cada vez maior a necessidade de
gerenciar o ambiente de redes de computadores para manter seu funcionando de forma
eficiente [Lopes].
Atualmente, existem inúmeras aplicações que monitoram o tráfego das
informações através de um dispositivo ou mesmo o funcionamento do dispositivo,
gerando os dados que auxiliam no gerenciamento da rede [Ferrari, 2008]. Entre eles a
ferramenta WireShark, registrada pela GNU General Public License e utilizada
monitorar os pacotes de dados que trafegam através de uma rede [Motoro, 2009].
Esta ferramenta possui funcionalidades importantes para o administrador de uma
rede e para quem precisa aprender na prática as propriedades de um protocolo de
transferência, suas ações de conexão e transmissão de dados, e seus
interrelacionamentos [Motoro, 2009].
Neste trabalho, o wireshark foi utilizado para caracterizar o tráfego gerado por
uma aplicação web, seguindo determinados procedimentos:
1- O sistema teve que ser reiniciado para que todos os elementos de cache
fossem eliminados;
2- O Wireshark precisou ser configurado em modo não promíscuo;
3- O site: http://cassio.orgfree.com/disciplinas/gredes/atividade1/atividade.htm
foi acessado;
2. 4- O número pessoal de matrícula foi digitado no espaço designado da
aplicação web;
5- Os pacotes resultantes da conexão foram observados no Wireshark, até o
encerramento da captura com a conclusão do carregamento do site.
Após a execução desses passos foi constatada a operação dos protocolos DNS,
ICMP, TCP e HTTP em um numero total de 719 pacotes capturados, dentre os quais
foram observados alguns que não estavam no objetivo deste estudo como os acessos aos
seguintes domínios: au.download.windowsupdate.com, optimizedby.rmxads.com,
achmedia.com, ad.yieldmanager.com e outros que, como estes, não foram analisados.
O browser utilizado foi Mozilla Firefox 3.0.6.
2. Análise dos Pacotes de Dados
Após a realização dos procedimentos inicias listados acima é feito o acesso à
internet através do IP 189.118.17.170 e as primeiras informações que aparecem no
wireshark indicam a ação do protocolo Domain Name System DNS que cuida da
nomenclatura na internet [Kurose, 2006].
O DNS é o protocolo da camada de aplicação que introduziu Strings em ASCII
para identificar as máquinas que hospedam os serviços na rede global e desacoplá-los
dos endereços dessas máquinas [Tanenbeum, 2003]. As primeira solicitações feitas
através deste mecanismo buscam a identificação do valor do endereço IP do host
cassio.orgfree.com lançadas a dois destinatários diferentes. São obtidas respostas iguais
em ambos os casos: 216.245.205.125.
Com a identificação do endereço IP a máquina de origem ou cliente inicia as
ações de conexão com a máquina de destino ou servidor através de um dos protocolos
de transporte da internet, Transmission Control Protocol TCP, que foi projetado para
ofertar um fluxo de dados confiável em uma rede não confiável [Tanenbaum, 2003].
Para que o serviço TCP funcione é necessário que se estabeleça uma conexão
entre o soquete da máquina transmissora e o soquete da máquina receptora. Cada
soquete possui um número de endereço (IP do host) e um número de 16 bits local para
este host, chamado de porta [Tanenbaum, 2003].
As conexões TCP são estabelecidas por um handshake de três vias [Tanenbaum,
2003]. O lado cliente envia uma requisição de conexão especificando o endereço IP e a
porta à qual deseja se conectar, neste caso a porta unizensus 1151, é enviado também
um segmento de dados no qual o bit SYN está ativado e o bit ACK desativado. Figura 1.
3. Figura 1. Pacotes da conexão TCP por handshake de três vias.
Nos próximos pacotes observados verificou-se que a solicitação de conexão foi
aceita com através de um segmento de confirmação onde os bits SYN e ACK estavam
ativos. Figura 2.
Figura 2. Esquema do Handshak de três vias
Para encerrar a conexão o lado do servidor enviou um segmento com o bit FIN
ativado o significando que não havia mais dados a serem enviados. No entanto os dados
ainda poderiam ser enviados no outro sentido da conexão, apenas com os dois sentidos
desativados, a conexão é encerrada [Kurose, 2006].
Durante a captura foram estabelecidas outras conexões com as portas
resacommunity 1154, qsm-remote 1166, cisco-ipsla 1167 e vchat 1168.
Em meio a isso é possível ver que o protocolo ICMP, usado na camada de redes,
informa às camadas vizinhas através de uma mensagem de erro, que existe um que
pacote não pode ser entregue ou que a porta procurada não está acessível [Tanenbaum,
2003]. Figura 3.
4. Figura 3. Pacotes ICMP de mensagem de erro.
Pode ser observado ainda o funcionamento do Hypertext Transfer Protocol
HTTP, utilizado pelos servidores para se comunicar, por meio a solicitação do objeto
/disciplinas/gredes/atividade1/atividade.htm com o emprego do método GET. Neste
mesmo pacote foi informando também a versão do protocolo que está sendo usado
(HTTP/1.1).
Em resposta a solicitação o servidor retorna um código, 304, de status HTTP
avisando que o objeto solicitado não sofreu nenhuma modificação desde o ultimo
acesso, porém é necessária uma ação adicional para completar a solicitação já que os
códigos de status no formato 3xx, são freqüentemente usados para redirecionamento.
[Ferrari, 2008].
Outros objetos foram solicitados ao servidor através do método GET:
/disciplinas/gredes/atividade1/superior.htm, /disciplinas/gredes/atividade1/inferior.htm,
/disciplinas/gredes/atividade1/1.gif, /disciplinas/gredes/atividade1/7.gif,
/disciplinas/gredes/atividade1/8.gif.
1. Conclusões
Por meio deste trabalho foi possível visualizar o funcionamento dos protocolos
de transmissão de dados em uma rede e toda a variedade de informações contidas em
um pacote de dados e seus diferentes formatos de acordo com o serviço requerido. Pode
ser visto também que TCP é quem mais transmitiu informações e dados pela rede,
seguido do HTTP.
Está claro que uma observação superficial dos pacotes é capaz de fornecer
diversos subsídios para análise do funcionamento de uma rede e o software WireShark é
um grande aliado para esta finalidade quando o usuário detiver substancial domínio
sobre a teoria de redes de computadores.
No entanto, neste estudo ainda não foi possível esclarecer algumas questões
sobre o funcionamento do próprio programa e suas funcionalidades. Faz-se necessário
uma pesquisa mais abrangente sobre as mensagens de erro destacadas pelas cores de
alguns pacotes.
5. Referências
Tanenbaum, S. A. (2003). “Redes de Computadores”. Tradução da 4ª Edição. Elsevier
Editora Ltda. Rio de Janeiro
Kurose, F. J., Ross, W. K. (2006). “Redes de Computadores e a Internet – Uma
Abordagem Top-Down” Tradução da 3ª Edição. Pearson Addison Wesley. São Paulo
Ferrari, R. S. (2008). “Wireshark”. disponível em
http://www.vivaolinux.com.br/artigo/Wireshark-Artigo
Motoro, R. R. (2009). “Analisando Tráfego HTTP com Wireshark”. DinSec. São Paulo.