Entendendo o TCP/IP

Vejo muita gente configurando redes, firewall e proxy, e nem ao menos sabem o que são endereços inválidos, pra que serve a máscara de sub-rede, o que é um broadcast. Enfim, por isso resolvi escrever uma série de artigos visando mostrar o básico do tcp/ip, desde a camada física, endereços mac, arp, passando por ip, cálculo da máscara, até chegar em regras de firewall, nat e proxy.

[ Hits: 110.800 ]

Por: Ricardo Lino Olonca em 19/03/2007


Camada Física - Como ela funciona



Em uma rede cabeada, os dados trafegam em forma de energia elétrica. A eletricidade é dissipada através de todos os cabos interligados. Portanto, se a minha máquina quer se comunicar com o servidor, os pacotes que trafegam na rede viram cargas elétricas, correndo todas as máquinas da rede, até chegar ao servidor. Então como uma máquina sabe se um pacote que está passando é para ela ou não? Quem pensou no endereço ip, errou!

Todas as placas de rede possuem um endereço físico definido em fábrica. Cada placa de rede tem (ou deveria ter) um endereço físico único no mundo. Para saber o endereço físico da sua placa de rede é só executar o comando:

$ ifconfig


Podemos verificar na figura o endereço físico (mac) da placa de rede.

Quando uma máquina quer se comunicar com outra, ela precisa descobrir o endereço mac do destino. E como ela consegue isso? Através do arp. O arp é um subprotocolo que cuida de converter endereços ip para endereços mac. O arp mantém uma tabela dinâmica com os endereço já convertidos. Ao enviar uma pacote para a servidor, o arp é acionado para converter o endereço ip para mac.

O primeiro passo do arp é consultar a sua tabela interna em busca do endereço ip. Caso não exista, o arp fará um broadcast na rede, ou seja, jogará um pacote na rede perguntando qual é o endereço mac do servidor. Um pacote de broadcast possui como endereço mac de destino FF:FF:FF:FF:FF:FF. Todas as máquinas pegam esse pacote. Assim, o servidor consegue responder ao arp com o seu mac. O arp, por sua vez, adiciona o ip e o mac do servidor em sua tabela arp, passando o endereço mac para a aplicação. Na próxima vez que for necessário acessar o servidor, o arp não mais fará broadcast, mas consultará a sua tabela antes.


Para listarmos a tabela arp, usamos o comando:

$ arp -a


Quando ligamos a máquina a tabela arp está vazia. Vamos pingar uma máquina da rede e ver novamente a tabela arp.

$ ping 172.28.80.56
$ arp -a



Para vermos melhor como a comunicação é feita através do mac, vamos adicionar um mac estático na tabela arp.

$ arp -s 172.28.80.56 00:00:00:00:00:00
$ arp -a



Isso fará com que o endereço 172.28.80.56 esteja amarrado ao mac 00:00:00:00:00:00 na minha maquina. Então pingamos o ip.

$ ping 172.28.80.56


Como podemos ver, a máquina agora não pinga. Isso porque não existe nenhuma máquina com o endereço mac 00:00:00:00:00:00 na minha rede.

Para tirar essa entrada da tabela arp usamos o comando:

$ arp -d 172.28.80.56

Verificando a tabela arp...

$ arp -a

Note que agora não existe a entrada para a máquina 172.28.80.56. Vamos pingar a máquina.

$ ping 172.28.80.56

Agora ela responde.


Ao verificar a tabela arp novamente...

$ arp -a


Vale lembrar que o mac só é usado dentro do mesmo seguimento de rede. Para comunicações através de um roteador, como na Internet, você apenas pode conseguir o mac do seu roteador, pois é ele quem na verdade sai para a Internet. Mas lembre-se do mac, nós ainda vamos usá-lo no dhcp e no switch.

Página anterior     Próxima página

Páginas do artigo
   1. O que é um protocolo?
   2. As sete camadas OSI
   3. As quatro camadas do tcp/ip
   4. Camada Física - Como ela funciona
   5. Diferenças entre Hub e Switch
Outros artigos deste autor

Entendendo TCP/IP (Parte 6) - Firewall

MooseFS - Sistema de arquivos distribuído

Entendendo TCP/IP (Parte 3) - Resolução de nomes

Entendendo TCP/IP (parte 2) - Endereços IP

Entendendo TCP/IP (parte 4) - DHCP

Leitura recomendada

Compilando e instalando o Wine, WineTools e Internet Explorer(s) no Linux

Slackware descomplicado para iniciantes

Slackware no notebook Toshiba Satellite M55-S3262

Driver nVidia no Debian

Servidor proxy autenticado (Squid + DansGuardian + OpenLDAP)

  
Comentários
[1] Comentário enviado por forkd em 19/03/2007 - 12:15h

Olá, Ricardo!
Primeiramente parabéns pela iniciativa de escrever um artigo para a comunidade. Achei muito interessantes as analogias que você usou para explicar o funcionamento do modelo OSI e a definição de protocolo. Acho que só faltou exemplificar PORQUE a camada 4 (Transporte) e suas superiores são camadas fim a fim ("conversam" diretamente com suas camadas pares do outro lado).
Bom, na seção 3, onde você fala das camadas do modelo TCP/IP, foi colocado Serviço como a camada 3 desse modelo. Contudo, o que vemos nas bibliograficas mais usadas é esta camada ser descrita como TRANSPORTE. Isso pode levar confusão à cabeça de leitores que são iniciantes no assunto.
Outra coisa: faltou uma referência bibliografica. Onde o leitor pode procurar se quiser se aprofundar no modelo OSI, por exemplo?

Só pra citar algumas:

http://pt.wikipedia.org/wiki/TCPIP -> Página da Wikipédia que fala sobre o modelo TCP/IP.

http://pt.wikipedia.org/wiki/Modelo_OSI -> Página da Wikipédia que fala sobre o modelo OSI.

ftp://ftp.rfc-editor.org/in-notes/rfc791.txt -> O RFC original (791) que descreve o funcionamento do protocolo IP, datado de setembro de 1981.

ftp://ftp.rfc-editor.org/in-notes/rfc793.txt - > O RFC original (793) que descreve o funcionamento do protocolo TCP, datado de setembro de 1981 também.

Já que pretende fazer uma série de artigos, seria interessante rever estes conceitos.

Atenciosamente, junim.

[2] Comentário enviado por agofearth em 19/03/2007 - 12:57h

Jah estou aguardando os novos artigos :)

[3] Comentário enviado por thiagosc em 19/03/2007 - 15:08h

Parabéns pelo artigo ficou muito legal mesmo... e continue neste caminho!!!

[4] Comentário enviado por brejao em 19/03/2007 - 15:25h

blz de artigo, valew.

[5] Comentário enviado por paranoid em 19/03/2007 - 15:53h

Primeiramente gostaria de parabenizar o artigo que apresenta bons exemplos para abstração. Só queria, assim como nosso amigo junior, citar algumas coisas que estão diferentes quando comparadas a algumas pesquisas que fiz sobre o assunto e que são tratadas de uma mesma forma por vários autores. A primeira é a de que, no protocolo TCP/IP, a segunda camada é conhecida como a de ENLACE e a terceira é que é a camada de REDE, e como nosso amigo citou acima a quarta camada seria a de transporte, ficando da seguinte maneira: FÍSICA>ENLACE>REDE>TRASNPORTE. A segunda coisa q gostaria de citar é que o switch funciona na camada de enlace e não na de rede. O que funciona na camada de rede são os roteadores quanto ao hub é isso mesmo, funciona na camada física. E por último, não se pode diferenciar um switch de um hub apenas pela forma como as luzes piscam, na empresa onde trabalho, por exemplo, tem alguns modelos de switch's da 3COM que piscam todas as luzes. Mas é isso aí, não desanime, o assunto é bem denso mesmo. Estamos aguardando o próximo artigo.

[6] Comentário enviado por streetlinux em 19/03/2007 - 15:54h

Bom artigo. Bem simples e facil de entender. Parabéns.

Street`

[7] Comentário enviado por tatototino em 19/03/2007 - 16:11h

Você poderia dar umas dicas de segurança como "tabela arp estática" com a opção "arp -d arquivo" para evitar envenamento da tabela ou recomendar o uso do programa "arpwatch".
ahhh, poderia também usar algum snifer para exemplicar melhor como funciona o protocolo arp, seria de mais fácil entendimento para usuários leigos relatar como funciona a troca de pacotes do protocolo arp.

mas está "zero bala" o artigo, parabéns

[8] Comentário enviado por y2h4ck em 19/03/2007 - 20:04h

Não sei porque deram conceito 7 se o cara colocou no artigo tudo que ele propoz colocar...

[9] Comentário enviado por ricardoolonca em 19/03/2007 - 22:33h

Caro, jlojunior.

Obrigado pelas dicas. Realmente a camada 3 também é chamada de Transporte, mas alguns costumam chamar de Serviço, por causa dos "serviços" que rodam nela (http, smtp, pop3, etc.). Assim fica mais fácil de entender o que roda nesta camada. Quanto à bibliografia, realmente foi um vassilo meu. Prometo informá-los nos próximos artigos, como também links para maiores informações.

Caro paranoid

A ordem das camadas que você citou é da camada OSI, e eu estou falando das camadas TCP. O modelo OSI divide o protocolo em 7 camadas, mas o TCP, na prática, é divido em 4. a saber: Física, Rede, Serviço (ou Transporte) e Aplicação. O switch trabalha na camada de enlace da OSI, mas na física TCP. Quanto ao forma de verificar se um dispositivo é Hub ou Switch, é a primeira vêz que vejo um switch piscar as luzes juntas, principalmente 3Com, pois trabalho com 3Com há 10 anos. Mas pode ser que esse modelo seja diferente, ou que o teu aparelho tenha sido vendido como switch, mas internamente é um hub. Mas obrigado pelo comentário.

Aos demais, obrigado pelos comentários. Vou buscar seguir a dica do Tatototino.

[10] Comentário enviado por forkd em 19/03/2007 - 22:49h

Fala Ricardo!
Fico feliz que tenha assimilado as críticas construtivas! Só pra ser um pouco chato, sobre o comentário que você postou, os serviços citados por você (http, smtp, pop3) NÃO fazem parte da camada de Transporte, mas sim da camada de APLICAÇÃO. Da camada de Transporte seriam exemplos: TCP, UDP, DCCP e SCTP.

Fonte: http://pt.wikipedia.org/wiki/Camada_de_transporte

Forte abraço, brother!

[11] Comentário enviado por gsi.vinicius em 20/03/2007 - 10:15h

Rapaz, ótimo artigo.....só pecou um pouco pelo português...levanta vôo e não vou...outras cartas...enfim, coisas básicas, mas que o moderador em questão também observou e deixou como está.

O conteúdo está ótimo. Os erros não diminuem o valor do conteúdo, mas um texto bem escrito torna a leitura mais agradável e dinâmica.

Continue assim,

Abraço - Gregório

[12] Comentário enviado por fernandoamador em 08/04/2007 - 23:59h

Ótimo artgo...

[13] Comentário enviado por elgio em 20/07/2007 - 16:58h

Já se passou algum tempo, mas vá lá... Vou também entrar um pouco nesta polêmica de camadas...

A literatura (todos os livros de redes que conheço) prega o modelo TCP/IP com quatro camadas. Os nomes variam um pouco, até pelas questões de traduções, pois uma das camadas é chamada no ingles de Inter-Net (entre redes, nitidamente a que faz roteamento).

Contudo há unanimidade no sentido de que a camada física não faz parte do modelo TCP/IP, pois este modelo se refere ao que é programado pelo SO (kernel, no caso do Linux) e o nível físico trata apenas de forma de onda e só diz respeito ao fabricante da placa.

Assim sendo, as camadas e nomes mais citadas em literaturas modernas são:

Aplicação
Transporte
Rede (ou Internet)
Enlace

No Enlace temos os MAC Address e um switch realmente trabalha nesta camada. Na rede temos o roteamento IP, onde tem-se o Ipv4 e agora o Ipv6. Na de transporte os protocolos UDP e TCP (existe uma pequena divergência sobre onde estaria o ICMP, já que ele não transporta dados mas está sob o Ip). A de aplicação é a de aplicação mesmo.

Outra coisa: é complicado querer relacionar taco a taco OSI com TCP/IP. Algumas funções da OSI (apresentação, por exemplo) nem existem na TCP. Eu, por exemplo, na disciplina de Redes que ministro NEM desenvolvo o modelo OSI. Cito e descarto!

[14] Comentário enviado por danilobs em 02/04/2011 - 14:52h

Muito bom o artigo: simples e objetivo. Continue escrevendo...

Um abraço!

[15] Comentário enviado por julio_hoffimann em 08/04/2011 - 13:34h

Oi Ricardo, parabéns!

Muito bom o artigo, a analogia ajudou bastante o entendimento. Obrigado por compartilhar esses conceitos de forma clara.

Grande abraço!

[16] Comentário enviado por AyrtonGomes em 11/03/2012 - 21:11h

Li esse seu artigo de redes até o final, a parte 5, e achei muito bom, continue escrevendo artigos ótimos como este pois ajuda muito quem esta aprendendo, muito obrigado mesmo, nota 10.

[17] Comentário enviado por removido em 15/07/2016 - 15:45h

Muito bom.

[18] Comentário enviado por espanholeto em 17/10/2016 - 11:35h

Parabéns pela iniciativa Ricardo. Ainda hoje é muito difícil encontrar material técnico com linguagem acessível e didática!


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts