• Sign in
 

LATAM Team blog

Search Blogs
Tags
  • Cloud
  • Cluster
  • Crash
  • Desarrollo
  • Desenvolvimento
  • Directory Services
  • DST
  • Español
  • Exchange/Outlook
  • Hang
  • High Availability
  • IIS
  • Networking
  • Office
  • People
  • Performance
  • Português
  • PowerShell Scripts
  • Security
  • Setup
  • Sharepoint
  • SQL
  • Virtualization
  • Windbg Scripts
  • Windows
Blog - News

Where Are You Coming From Today?

Where are you now?

Follow us on:

Options
  • Blog Home
  • About
  • Share this
  • RSS for posts
  • Atom
  • RSS for comments
Archive
Archives
  • May 2013 (4)
  • April 2013 (5)
  • March 2013 (6)
  • February 2013 (3)
  • January 2013 (3)
  • December 2012 (2)
  • November 2012 (1)
  • October 2012 (4)
  • September 2012 (5)
  • August 2012 (2)
  • July 2012 (2)
  • June 2012 (3)
  • May 2012 (13)
  • April 2012 (6)
  • March 2012 (6)
  • February 2012 (4)
  • January 2012 (7)
  • December 2011 (11)
  • October 2011 (6)
  • September 2011 (1)
  • August 2011 (3)
  • July 2011 (7)
  • June 2011 (6)
  • May 2011 (5)
  • April 2011 (2)
  • March 2011 (13)
  • February 2011 (1)
  • January 2011 (5)
  • December 2010 (6)
  • November 2010 (1)
  • October 2010 (6)
  • September 2010 (2)
  • August 2010 (3)
  • July 2010 (3)
  • June 2010 (5)
  • May 2010 (1)
  • April 2010 (10)
  • March 2010 (21)
  • February 2010 (8)
  • January 2010 (3)
  • December 2009 (5)
  • November 2009 (5)
  • October 2009 (6)
  • September 2009 (8)
  • August 2009 (9)
  • July 2009 (1)
  • June 2009 (3)
  • May 2009 (2)
  • April 2009 (7)
  • March 2009 (4)
  • February 2009 (7)
  • January 2009 (7)
  • December 2008 (8)
  • November 2008 (7)
  • October 2008 (22)
  • September 2008 (17)
  • August 2008 (13)
  • July 2008 (11)
  • June 2008 (7)
  • May 2008 (3)
  • April 2008 (2)
  • March 2008 (6)
  • January 2008 (4)
  • December 2007 (9)
  • November 2007 (4)
  • October 2007 (3)
  • September 2007 (8)
  • August 2007 (4)
  • July 2007 (2)
  • June 2007 (5)
  • May 2007 (7)
  • April 2007 (9)
  • March 2007 (7)
  • February 2007 (6)
  • January 2007 (4)
  • December 2006 (14)
  • November 2006 (10)
  • October 2006 (10)
  • September 2006 (11)
  • August 2006 (15)
  • July 2006 (7)
  • June 2006 (14)
  • May 2006 (22)
  • April 2006 (16)
  • March 2006 (20)
  • January 2006 (1)

Utilizando o Network Monitor 3 para Entender o Tráfego HTTP

TechNet Blogs > LATAM Team blog > Utilizando o Network Monitor 3 para Entender o Tráfego HTTP

Utilizando o Network Monitor 3 para Entender o Tráfego HTTP

LatamBlog
10 Sep 2007 5:30 PM
  • Comments 1

Por: Yuri Diógenes

 

1. Introdução

 

Algumas vezes recebo pergunta de clientes, alunos ou outros profissionais de TI acerca de como fazer para ler e entender capturas de rede. Minha resposta sempre é: para ler tráfego de rede é necessário saber como o protocolo a qual se está analisando funciona. Em outras palavras, não adianta saber muito sobre a ferramenta de captura de tráfego e não entender sobre o protocolo. O conhecimento do protocolo é essencial para saber o que esperar durante a leitura do pacotes. A verdade é que é difícil saber todos detalhes de todos protocolos e é comum pesquisar sobre um determinado protocolo durante a leitura de arquivo de captura de rede. Porém, o que é indispensável é ter uma boa base da arquitetura TCP/IP. Desta forma, este artigo parte do pressuposto que você tem esta base necessária.

 

Para este artigo iremos usar o protocolo HTTP, que é um dos protocolos que usamos diariamente para acessar Internet. O artigo tem como objetivo entender o tráfego HTTP através do uso da ferramenta Microsoft Network Monitor 3.

 

2. Componentes HTTP

 

O protocolo HTTP é composto basicamente de duas mensagens principais, são elas: HTTP Request e HTTP Response. Na figura abaixo temos um exemplo destas mensagens:

 

Figure 1 – HTTP Messages

 

Vejamos uma breve explicação sobre os principais campos que compões uma mensagem:

·         HTTP Version: mostra a versão do protocol HTTP usado na mensagem (ex.: HTTP 1.0 or HTTP 1.1).

·         Method: trata-se da ação que o cliente está requisitando para o servidor (ex.: GET and POST).

·         Status Code: trata-se do código que descreve o que aconteceu durante esta determinada transação (ex.: 200, 301 and 407).

·         Reason: é um complemento para o campo anterior (ex.: OK, NOT OK).

·         Headers: o conteúdo do cabeçalho (header) vai depender da versão do protocolo HTTP em uso. Por exemplo, o protocolo HTTP/1.1. tem alguns campos específicos para esta versão.

·         Body: algumas mensagem vão conter um corpo para o texto, que por sua vez é o dado em si. Porém, alguns outros tipos de mensagem não contém corpo (body).

 

Com base nesta breve explicação acerca dos principais components das mensagens HTTP, vamos utilizar o NetMon 3 para verificar o funcionamento deste protocolo.

 

3. Entendendo as Mensagens HTTP usando o Netmon3

 

Neste exemplo o servidor está tentando acessar o site www.sysinternals.com. O servidor que está tentando fazer o acesso a este site está usando o Windows Server 2003 e está atrás de um servidor Proxy (com ISA Server 2004) e usando autenticação integrada. Todo este tráfico foi capturado a partir deste servidor enquanto estava acessando este site.

 

Uma ótima forma de entender a conversa HTTP é adicionar as colunas HTTP is Request e HTTP is Response. A coluna será mostrada com o número 1 caso seja verdadeira, com isso fica fácil identificar se é uma requisição ou uma resposta HTTP.

 

 

Figura 2 – Escolhendo as colunas.

 

Para este exemplo é bem simples identificar o tráfego, porém em um cenário real, fica mais difícil chegar diretamente ao pacote que contém a requisição para a URL. O primeiro pensamento que temos é: há, vamos criar um filtro. Mas, o problema é que ao criar-se um filtro, apenas o tráfego da origem e do destino será mostrado e não é este o objetivo aqui.

 

Existe uma função bem interessante no Netmon3 que permite você usar um filtro para encontrar um pacote. Para usar esta função você precisa clicar no menu Frames e depos clicar em Find. A seguinte janela aparecerá:

 

Figura 3  – Encontrar um pacote basedo em um filtro.

 

Neste caso queremos encontrar um pacote que atenda o seguinte critério:

 

Contains(http.request.URI,”sysinternals.com")

 

Após digitar este filtro e clicar no botão Find o pacote que atende esta requisição será selecionado. Após isso nós podemos fechar esta janela e revisar o pacote. Aqui o cabeçalho HTTP para este pacote:

 

- Http: Request, GET http://www.sysinternals.com/

  - Request:

     Command: GET

   - URI: http://www.sysinternals.com/

    + Uri:

     ProtocolVersion: HTTP/1.0

     Accept:  image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*

     Accept-Language:  en-us

     UA-CPU:  x86

     Proxy-Connection:  Keep-Alive

     UserAgent:  Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322)

     Host:  www.sysinternals.com

     HeaderEnd: CRLF

 

Como você pode ver, este é o pacote HTTP que faz a requisição da mensagem e alguns dos componentes que foram explicados anteriormente aparecem neste pacote. Vamos verificar a resposta do servidor:

 

- Http: Response, HTTP/1.1, Status Code = 301

  - Response:

     ProtocolVersion: HTTP/1.1

     StatusCode: 301, Moved permanently

     Reason: Moved Permanently

     Via:  1.1 SRVISA

     Connection:  Keep-Alive

     Proxy-Connection:  Keep-Alive

     ContentLength:  31

     Date:  Sun, 26 Aug 2007 15:05:10 GMT

     Location:  http://www.microsoft.com/technet/sysinternals

     ContentType:  text/html

     Server:  Microsoft-IIS/6.0

     XPoweredBy:  ASP.NET

     Set-Cookie:  ASPSESSIONIDCCRASDTB=OKKIMCCDOMFAEPIPJCLNPEBN; path=/

     Cache-control:  private

     HeaderEnd: CRLF

  + payload: HttpContentType =  text/html

 

Nesta mensagem de resposta HTTP é realmente importante enfatizar um ponto em particular, que é o código do status (Status Code). O código para esta resposta é 301, este número em sí já diz muita coisa. Por isso a importância de entender o significado destes códigos baseado no intervalo do número. Este intervalo está descrito na tabela abaixo:

 

Status Code

Means

200 – 299

Success

300 – 399

Redirection

400 – 499

Erro no lado do cliente

500 – 599

Erro no lado do servidor

 

Os parses do netmon3 para o protocol HTTP tem a definição dos principais códigos. Para conferir estes códigos basta clicar na guia Parses, clicar em Protocols e em seguida clicar em HTTP. No painel da direita as definições iram aparecer.

 

Figura 4 – Parses do Protocolo HTTP no Netmon3.

 

Como está é uma resposta de redirecionamento, o campo “location” tem o local onde a página está localizada. Esta mensagem é apresentada para o cliente, que baseado nesta mensagem vai fazer uma nova requisição HTTP para esta URL.

 

4. Conversação HTTP com Netmon3

 

A característica de conversação do Netmon3 permite que você visualize os frames agregados pela mesma conexão. Para este exemplo, vejamos os frames agregados para a requisição da URL www.microsoft.com:

 

Figura 5 – Filtrando pela conversão.

 

Este filtro pode ajudar bastante no entendimento de toda a conexão entre o cliente e o servidor durante esta comunicação. Uma outra forma de personalizar este filtro é clicando no botão direito na conversão e escolhendo a opção “Copy Conversation Filter to Clippboard” como mostrado na figura 5.

 

Após revisar esta conversação podemos ver outro código retornado pelo servidor, desta vez com um erro no lado do cliente:

 

- Http: Response, HTTP/1.1, Status Code = 407

  - Response:

     ProtocolVersion: HTTP/1.1

     StatusCode: 407, Proxy authentication required

     Reason: Proxy Authentication Required ( The ISA Server requires authorization to fulfill the request. Access to the Web Proxy filter is denied.  )

     Via:  1.1 SRVISA

   - ProxyAuthenticate:  Negotiate

      WhiteSpace: 

      AuthenticateData: Negotiate

   - ProxyAuthenticate:  Kerberos

      WhiteSpace: 

      AuthenticateData: Kerberos

   - ProxyAuthenticate:  NTLM

      WhiteSpace: 

      AuthenticateData: NTLM

     Connection:  Keep-Alive

     Proxy-Connection:  Keep-Alive

     Pragma:  no-cache

     Cache-Control:  no-cache

     ContentType:  text/html

     ContentLength:  4106 

     HeaderEnd: CRLF

  + payload: HttpContentType =  text/html

 

A razão pela qual esta requisição foi considerada com erro é devido ao fato de que o servidor ISA requerer autenticação para acesso a Internet. Como padrão o primeiro pacote do Internet Explorer será enviado sem credenciais, então é esperado de fato termos tal pacote voltando para o cliente.

Após a resposta do servidor, o cliente vai enviar um outro pacote com as credenciais usando NTLM ou Kerberos, isso vai depender da configuração.

 

5. Informações Gerais

 

Existem vários commandos que podem ser usados para obter maiores informações do tráfego HTTP. Vejamos alguns deles:

 

Filtro

Explicação

contains(Http.Response.StatusCode,"301")

Mostra todos pacotes HTTP onde o código de status é 301

Property.HttpIsRequest

Mostra todos pacotes de requisições HTTP

Property.HttpPragma

Mostra todos pacotes HTTP que não podem ser colocado em cache. Para maiores informações veja a definição do campo Pragma, em HTTP Field definition.

 

 

  • 1 Comments
Português, Networking
Comments
Comments
  • Fabiano
    20 Sep 2007 6:26 PM

    Show o Artigo Yuri.

    Parabens!!

Page 1 of 1 (1 items)
  • © 2013 Microsoft Corporation.
  • Terms of Use
  • Trademarks
  • Privacy & Cookies
  • 5.6.426.415
  • TechNet
  • Products
  • IT Resources
  • Downloads
  • Training
  • Support
Products
  • Windows
  • Windows
    Server
  • System
    Center
  • Internet
    Explorer
 
  • Office
  • Office 365
  • Exchange
    Server
 
  • SQL Server
  • SharePoint
    Products
  • Lync
  • See all products »
Resources
  • Evaluation Center
  • Learning Resources
  • Microsoft IT Camps
  • Microsoft Technical Communities
  • Microsoft Virtual Academy
  • Script Center
  • Server and Tools Blogs
  • Solution Accelerators
  • TechNet Blogs
 
  • TechNet Flash Newsletter
  • TechNet Gallery
  • TechNet Library
  • TechNet Magazine
  • TechNet Subscriptions
  • TechNet Video
  • TechNet Wiki
  • Windows Sysinternals
  • Virtual Labs
Solutions
  • Networking
  • Cloud and Datacenter
  • Security
  • Virtualization
Updates
  • Service Packs
  • Security Bulletins
  • Microsoft Update
Trials
  • Windows Server 2012
  • System Center 2012 SP1
  • Microsoft SQL Server 2012 SP1
  • Windows 8 Enterprise
  • See all trials »
Related Sites
  • Microsoft Download Center
  • TechNet Evaluation Center
  • Drivers
  • Compatability & Converters
  • Windows Sysinternals
  • TechNet Gallery
Training
  • Training Catalog
  • Class Locator
  • Microsoft Virtual Academy
  • Free Windows Server 2012 courses
  • Free Windows 8 courses
  • SQL Server training
  • e-Learning overview
Certifications
  • Certification overview
  • MCSA: Windows 8
  • Windows Server Certification (MCSE)
  • Private Cloud Certification (MCSE)
  • SQL Server Certification (MCSE)
Other resources
  • TechNet Events
  • Second shot for certification
  • Born To Learn blog
  • IT Camps
Support by product
  • Exchange Server
  • Forefront Server
  • Forefront Edge Security
  • Forefront Server Security
  • Internet Explorer
  • Office
  • SharePoint
 
  • SQL Server
  • System Center
  • Windows Server
  • Windows XP
  • Windows Vista
  • Windows 7
  • Windows 8
Other support links
  • Microsoft Premier Online
  • Microsoft Fix It Center
  • TechNet Forums
  • MSDN Forums
  • Security Bulletins & Advisories
  • International support solutions
  • Log a support ticket
  • Look up event IDs and error codes
Not an IT pro?
  • Microsoft Customer Support
  • Microsoft Community Forums