Como os roteadores utilizam a informação de endereço IP na transmissão de pacotes da internet?

TCP/IP � um acr�nimo para o termo Transmission Control Protocol/Internet Protocol Suite, dois dos mais importantes protocolos que conformam a pilha de protocolos usados na Internet. O protocolo IP, base da estrutura de comunica��o da Internet � um protocolo baseado no paradigma de chaveamento de pacotes (packet-switching).

Os protocolos TCP/IP podem ser utilizados sobre qualquer estrutura de rede, seja ela simples como uma liga��o ponto-a-ponto ou uma rede de pacotes complexa. Como exemplo, pode-se empregar estruturas de rede como Ethernet, Token-Ring, FDDI, PPP, ATM, X.25, Frame-Relay, barramentos SCSI, enlaces de sat�lite, liga��es telef�nicas discadas e v�rias outras.

A arquitetura TCP/IP, assim como a OSI, realiza a divis�o de fun��es do sistema de comunica��o em estruturas de camadas.

Como os roteadores utilizam a informação de endereço IP na transmissão de pacotes da internet?

Camada de Enlace:

A camada de enlace � respons�vel pelo envio de datagramas constru�dos pela camada de Rede. Esta camada realiza tamb�m o mapeamento entre um endere�o de identifica��o do n�vel de rede para um endere�o f�sico ou l�gico.

Os protocolos deste n�vel possuem um esquema de identifica��o das m�quinas interligadas por este protocolo. Por exemplo, cada m�quina situada em uma rede Ethernet, Token-Ring ou FDDI possui um identificador �nico chamado endere�o MAC ou endere�o f�sico que permite distinguir uma m�quina de outra, possibilitando o envio de mensagens espec�ficas para cada uma delas. Tais rede s�o chamadas redes locais de computadores.

Camada de Rede (ou Inter-Rede):

Esta camada realiza a comunica��o entre m�quinas vizinhas atrav�s do protocolo IP. Para identificar cada m�quina e a pr�pria rede onde essas est�o situadas, � definido um identificador, chamado endere�o IP, que � independente de outras formas de endere�amento que possam existir nos n�veis inferiores. No caso de existir endere�amento nos n�veis inferiores � realizado um mapeamento para possibilitar a convers�o de um endere�o IP em um endere�o deste n�vel.

Dentre os v�rios protocolos existentes nesta camada, tais como o ICMP e o IGMP, o protocolo IP � o mais importante pois implementa a fun��o mais importante desta camada que � a pr�pria comunica��o inter-redes. Para isto ele realiza a fun��o de roteamento que consiste no transporte de mensagens entre redes e na decis�o de qual rota uma mensagem deve seguir atrav�s da estrutura de rede para chegar ao destino.

O protocolo IP utiliza a pr�pria estrutura de rede dos n�veis inferiores para entregar uma mensagem destinada a uma m�quina que est� situada na mesma rede que a m�quina origem. Por outro lado, para enviar mensagem para m�quinas situadas em redes distintas, ele utiliza a fun��o de roteamento IP. Isto ocorre atrav�s do envio da mensagem para uma m�quina que executa a fun��o de roteador. Esta, por sua vez, repassa a mensagem para o destino ou a repassa para outros roteadores at� chegar no destino.

Camada de Transporte:

Esta camada re�ne os protocolos que realizam as fun��es de transporte de dados fim-a-fim, ou seja, considerando apenas a origem e o destino da comunica��o, sem se preocupar com os elementos intermedi�rios. A camada de transporte possui dois protocolos que s�o o UDP (User Datagram Protocol) e TCP (Transmission Control Protocol).

O protocolo UDP realiza apenas a multiplexa��o para que v�rias aplica��es possam acessar o sistema de comunica��o de forma coerente.

O protocolo TCP realiza, al�m da multiplexa��o, uma s�rie de fun��es para tornar a comunica��o entre origem e destino mais confi�vel. S�o responsabilidades desse protocolo: o controle de fluxo, o controle de erro, a sequencia��o e a multiplexa��o de mensagens.

Camada de Aplica��o:

A camada de aplica��o re�ne os protocolos que fornecem servi�os de comunica��o ao sistema ou ao usu�rio. Pode-se separar os protocolos de aplica��o em protocolos de servi�os b�sicos ou protocolos de servi�os para o usu�rio:

Protocolos de servi�os b�sicos, que fornecem servi�os para atender as pr�prias necessidades do sistema de comunica��o TCP/IP: DNS, BOOTP, DHCP.

Protocolos de servi�os para o usu�rio: FTP, HTTP, Telnet, SMTP, POP3, IMAP, TFTP, NFS, NIS, LPR, LPD, ICQ, RealAudio, Gopher, Archie, Finger, SNMP e outros.

Este artigo irá se basear apenas nas principais camadas de apoio ao roteamento.

Aplicação:

No TCP/IP, a camada de aplicação vai fazer a incorporação das camadas de apresentação e sessão do modelo OSI. 

Dica: A própria aplicação vai cuidar da apresentação e da diferenciação das sessões. 

 De acordo com o seu modo de operação, as aplicações podem ser classificadas em 3 modos. 

  • Cliente (EX: Navegador WEB) 
  • Servidor (EX: Servidor WEB Apache) 
  • Ambos (EX: Aplicação P2P) 

Cliente: É um navegador WEB buscando dados com um servidor WEB. 

Servidor: Atuando neste modo, a máquina irá fornecer conexão para o "cliente" puxar as informações, ou seja, operando no modo servidor significa que você fornece conteúdos. 

Ambos: Você atua como cliente e servidor. Você é cliente quando estiver buscando dados numa outra máquina e servidor quando alguém estiver buscando informações na sua máquina. 

HOST-TO-HOST (Transporte) 

Nesta camada temos dois principais protocolos: O TCP e o UDP.  

TCP: (Transmission Control Protocol) permite uma transmissão confiável e é um tipo de protocolo exigido por algumas aplicações.   

Dica: Em contrapartida, por ter um overhead maior (Cabeçalho mais complexo de 20 Bytes de extensão), ele não é tão ágil.  

UDP: (User Datagram Protocol) é uma versão mais light do TCP, seu cabeçalho tem apenas 8 Bytes, o que o torna um protocolo de transporte muito mais rápido. 

Diferença - TCP e UDP 

A principal diferença é que o TCP estabelece uma comunicação confiável e o UDP não. 

Dica: Com o TCP você tem certeza de que o pacote foi entregue. Já com o UDP você não tem certeza se o pacote foi entregue. Ou seja, com o UDP não existe informações referente ao pacote ser entregue ou não para o destino. Você não tem a confirmação. 

Quando você envia dados de 1GB via TCP, o protocolo quebra esses pacotes em vários fragmentos, o TCP faz a segmentação dos pacotes.

Cada fragmento é numerado, e quando esses fragmentos chegam no destino, o TCP da outra ponta sabe remontar aquele fluxo de dados e então é jogado para a aplicação, e a aplicação por sua vez consegue ler isso tranquilamente.

Dica: O TCP foca em confiabilidade e o UDP foca em performance. 

No UDP não existe essa numeração dos pacotes segmentados, o UDP quebra esses pacotes em vários segmentos. Sem a numeração descritas nos pacotes poderá acarretar no seguinte fato...Se o primeiro fragmento chegar na outra ponta depois do segundo, pelo fato de ter pegado rotas diferentes, o UDP da outra ponta vai jogar esses fragmentos para a aplicação de acordo com o que vier chegando.

Baseando-se nisso, a aplicação não consegue remontar o fluxo de dados original pelo fato de que o primeiro fragmento chegou depois do segundo.

Dica: Aplicações comum que rodam UDP é: Voz e Vídeo. Ou seja, mesmo que perca 10 fragmentos, isso não causa uma perda insignificante.

Cabeçalho TCP

Os campos selecionados em vermelho são os principais campos do cabeçalho TCP.

O fluxo de dados contidos dentro do cabeçalho TCP irá ser encapsulado e vai ser jogado para a aplicação.

O pacote encapsulado irá receber no cabeçalho todos estes controles se estiver usando o TCP como um protocolo de transmissão de dados.

Dica: O protocolo TCP tem um cabeçalho de 20 bytes só para controles.

Campos Porta origem e destino.

Os campos porta de origem e porta de destino baseiam-se nas portas lógicas que identificam a camada superior. Ou seja, de qual origem estes dados estão saindo e para qual destino de aplicação esses dados vão chegar.

Dica: Essa parte do cabeçalho TCP são identificadores da camada superior, que seria a camada de aplicação. Ou seja, nestes dois campos são identificados o tipo de aplicação que está gerando esses dados olhando a porta. Também é identificado para qual aplicação estes dados estão sendo destinado olhando a porta. Iremos ver como isso funciona na prática mais adiante.

Campo Sequence Number.

No TCP, este é o campo responsável por numerar os segmentos. Ele pega os fragmentos gerados, deixa os fragmentos em modo sequencial, leva para a outra ponta, a ponta do outro lado confirma os recebimentos dos pacotes e então essa mesma ponta entrega esses pacotes para a aplicação. Aplicação por sua vez recebe esses pacotes numerados e remonta todos eles em modo sequencial.

Dica: Isso só existe no TCP, no UDP não contém este campo.

Campo Acknowledgment Number.

Este é o campo que baseia-se em um modo de controle de recebimento e confirmação. (Ex.) – Eu enviei (32) segmentos, o destino vai receber e confirmar esses 32 recebimentos. A etapa de confirmação é codificada neste campo, este campo também tem ligação com o campo Window.

O Window envia uma determinada quantia de pacotes, essa quantia vai depender muito das confirmações que a outra ponta irá efetuar, se a outra ponta não conseguir dar conta de confirmar inúmeras sequências de pacotes numerados, a ponta que originou estes pacotes irá fazer uma alteração na transmissão, e então, irá ser enviados uma sequência menor de pacotes para que a ponta de destino consiga dar conta de confirmar os pacotes recebidos. Estes pacotes recebidos são confirmados pelo campo Acknowledgment Number.

Campo Window

Este é o campo que baseia-se no controle de tamanho da janela de comunicação. Isso identifica a quantidade de segmentos que ele pode enviar para a outra ponta de uma vez só, antes mesmo de esperar uma confirmação.

Dica: Essa janela vai se ajustando dinamicamente conforme essa transmissão for acontecendo.

Ele sempre começa enviando o máximo de segmentos para a outra ponta, conforme a ponta de origem não recebe a confirmação dos pacotes enviados, durante a transmissão, a origem diminui a quantidade de pacotes para que o destino consiga dar conta de receber e confirmar os recebidos.

      Dica: O objetivo é sempre mandar o máximo de pacotes possíveis.

Cabeçalho UDP

Os campos selecionados em vermelho abaixo faz referência aos principais campos descritos no cabeçalho UDP. O UDP baseia-se apenas nos campos de porta de origem e porta de destino.

Dica: O cabeçalho UDP é formado por 8 bytes, isso quer dizer que o tempo para processar os dados é muito mais rápido que o TCP, porém, o UDP contém muitas dependências. 

Portas lógicas TCP e UDP

Quando você faz uma requisição para o servidor, a porta lógica que identifica o seu browser é acima de 1024, esse valor é gerado aleatoriamente.

Dica: As portas lógicas acima de 1024 são destinadas para as máquinas que atuam em modo cliente, ou seja, é a porta de origem.

A porta lógica de destino são as portas conhecidas, exemplo, se for um servidor SSL (https) na outra ponta, a porta que iria ser descrita no cabeçalho TCP e UDP é a porta 443.

Dica: As portas lógicas identificadas de 1 à 1023 são destinadas à serviços. Ou seja, são as portas mais conhecidas.

Portas lógicas conhecidas – Exemplo

Dica: Portas de 1 a 1023 = Well known ports (Aplicações Servidoras).

Dica: Portas de 1024 para cima = Portas Dinâmicas (Aplicações Cliente).

Portas lógicas de aplicações que usam TCP e UDP como protocolo de transporte:

FTP: Se aloca na porta 21 e utiliza o TCP como protocolo de transporte. Telnet, SMTP, HTTP e POP3 também utilizam o TCP como protocolo de transporte.

O SNMP se aloca na porta 161 e utiliza o UDP como protocolo de transporte. TFTP e SYSLOG também utilizam o UDP como protocolo de transporte.

O DNS é um caso à parte....Se aloca na porta 53 e utiliza o UDP e TCP como protocolo de transporte. Normalmente, o DNS utiliza o UDP como protocolo de transporte.

Dica: O DNS via UDP é utilizado quando o cliente se comunica com o servidor. O DNS via TCP é utilizado quando tem 2 servidores se comunicando entre eles.

Exemplo de comunicação: 

Nesta imagem mostra uma requisição feita pelo meu PC. Estou com a janela do browser aberta e ao mesmo tempo tentando acessar um Web Site.

Quando eu gero essa requisição HTTP, o meu browser irá adotar a porta 1144 para esta sessão. Lembre-se que, em modo Cliente as portas lógicas adotadas são acima de 1024, o meu browser adotou a 1144. O protocolo que vai ser usado é o TCP por que é esse protocolo que o HTTP utiliza para transportar as informações.

Percebe-se que a porta de destino é a porta 80. O servidor já está esperando essa requisição. Por isso que nós acostumamos a falar que o servidor web está “ouvindo” na porta 80, ele foi configurado para ter a porta 80 aberta e esperando conexões.

O servidor recebe essa requisição, processa e envia de volta, ele envia como origem a porta em que ele se aloca e como destino é atribuído a porta do meu browser (1144).

A imagem acima nada mais é que o cabeçalho TCP, ou seja, o cabeçalho TCP é exatamente está imagem. Percebe-se que não tem endereço IP, o endereço IP aparece na camada de rede.

Este cabeçalho da camada de transporte irá ser encapsulado encima de um pacote IP. Também irá ser contido junto nesse "pacotão" o cabeçalho IP. Dentro desse cabeçalho irá ser descrito o endereço IP de origem e o endereço IP de destino como uns dos principais campos dentro do cabeçalho IP.

Dica: A camada de transporte lida apenas com portas lógicas e não com endereços IP.

Network (Rede)

Existem 3 protocolos de apoio que rodam junto com o protocolo IP. São eles, ARP, RARP e o ICMP.

Dica: O RARP já não é mais utilizado, ficou apenas como legado.

Os campos em vermelho selecionados abaixo são os principais campos contidos dentro do cabeçalho IP.

Campo Version

O campo Version identifica a versão do IP que você está utilizando. Se é versão 4 ou ipv6.

Campo Priority and Type of Services

É a onde são codificados os elementos Qos para que um determinado pacote IP seja priorizado dentro da rede.

Campo Time to Live

Este é o campo que determina o tempo de vida de um pacote IP dentro da rede com base nos saltos que ele atravessa.

(Ex.): Se o pacote IP saltou em 30 elementos de rede e não chegou ao seu destino, automaticamente ele é descartado.

 Campo Protocol

Este é o campo que identifica a camada superior.

O cabeçalho IP – Campo “Protocol”

Para fazer a identificação do protocolo da camada superior, o campo “protocol” utiliza esses números descritos acima.

Esses valores são declarados no formato hexadecimal. O IP identifica o TCP pelo número 6 e o UDP pelo número 17. 0x06 ou 0x17.

O protocolo ICMP (Internet Control Message Protocol).

É um protocolo mensageiro, transporta mensagens entre elementos de uma rede.

Mensagens Transportadas

  • Destination Unreachable (Destino Inalcançável).
  • Buffer Full (Buffer Cheio).
  • TTL Expired (Mensagem Obituária).

Todas estas mensagens, o protocolo retorna para a origem descrevendo o que aconteceu. O Ping e Traceroute utilizam o ICMP como suporte para identificar se um determinado nó de rede está lá ou não.

O protocolo ARP (Address Resolution Protocol).

Tem a função de mapear endereços lógicos (IP) para endereços físicos (MAC).

ARP – Exemplo

O HostA conhece o IP do HostB, mas isso não é o suficiente para que eles se comuniquem. Então o HostA envia o pacote ARP para a rede, o switch não tem o MAC do HostB em sua tabela CAM (Content Addressable Memory), então ele propaga para todas as suas interfaces ativas. Quando este pacote chega na interface que o HostB está associado, o HostB irá desencapsular apenas a parte que contém o cabeçalho IP, o HostB identificou que no cabeçalho consta o seu endereço IP, então ele manda o pacote de resposta contendo o seu endereço MAC descrito no cabeçalho.

Dica: Em layer 2, o ARP só é visto em redes Ethernet (Padrão utilizado atualmente).

Dica: O Frame-Relay é um tipo de rede que não usa o ARP para mapear endereços lógicos para endereços físicos. Ele utiliza o IARP. No conceito de Frame-Relay, o endereço físico não é chamado de MAC, é chamado de DLC.

O protocolo RARP (Reverse Address Resolution Protocol).

Tem a função de mapear endereços físicos (MAC) para endereços lógicos (IP).

 RARP – Exemplo

O RARP é a evolução do DHCP, porém, o DHCP atua na camada de aplicação e o RARP atua na camada de rede.

Ucast / Acast / Mcast / Bcast: (Padrões de comunicação)

Unicast: É uma conexão de um para um, sempre. Ponta A falando com a ponta B.

Anycast: Não é algo exclusivo do IPV6, IPV4 também existe este conceito de comunicação.

Esses nós no Anycast baseia-se numa requisição feita por um usuário em um serviço específico. Esses três elementos (Nós) têm o mesmo endereço IP. Ou seja, o que estiver mais próximo da requisição de origem irá responder.

Um exemplo clássico de Anycast é o DNS público do Google (8.8.8.8). Todos nós temos o hábito de utilizar este serviço para resolução de nomes pelo fato de ser “impossível” que ele caia.

Existe milhares de servidores DNS configurados com o mesmo IP. E o que vai responder sua requisição é o que tiver mais próximo de você fisicamente.

Se o primeiro cair, o segundo irá te responder rapidamente. Ou seja, isso é baseado em uma infraestrutura de alta disponibilidade.

Dica: Sabemos que um servidor não pode ter o mesmo IP igual ao do outro servidor, mas a estrutura do Anycast permite isso. Existe uma filtragem de roteamento por trás.

Existe um carinha chamado BGP configurado por trás para filtrar isso de forma que os anúncios vão ser inteligentes para saber que em uma determinada região existe inúmeros servidores configurados com o mesmo endereço IP. Mas em termos de roteamento, é definido o servidor mais específico como referência para aquela determinada região.

Multicast: Se refere à pacotes que são destinados para um determinado grupo.

Exemplo de Multicast é o protocolo OSPF, quando ele faz atualização de rotas, ele envia os pacotes do tipo HELLO para todos os routers que está rodando OSPF na rede. Ou seja, roteadores recebem Broadcast e Multicast, porém, eles não os propagam.

 Broadcast: São pacotes que tem como destino todos os elementos da rede.

Exemplo de Broadcast é o ARP, O Broadcast ARP envia pacotes para todos os elementos da rede e somente um deles irá retornar uma resposta.

Como funciona o encaminhamento de pacotes de dados em uma rede IP?

O encaminhamento de datagramas IP podem, portanto, ser executados da seguinte maneira: Um datagrama é enviado de um host de origem para um host de destino, possivelmente passando por vários roteadores ao longo do caminho.

Quais informações são usadas pelos roteadores para encaminhar um pacote de dados para seu destino?

Endereço IP destinoo endereço IP do dispositivo receptor. O endereço IP destino é usado por roteadores para encaminhar um pacote ao seu destino.

Qual é a função de um roteador IP?

O roteamento de pacotes é uma das principais funções da camada rede da Internet. O protocolo IP assume que um computador é capaz de enviar datagramas a qualquer outro computador conectado a mesma rede local. Caso o destinatário não esteja na mesma rede, a função de roteamento é transferida para os roteadores.

Como funciona o roteamento na internet?

Como funciona o roteamento? Os roteadores referem-se a tabelas de roteamento interno para tomar decisões sobre como rotear pacotes ao longo dos caminhos da rede. Uma tabela de roteamento registra os caminhos que os pacotes devem seguir para chegar a todos os destinos pelos quais o roteador é responsável.