Uma Introdução aos Termos de Rede, Interfaces e Protocolos

Introdução

Compreender as redes é importante para qualquer pessoa que gerencie um servidor. Não apenas é essencial para colocar seus serviços online e funcionando sem problemas, mas também oferece insights para diagnosticar problemas.

Este artigo fornecerá uma visão geral de alguns conceitos comuns de redes. Vamos discutir terminologia, protocolos comuns e as responsabilidades e características das diferentes camadas de redes.

Este guia é agnóstico em relação ao sistema operacional, mas deve ser muito útil ao implementar recursos e serviços que utilizam redes em seu servidor.

Glossário de Redes

Primeiramente, definiremos alguns termos comuns que você encontrará ao longo deste guia e em outros guias e documentação relacionados a redes.

Esses termos serão detalhados nas seções apropriadas que seguem:

  • Conexão: Em redes, uma conexão refere-se a partes de informações relacionadas que são transferidas por uma rede. Em termos gerais, uma conexão é estabelecida antes da transferência de dados (seguindo os procedimentos estabelecidos em um protocolo) e pode ser desfeita ao final da transferência de dados.

  • Pacote: Um pacote é a menor unidade transferida intencionalmente por uma rede. Ao comunicar-se por uma rede, os pacotes são os envelopes que transportam seus dados (em partes) de um ponto de extremidade a outro.

Os pacotes têm uma parte de cabeçalho que contém informações sobre o pacote, incluindo a origem e o destino, carimbos de data e hora, saltos de rede, etc. A parte principal de um pacote contém os dados reais sendo transferidos. Às vezes, é chamada de corpo ou carga útil.

  • Interface de Rede: Uma interface de rede pode se referir a qualquer tipo de interface de software para hardware de rede. Por exemplo, se você tiver duas placas de rede em seu computador, é possível controlar e configurar individualmente cada interface de rede associada a elas.

A network interface may be associated with a physical device, or it may be a representation of a virtual interface. The “loopback” device, which is a virtual interface available in most Linux environments to connect back to the same machine, is an example of this.

  • LAN: LAN significa “rede de área local”. Refere-se a uma rede ou parte de uma rede que não é acessível publicamente pela internet. Uma rede doméstica ou de escritório é um exemplo de uma LAN.

  • WAN: WAN significa “rede de área ampla”. Significa uma rede muito mais extensa do que uma LAN. Embora WAN seja o termo relevante para descrever redes grandes e dispersas em geral, geralmente é usado para se referir à internet como um todo.

Se uma interface estiver conectada à WAN, geralmente se presume que ela seja acessível pela internet.

  • Protocolo: Um protocolo é um conjunto de regras e padrões que definem uma linguagem que os dispositivos podem usar para se comunicar. Existem muitos protocolos em uso extensivo em redes, e muitas vezes são implementados em diferentes camadas.

Alguns protocolos de baixo nível são TCP, UDP, IP e ICMP. Alguns exemplos familiares de protocolos de camada de aplicação, construídos sobre esses protocolos mais baixos, são HTTP (para acessar conteúdo da web), SSH e TLS/SSL.

  • Porta: Uma porta é um endereço em uma única máquina que pode ser associado a um software específico. Não é uma interface física ou localização, mas permite que seu servidor possa se comunicar usando mais de um aplicativo.

  • Firewall: Um firewall é um programa que decide se o tráfego que entra ou sai de um servidor deve ser permitido. Um firewall geralmente funciona criando regras para quais tipos de tráfego são aceitáveis em quais portas. Geralmente, os firewalls bloqueiam portas que não são usadas por um aplicativo específico em um servidor.

  • NAT: NAT significa tradução de endereços de rede. É uma maneira de reempacotar e enviar solicitações recebidas para um servidor de roteamento para os dispositivos ou servidores relevantes em uma LAN. Isso geralmente é implementado em LANs físicas como uma maneira de rotear solicitações por meio de um endereço IP para os servidores necessários nos bastidores.

  • VPN: VPN significa rede privada virtual. É um meio de conectar LANs separadas através da internet, mantendo a privacidade. Isso é usado para conectar sistemas remotos como se estivessem em uma rede local, frequentemente por motivos de segurança.

Existem muitos outros termos com os quais você vai se deparar, e esta lista não é exaustiva. Explicaremos outros termos conforme necessidade. Neste ponto, você deve entender alguns conceitos de alto nível que nos permitirão discutir melhor os tópicos que virão.

Camadas de Rede

Embora as redes sejam frequentemente discutidas em termos de topologia de forma horizontal, entre hosts, sua implementação é em camadas de forma vertical dentro de qualquer computador ou rede específica.

O que isso significa é que existem múltiplas tecnologias e protocolos que são construídos uns sobre os outros para que a comunicação funcione. Cada camada sucessiva, mais alta, abstrai um pouco mais os dados brutos.

Também permite que você aproveite as camadas inferiores de novas maneiras sem precisar investir tempo e energia para desenvolver os protocolos e aplicativos que lidam com esses tipos de tráfego.

A linguagem que usamos para falar sobre cada um dos esquemas de camadas varia significativamente dependendo do modelo que você usa. Independentemente do modelo usado para discutir as camadas, o caminho dos dados é o mesmo.

À medida que os dados são enviados de uma máquina, eles começam no topo da pilha e filtram para baixo. No nível mais baixo, a transmissão real para outra máquina ocorre. Neste ponto, os dados viajam de volta pelas camadas do outro computador.

Cada camada tem a capacidade de adicionar seu próprio “invólucro” em torno dos dados que recebe da camada adjacente, o que ajudará as camadas que vêm depois a decidir o que fazer com os dados quando forem repassados.

Modelo TCP/IP

O modelo TCP/IP, mais comumente conhecido como suite de protocolos de Internet, é um modelo de camadas amplamente adotado. Ele define as quatro camadas separadas:

  • Aplicação: Neste modelo, a camada de aplicação é responsável por criar e transmitir dados de usuário entre aplicativos. Os aplicativos podem estar em sistemas remotos e devem parecer operar como se estivessem localmente para o usuário final. Essa comunicação é dita ocorrer entre pares.

  • Transporte: A camada de transporte é responsável pela comunicação entre processos. Este nível de rede utiliza portas para endereçar diferentes serviços.

  • Internet: A camada de internet é usada para transportar dados de nó para nó em uma rede. Esta camada está ciente dos pontos finais das conexões, mas não está preocupada com a conexão real necessária para ir de um lugar para outro. Endereços IP são definidos nesta camada como uma maneira de alcançar sistemas remotos de forma endereçável.

  • Link: A camada de link implementa a topologia real da rede local que permite à camada de internet apresentar uma interface endereçável. Ela estabelece conexões entre nós vizinhos para enviar dados.

Como pode ver, o modelo TCP/IP é abstrato e fluido. Isso tornou popular sua implementação e permitiu que se tornasse o modo dominante pelo qual as camadas de rede são categorizadas.

Interfaces

As interfaces são pontos de comunicação em rede para o seu computador. Cada interface está associada a um dispositivo de rede físico ou virtual.

Tipicamente, o seu servidor terá uma interface de rede configurável para cada placa Ethernet ou wireless que possuir.

Além disso, irá definir uma interface de rede virtual chamada de “loopback” ou interface localhost. Esta é utilizada como uma interface para conectar aplicações e processos em um único computador a outras aplicações e processos. Pode ver isso referenciado como a interface “lo” em muitas ferramentas.

Muitas vezes, os administradores configuram uma interface para servir o tráfego para a internet e outra interface para uma LAN ou rede privada.

Em datacenters com rede privada ativada (incluindo DigitalOcean Droplets), o seu VPS terá duas interfaces de rede. A interface “eth0” será configurada para lidar com o tráfego da internet, enquanto a interface “eth1” operará para comunicar com uma rede privada.

Protocolos

A rede funciona agrupando vários protocolos diferentes uns sobre os outros. Dessa forma, um conjunto de dados pode ser transmitido usando vários protocolos encapsulados uns dentro dos outros.

Começaremos com protocolos implementados nas camadas inferiores da rede e avançaremos para protocolos com maior abstração.

Controle de Acesso ao Meio

O controle de acesso ao meio é um protocolo de comunicação usado para distinguir dispositivos específicos. Cada dispositivo deve receber um endereço de controle de acesso ao meio (endereço MAC) exclusivo e gravado permanentemente quando é fabricado, diferenciando-o de qualquer outro dispositivo na Internet.

A referência de hardware pelo endereço MAC permite que você se refira a um dispositivo por um valor único, mesmo quando o software no topo pode alterar o nome desse dispositivo específico durante a operação.

O endereçamento MAC é um dos únicos protocolos da camada de link de baixo nível com os quais você provavelmente interagirá regularmente.

IP

O protocolo IP é um dos protocolos fundamentais que permitem o funcionamento da Internet. Os endereços IP são únicos em cada rede e permitem que as máquinas se comuniquem entre si através de uma rede. Ele é implementado na camada de internet no modelo TCP/IP.

As redes podem ser interconectadas, mas o tráfego deve ser roteado ao atravessar os limites da rede. Este protocolo pressupõe uma rede não confiável e múltiplos caminhos para o mesmo destino, que podem ser alterados dinamicamente.

Há várias implementações diferentes do protocolo. A implementação mais comum hoje em dia são os endereços IPv4, que seguem o padrão 123.123.123.123, embora os endereços IPv6, que seguem o padrão 2001:0db8:0000:0000:0000:ff00:0042:8329, estejam se tornando populares devido à limitação de endereços IPv4 disponíveis.

ICMP

O ICMP significa Protocolo de Mensagem de Controle da Internet. Ele é usado para enviar mensagens entre dispositivos para indicar sua disponibilidade ou condições de erro. Esses pacotes são usados em várias ferramentas de diagnóstico de rede, como ping e traceroute.

Geralmente, pacotes ICMP são transmitidos quando um tipo diferente de pacote encontra um problema. Eles são usados como um mecanismo de feedback para comunicações de rede.

TCP

TCP significa protocolo de controle de transmissão. É implementado na camada de transporte do modelo TCP/IP e é usado para estabelecer conexões confiáveis.

O TCP é um dos protocolos que encapsula dados em pacotes. Em seguida, transfere esses pacotes para a extremidade remota da conexão usando os métodos disponíveis nas camadas inferiores. Na outra extremidade, ele pode verificar erros, solicitar que determinadas partes sejam reenviadas e reagrupar as informações em uma peça lógica para enviar à camada de aplicativo.

O protocolo estabelece uma conexão antes da transferência de dados usando um sistema chamado handshake de três vias. Isso é uma maneira para as duas extremidades da comunicação reconhecerem a solicitação e concordarem com um método para garantir a confiabilidade dos dados.

Depois que os dados são enviados, a conexão é encerrada usando um handshake semelhante de quatro vias.

O TCP é o protocolo de escolha para muitos dos usos mais populares da Internet, incluindo WWW, SSH e email.

UDP

O UDP significa protocolo de datagrama de usuário. É um protocolo companheiro popular do TCP e também é implementado na camada de transporte.

A diferença fundamental entre UDP e TCP é que o UDP oferece transferência de dados não confiável. Não verifica se os dados foram recebidos na outra extremidade da conexão. Isso pode parecer ruim e, para muitos fins, é. No entanto, também é extremamente importante para algumas funções.

Porque não é necessário esperar pela confirmação de que os dados foram recebidos e é forçado a reenviar dados, o UDP é muito mais rápido que o TCP. Não estabelece uma conexão com o host remoto, apenas envia dados sem confirmação.

Por ser uma transação direta, é útil para comunicações como consultas a recursos de rede. Também não mantém um estado, o que o torna excelente para transmitir dados de uma máquina para muitos clientes em tempo real. Isso o torna ideal para VOIP, jogos e outras aplicações que não podem tolerar atrasos.

HTTP

O HTTP significa protocolo de transferência de hipertexto. É um protocolo definido na camada de aplicação que forma a base para a comunicação na web.

O HTTP define uma série de verbos que informam ao sistema remoto o que você está solicitando. Por exemplo, GET, POST e DELETE interagem de maneira diferente com os dados solicitados. Para ver um exemplo das diferentes solicitações HTTP em ação, consulte Como Definir Rotas e Métodos de Solicitação HTTP no Express.

DNS

DNS significa sistema de nomes de domínio. É um protocolo de camada de aplicação usado para fornecer um mecanismo de nomeação amigável para recursos na internet. É o que vincula um nome de domínio a um endereço IP e permite que você acesse sites pelo nome em seu navegador.

SSH

O SSH significa shell seguro. É um protocolo criptografado implementado na camada de aplicação que pode ser usado para se comunicar com um servidor remoto de maneira segura. Muitas tecnologias adicionais são construídas em torno desse protocolo devido à sua criptografia de ponta a ponta e ubiquidade.

Há muitos outros protocolos que não cobrimos, mas que são igualmente importantes. No entanto, isso deve lhe fornecer uma boa visão geral de algumas das tecnologias fundamentais que tornam a internet e a rede possível.

Conclusão

Neste ponto, você deve estar familiarizado com alguns termos de rede e ser capaz de entender como diferentes componentes conseguem se comunicar entre si. Isso deve ajudar você a compreender outros artigos e a documentação do seu sistema.

Em seguida, para um exemplo do mundo real em alto nível, você pode querer ler Como fazer solicitações HTTP em Go.

Source:
https://www.digitalocean.com/community/tutorials/an-introduction-to-networking-terminology-interfaces-and-protocols