Modelos de rede
As redes de computadores consistem em muitos componentes e protocolos diferentes trabalhando juntos. Para entender o conceito de como a comunicação nó a nó acontece, vamos nos familiarizar com o modelo OSI e o modelo TCP/IP. Ambos os modelos ajudam a visualizar como está acontecendo a comunicação entre os nós.
Modelo OSI
O modelo Open Systems Interconnection (OSI) é um modelo de 7 camadas que hoje é utilizado como ferramenta de ensino. O modelo OSI foi originalmente concebido como uma arquitetura padrão para a construção de sistemas de rede, mas no mundo real as redes são muito menos definidas do que o modelo OSI sugere.
- Camada 7 (Aplicação) - um protocolo que define a comunicação entre o servidor e o cliente, por exemplo, protocolo HTTP. Se o navegador web quiser baixar uma imagem, o protocolo organizará e executará a solicitação;
- Camada 6 (Apresentação) - garante que os dados sejam recebidos em um formato utilizável. A criptografia é feita aqui (mas na realidade pode não ser verdade, por exemplo, IPSec);
- Camada 5 (Sessão) - responsável por configurar, gerenciar e fechar sessões entre cliente e servidor;
- Camada 4 (Transporte) - a responsabilidade principal das camadas de transporte é a montagem e remontagem, um fluxo de dados é dividido em blocos (segmentos), números de sequência atribuídos e encapsulados no cabeçalho do protocolo (TCP, UDP, etc.);
- Camada 3 (Rede) - responsável pelo endereçamento lógico dos dispositivos, os dados são encapsulados em um cabeçalho IP e agora chamados de "pacote";
- Camada 2 (link de dados) - Os dados são encapsulados em um cabeçalho personalizado, 802.3 (Ethernet) ou 802.11 (sem fio) e são chamados de "quadro", controlam o fluxo;
- Camada 1 (Física) - Meio de comunicação que envia e recebe bits, sinalização elétrica e interface de hardware;
Modelo TCP/IP
Este modelo tem o mesmo propósito que o modelo OSI, mas se encaixa melhor na solução de problemas de rede moderna. Comparando com o modelo OSI, o TCP/IP é um modelo de 4 camadas:
- Camada de aplicativo (4) - inclui camadas de aplicativo, apresentação e sessão do modelo OSI, o que simplifica significativamente a solução de problemas de rede;
- Camada de transporte (3) - igual à camada de transporte no modelo OSI (protocolos TCP, UDP);
- Camada de Internet (2) - faz o mesmo que a camada de Rede no modelo OSI (inclui ARP, protocolos IP);
- Camada de link (1) - também chamada de camada de acesso à rede. Inclui as Camadas 1 e 2 do modelo OSI, portanto, sua principal preocupação é a troca de dados físicos entre os nós da rede;
Ethernet
O protocolo de camada de enlace mais comumente usado (OSI Layer2) em redes de computadores é o protocolo Ethernet. Para se comunicar, cada nó tem um endereço atribuído exclusivo, chamado MAC (Media Access Control address), às vezes também é chamado de endereço Ethernet.
É de 48 bits e normalmente corrigido pelo fabricante (não pode ser alterado), mas nos últimos anos a personalização de endereços MAC é amplamente utilizada, o RouterOS também permite definir endereços MAC personalizados.
O formato MAC mais comumente usado é de 6 números hexadecimais separados por dois pontos (
D4:CA:6D:01:22:96
)O RouterOS mostra o endereço MAC em uma configuração para todas as interfaces do tipo Ethernet (Wireless, 60G, VPLS, etc.)
[admin@rack1_b32_CCR1036] /interface ethernet> imprimir Flags: X - desativado, R - em execução, S - escravo # NAME MTU MAC-ADDRESS ARP SWITCH 0 R ether1 1500 D4:CA:6D:01:22:96 habilitado 1 R ether2 1500 D4:CA:6D:01:22:97 ativado 2 R ether3 1500 D4:CA:6D:01:22:98 ativado 3 ether4 1500 D4:CA:6D:01:22:99 habilitado 4 ether5 1500 D4:CA:6D:01:22:9A ativado 5 ether6 1500 D4:CA:6D:01:22:9B ativado 6 ether7 1500 D4:CA:6D:01:22:9C ativado 7 R ether8 1500 D4:CA:6D:01:22:9D ativado 8 sfp-sfpplus1 1500 D4:CA:6D:01:22:94 habilitado 9 sfp-sfpplus2 1500 D4:CA:6D:01:22:95 habilitado
Existem três tipos de endereços:
O endereço Unicast é enviado para todos os nós dentro do domínio de colisão, que normalmente é um cabo Ethernet entre dois nós ou, no caso de rede sem fio, todos os receptores que podem detectar sinais sem fio. Apenas o nó remoto com endereço MAC correspondente aceitará o quadro (a menos que o modo promíscuo esteja ativado)
Um dos endereços especiais é o endereço de broadcast (
FF:FF:FF:FF:FF:FF
), um quadro de broadcast é aceito e encaminhado pela rede Layer2 por todos os nósOutro endereço especial é multicast . Quadros com endereços multicast são recebidos por todos os nós configurados para receber quadros com este endereço.
rede IP
O protocolo Ethernet é suficiente para obter dados entre dois nós em uma rede Ethernet, mas não é usado sozinho. Para a camada de Internet/Rede (OSI Layer 3), o IP (Internet Protocol) é usado para identificar hosts com endereços lógicos exclusivos.
A maioria das redes atuais usa endereços IPv4, que são endereços de 32 bits escritos em notação decimal com ponto (
192.168.88.1
)Pode haver várias redes lógicas e para identificar a qual rede o endereço IP pertence, a máscara de rede é usada. A máscara de rede normalmente é especificada como um número de bits usados para identificar uma rede lógica. O formato também pode estar em notação decimal, por exemplo, a máscara de rede de 24 bits pode ser escrita como
255.255.255.0
Vamos dar uma olhada em 192.168.3.24/24:
11000000 10101000 00000011 00011000 => 192.168.3.24 11111111 11111111 11111111 00000000 => /24 ou 255.255.255.0
Como pode ser visto na ilustração acima, 24 bits altos são mascarados, deixando-nos com um intervalo de 0-255.
Deste intervalo, o primeiro endereço é usado para identificar a rede (em nosso exemplo, o endereço de rede seria 192.168.3.0) e o último é usado para transmissão de rede (192.168.3.255). Isso nos deixa com um intervalo de 1 a 254 para identificação do host, que é chamado de endereços unicast .
Assim como no protocolo Ethernet, também podem haver endereços especiais:
- broadcast - endereço para enviar dados para todos os destinos possíveis ("all-hosts broadcast"), que permite ao remetente enviar os dados apenas uma vez, e todos os receptores recebem uma cópia dele. No protocolo IPv4, o endereço 255.255.255.255 é usado para transmissão local. Além disso, uma transmissão direcionada (limitada) pode ser feita para o endereço de transmissão da rede;
- multicast - endereço associado a um grupo de receptores interessados. No IPv4, os endereços
224.0.0.0
through239.255.255.255
são designados como endereços multicast. O remetente envia um único datagrama de seu endereço unicast para o endereço do grupo multicast e os roteadores intermediários se encarregam de fazer cópias e enviá-las a todos os receptores que ingressaram no grupo multicast correspondente;
No caso de rede IP lógica, a visualização unicast, broadcast e multicast pareceria um pouco diferente
Existem também intervalos de endereços reservados para uma finalidade especial, por exemplo, intervalo de endereços privados , que devem ser usados apenas em redes locais e normalmente são descartados quando encaminhados para a Internet:
- 10.0.0.0/8 - início: 10.0.0.0; fim: 10.255.255.255
- 172.16.0.0/12 - início: 172.16.0.0; fim: 172.31.255.255
- 192.168.0.0/16 - início: 192.168.0.0; fim: 192.168.255.255
ARP e amarrando tudo junto
Embora os pacotes IP sejam endereçados usando endereços IP, os endereços de hardware devem ser usados para realmente transportar dados de um host para outro.
Isso nos leva ao Address Resolution Protocol (ARP), que é usado para mapear o endereço IP do host para o endereço de hardware (MAC). O protocolo ARP é referenciado no RFC 826 .
Cada dispositivo de rede possui uma tabela de entradas ARP usadas atualmente. Normalmente a tabela é construída dinamicamente, mas para aumentar a segurança da rede, ela pode ser parcial ou totalmente construída estaticamente por meio da adição de entradas estáticas.
O Address Resolution Protocol é coisa do passado. O IPv6 elimina completamente o uso do ARP.
Quando um host na rede local deseja enviar um pacote IP para outro host nessa rede, ele deve procurar o endereço MAC Ethernet do host de destino em seu cache ARP. Se o endereço MAC do host de destino não estiver na tabela ARP, a solicitação ARP será enviada para encontrar o dispositivo com um endereço IP correspondente. O ARP envia uma mensagem de solicitação de transmissão a todos os dispositivos na LAN, solicitando aos dispositivos com o endereço IP especificado que respondam com seu endereço MAC. Um dispositivo que reconhece o endereço IP como seu próprio retorna uma resposta ARP com seu próprio endereço MAC:
Vamos fazer uma configuração simples e examinar mais de perto os processos quando o Host A tenta executar ping no Host C.
Inicialmente, adicionamos endereços IP no Host A:
Hospedeiro B:
Hospedeiro C:
Agora, vamos executar um sniffer de pacote que salva o despejo de pacote no arquivo e executar o comando ping no Host A:
Agora você pode baixar o arquivo arp.pcap do roteador e abri-lo no Wireshark para análise:
- Host A envia mensagem ARP perguntando quem tem "10.155.101.217"
- O host C responde que 10.155.101.217 pode ser alcançado em 08:00:27:3C:79:3A endereço MAC
- Tanto o Host A quanto o Host C agora atualizaram suas tabelas ARP e agora os pacotes ICMP (ping) podem ser enviados
Se olharmos para as tabelas ARP de ambos os hosts, podemos ver entradas relevantes, no RouterOS a tabela ARP pode ser visualizada executando o comando:
/ip arp print
Modos ARP
Agora, o exemplo acima demonstrou o comportamento padrão, onde o ARP está ativado nas interfaces, mas pode haver cenários em que um comportamento diferente do ARP seja necessário. O RouterOS permite configurar diferentes modos ARP para interfaces que suportam ARP.
Habilitado
ARPs serão descobertos automaticamente e novas entradas dinâmicas serão adicionadas à tabela ARP. Este é um modo padrão para interfaces no RouterOS e ilustrado no exemplo acima.
Desabilitado
Se o recurso ARP estiver desativado na interface, ou seja, arp=disabled for usado, as solicitações ARP dos clientes não serão atendidas pelo roteador. Portanto, a entrada ARP estática também deve ser adicionada aos clientes. Por exemplo, os endereços IP e MAC do roteador devem ser adicionados:
Responder apenas
Se a propriedade ARP estiver definida como somente resposta na interface, o roteador responderá apenas às solicitações ARP. Os endereços MAC vizinhos serão resolvidos usando /ip arp estaticamente, mas não haverá necessidade de adicionar o endereço MAC do roteador às tabelas ARP de outros hosts, como nos casos em que o ARP está desabilitado.
Proxy ARP
Um roteador com o recurso proxy ARP configurado corretamente atua como um proxy ARP transparente entre redes conectadas diretamente. Esse comportamento pode ser útil, por exemplo, se você deseja atribuir endereços IP de clientes de discagem (PPP, PPPoE, PPTP) do mesmo espaço de endereço usado na LAN conectada.
Vejamos o exemplo de configuração da imagem acima. O host A (172.16.1.2) na sub-rede A deseja enviar pacotes para o host D (172.16.2.3) na sub-rede B. O host A tem uma máscara de sub-rede /16, o que significa que o host A acredita que está conectado diretamente a todos os 172.16.0.0 /16 rede (a mesma LAN). Como o Host A acredita que está conectado diretamente, ele envia uma solicitação ARP ao destino para esclarecer o endereço MAC do Host D. (no caso de o Host A descobrir que o endereço IP de destino não é da mesma sub-rede, ele envia um pacote para o gateway padrão.). O host A transmite uma solicitação ARP na sub-rede A.
Informações do software analisador de pacotes:
Nº Informação do protocolo de destino da fonte de horário 12 5.133205 00:1b:38:24:fc:13 ff:ff:ff:ff:ff:ff ARP Quem tem 173.16.2.3? Diga 173.16.1.2 Detalhes do pacote: Ethernet II, Src: (00:1b:38:24:fc:13), Dst: (ff:ff:ff:ff:ff:ff) Destino: Transmissão (ff:ff:ff:ff:ff:ff) Fonte: (00:1b:38:24:fc:13) Tipo: ARP (0x0806) Protocolo de resolução de endereço (solicitação) Tipo de hardware: Ethernet (0x0001) Tipo de protocolo: IP (0x0800) Tamanho do hardware: 6 Tamanho do protocolo: 4 Opcode: pedido (0x0001) [É gratuito: Falso] Endereço MAC do remetente: 00:1b:38:24:fc:13 Endereço IP do remetente: 173.16.1.2 Endereço MAC alvo: 00:00:00:00:00:00 Endereço IP de destino: 173.16.2.3
Com esta solicitação ARP, o Host A (172.16.1.2) está solicitando ao Host D (172.16.2.3) que envie seu endereço MAC. O pacote de solicitação ARP é então encapsulado em um quadro Ethernet com o endereço MAC do Host A como endereço de origem e um broadcast ( FF:FF:FF:FF:FF:FF ) como endereço de destino. A transmissão da camada 2 significa que o quadro será enviado a todos os hosts no mesmo domínio de transmissão da camada 2, que inclui a interface ether0 do roteador, mas não alcança o host D, porque o roteador, por padrão, não encaminha as transmissões da camada 2.
Como o roteador sabe que o endereço de destino (172.16.2.3) está em outra sub-rede, mas pode alcançar o Host D, ele responde com seu próprio endereço MAC ao Host A.
Esta é a resposta Proxy ARP que o roteador envia para o Host A. O roteador envia de volta a resposta proxy ARP unicast com seu próprio endereço MAC como endereço de origem e o endereço MAC do Host A como endereço de destino, dizendo "envie esses pacotes para mim , e eu vou levá-lo para onde ele precisa ir."
Quando o Host A recebe a resposta ARP, ele atualiza sua tabela ARP, conforme mostrado:
Após a atualização da tabela MAC, o Host A encaminha todos os pacotes destinados ao Host D (172.16.2.3) diretamente para a interface do roteador ether0 ( 00:0c:42:52:2e:cf ) e o roteador encaminha os pacotes para o Host D. O cache ARP nos hosts da sub-rede A é preenchido com o endereço MAC do roteador para todos os hosts da sub-rede B. Portanto, todos os pacotes destinados à sub-rede B são enviados ao roteador. O roteador encaminha esses pacotes para os hosts na sub-rede B.
Vários endereços IP pelo host são mapeados para um único endereço MAC (o endereço MAC deste roteador) quando o proxy ARP é usado.
O proxy ARP pode ser ativado em cada interface individualmente com o comando arp=proxy-arp :
Proxy local ARP
se a propriedade arp estiver definida como local-proxy-arp em uma interface, o roteador executará o proxy ARP apenas para/desta interface. Ou seja, para o tráfego que entra e sai da mesma interface. Em uma LAN normal, o comportamento padrão é que dois hosts de rede se comuniquem diretamente entre si, sem envolver o roteador.
Isso é feito para oferecer suporte a recursos de switch (Ethernet), como RFC 3069 , em que as portas individuais NÃO têm permissão para se comunicar entre si, mas podem se comunicar com o roteador upstream. Conforme descrito no RFC 3069 , é possível permitir que esses hosts se comuniquem por meio do roteador upstream por proxy_arp'ing. Não precisa ser usado junto com proxy_arp. Esta tecnologia é conhecida por diferentes nomes:
- No RFC 3069 é chamado de VLAN Aggregation;
- A Cisco e a Allied Telesis a chamam de Private VLAN;
- A Hewlett-Packard chama isso de filtragem de porta de origem ou isolamento de porta;
- A Ericsson chama isso de Encaminhamento Forçado por MAC (Rascunho RFC).
TCP/IP
Estabelecimento e Encerramento de Sessão TCP
TCP é um protocolo orientado a conexão. A diferença entre um protocolo orientado a conexão e um protocolo sem conexão é que um protocolo orientado a conexão não envia nenhum dado até que uma conexão adequada seja estabelecida.
O TCP usa um handshake de três vias sempre que o dispositivo transmissor tenta estabelecer uma conexão com o nó remoto. Como resultado, um circuito virtual (lógico) de ponta a ponta é criado onde o controle de fluxo e a confirmação para entrega confiável são usados. O TCP possui vários tipos de mensagens usadas no processo de estabelecimento e encerramento de conexões.
Processo de estabelecimento de conexão
- O host A que precisa inicializar uma conexão envia um pacote SYN (Sincronizar) com um número de sequência inicial proposto para o destino "host B";
- Quando o host B recebe uma mensagem SYN , ele retorna um pacote com os sinalizadores SYN e ACK definidos no cabeçalho TCP (SYN-ACK);
- Quando o host A recebe o SYN-ACK, ele envia de volta o pacote ACK (Reconhecimento);
- O host B recebe o ACK e, neste estágio, a conexão é ESTABELECIDA;
Os serviços de protocolo orientados à conexão geralmente enviam confirmações (ACKs) após a entrega bem-sucedida. Após a transmissão do pacote com os dados, o remetente aguarda a confirmação do destinatário. Se o tempo expirar e o remetente não receber o ACK, um pacote será retransmitido.
Terminação da conexão
Quando a transmissão de dados é concluída e o host deseja encerrar a conexão, o processo de encerramento é iniciado. Ao contrário do estabelecimento da conexão TCP, que usa um handshake de três vias, o término da conexão usa massagens de quatro vias. Uma conexão é encerrada quando ambos os lados concluem o procedimento de desligamento enviando um FIN (concluir) e recebendo um ACK (Reconhecimento).
- O host A, que precisa encerrar a conexão, envia uma mensagem especial com o flag FIN , indicando que concluiu o envio dos dados;
- O host B, que recebe o segmento FIN , não encerra a conexão, mas entra em um estado de "fechamento passivo" (CLOSE_WAIT) e envia o ACK para o FIN de volta ao host A. Se o host B não tiver nenhum dado para transmitir para o host A ele também enviará a mensagem FIN . Agora o host B entra no estado LAST_ACK. Neste ponto, o host B não aceitará mais dados do host A, mas poderá continuar transmitindo dados para o host A.
- Quando o host A recebe o último FIN do host B, ele entra no estado (TIME_WAIT) e envia um ACK de volta ao host B;
- O host B obtém o ACK do host A e a conexão é encerrada;
Transmissão de segmentos TCP (janelas)
Agora que sabemos como a conexão TCP é estabelecida, precisamos entender como a transmissão de dados é gerenciada e mantida. Nas redes TCP/IP, a transmissão entre hosts é feita pelo protocolo TCP.
Vamos pensar no que acontece quando os datagramas são enviados mais rápido do que o dispositivo receptor pode processar. O receptor os armazena em uma memória chamada buffer. Mas como o espaço do buffer não é ilimitado, quando sua capacidade é excedida, o receptor começa a descartar os quadros. Todos os quadros descartados devem ser retransmitidos novamente, o que é o motivo do baixo desempenho da transmissão.
Para resolver esse problema, o TCP usa um protocolo de controle de fluxo. O mecanismo de janela é usado para controlar o fluxo dos dados. Quando uma conexão é estabelecida, o receptor especifica o campo da janela em cada quadro TCP. O tamanho da janela representa a quantidade de dados recebidos que o receptor está disposto a armazenar no buffer. O tamanho da janela (em bytes) é enviado junto com as confirmações ao remetente. Portanto, o tamanho da janela controla quanta informação pode ser transmitida de um host para outro sem receber uma confirmação. O remetente enviará apenas a quantidade de bytes especificada no tamanho da janela e aguardará as confirmações com o tamanho da janela atualizado.
Se o aplicativo receptor puder processar os dados tão rapidamente quanto eles chegam do remetente, o destinatário enviará um anúncio de janela positivo (aumentar o tamanho da janela) com cada confirmação. Ele funciona até que o remetente se torne mais rápido que o destinatário e os dados de entrada eventualmente preencham o buffer do destinatário, fazendo com que o destinatário anuncie a confirmação com uma janela zero. Um remetente que recebe um anúncio de janela zero deve interromper a transmissão até receber uma janela positiva. Vamos dar uma olhada no processo de janelamento ilustrado:
- O "host A" começa a transmitir com um tamanho de janela de 1000, um quadro de 1000 bytes é transmitido;
- Receptor "host B" retorna ACK com tamanho de janela para aumentar para 2000;
- O host A recebe ACK e transmite dois quadros (1000 bytes cada);
- Depois disso, o receptor anuncia um tamanho de janela inicial para 3000. Agora o transmissor transmite três quadros e espera por uma confirmação;
- Os três primeiros segmentos preenchem o buffer do receptor mais rapidamente do que o aplicativo receptor pode processar os dados, de modo que o tamanho da janela anunciada chega a zero, indicando que é necessário aguardar antes que seja possível uma transmissão posterior;
- O tamanho da janela e a rapidez com que aumenta ou diminui o tamanho da janela está disponível em vários algoritmos de prevenção de congestionamento TCP, como Reno, Vegas, Tahoe, etc;
Nenhum comentário:
Postar um comentário