TCP/IP

O Transmission Control Protocol e o Internet Protocol (TCP/IP) são um conjunto padrão de protocolos desenvolvidos no final dos anos 1970 pela Defense Advanced Research Projects Agency (DARPA) como uma forma de comunicação entre diferente tipos de computadores e redes de computadores. TCP/IP é a força motora da Internet, e é portanto o mais popular conjunto de protocolos da Terra.

Introdução ao TCP/IP

Os dois protocolos componentes do TCP/IP lidam com diferentes aspectos da computação em rede. Internet Protocol, o "IP" do TCP/IP é um protocolo de sem conexão que lida somente com o roteamento de pacotes da rede utilizando o datagrama de IPs como unidade básica das informações de rede. O datagrama do IP consiste de um cabeçaho seguido de uma mensagem. O TCP (Transmission Control Protocol - Protocolo de Controle de Transmissão)

Configurando TCP/IP

A configuração do protocolo TCP/IP consiste em diversos elementos, que podem ser editados nos arquivos de configuração apropriados, ou optando-se por soluções como o servidor de DHCP (Protocolo de Configuração Dinâmica de Hosts), que por sua vez pode ser configurado para prover as configurações TCP/IP necessárias para cada cliente de rede automaticamente. Esses valores da configuração precisam ser definidos corretamente, de maneira que que facilite o funcionamento em rede do seu sistema Ubuntu.

Os elementos básicos de configuração do TCP/IP e seus objetivos são os seguintes:

  • Endereço IP O Endereço de IP é uma string de identificação única, expressa em quatro números decimais, que vão de zero (0) à duzentos e cinqüenta e cinco (255), separada por pontos, com cada um dos quatros números representado oito (8) bits do endereço, para um tamanho total de trinta e dois (32) bits para todo o endereço. Este formato é chamado de notação decimal com pontos.

  • Netmask A Máscara de Subrede (ou simplesmente netmask) é uma máscara de bits locais, ou alguns marcadores que separam porções de endereços IPs relacionados à uma rede de uma subrede. Por exemplo, na Classe C, a máscara padrão é 255.255.255.0, que mascara os primeiros três bytes do endereço IP e permite somente o último byte do endereços disponível para a alocação e especificação de hosts ou subredes.

  • Endereço de Rede O Endereço de Rede representa a quantidade de bytes destinados ao endereço da rede em um endereço IP. Por exemplo, o host 12.128.1.2 em uma rede Classe A irá usar 12.0.0.0 como endereço de rede, onde doze (12) representa o primeiro byte do endereço IP e (a parte da rede) os zeros (0) em todos os três bytes restantes para representar valores de host em potencial. Um rede usando o endereço IP privado 192.168.1.100 irá usar um Endereço de Rede 192.168.1.0, que especifica os três primeiros bytes de um rede Classe C 192.168.1 e um zero (0) para todos os possíveis hosts na rede.

  • Endereço Broadcas O Endereço Broadcast é um endereço IP que permite que dados da rede sejam enviados simultaneamente para todos os hosts em uma dada subrede ao invés de especificar um host particular. O endereço broadcast padrão para redes IP normalmente é 255.255.255.255, mas este endereço de broadcast não pode ser usado para mandar uma mensagem de broadcast para todos os hosts na Internet pois os roteadores bloqueiam isso. Um endereço broadcast mais apropriado é definido para corresponder a uma subrede específica. Por exemplo, na rede IP privada Classe C, 192.168.1.0, o endereço broadcast é 192.168.1.255. Mensagens de broadcast são produzidas geralmente por protocolos de rede como o Protocolo de Resolução de Endereço (ARP, do inglês Address Resolution Protocol) e o Protocolo de Roteamento de Informação (RIP, do inglês Routing Information Protocol).

  • Gateway AddressUm Gateway Address é o endereço IP direto de uma rede particular, ou host em uma rede, podendo se estender. Se uma rede de host não define-se ao comunicar com outra rede de host, e aquele host não é localizado em uma mesma rede, então um gateway deve ser usado. Em muitos casos, o Gateway Anddress será de um roteador na mesma rede, que vai habilitar o trafico de passagem em outras redes ou hosts, tais como Internet hosts. O valor definido a um Gateway Address deve ser correto, ou seu sistema não será capaz de alcançar nenhum host ligado na mesma rede.

  • Endereço do Servidor de Nomes Endereços de servidores de nome representam o endereço IP do sistema de Serviço de Nomes de Domínio (Domain Name Service - DNS), que resolve nomes de hosts de rede para endereços IP. Há três níveis de endereços de servidor de nomes, que podem ser especificados em ordem de precedência: O servidor de nomes Primário, o servidor de nomes Secundário e o servidor de nomes Terciário. Para que seu sistema possa resolver nome de hosts da rede para seus endereços IP correspondentes, você deve especificar um endereço de servidor de nomes válido o qual você esteja autorizado a utilizar na configuração de TCP/IP do seu sistema. Em muitos casos esses endereços podem e devem ser fornecidos pelo seu provedor de serviços de rede, mas há muitos servidores de nomes gratuitos e acessíveis publicamente, como os servidores Level3 (Verizon) com endereços de IP de 4.2.2.1 a 4.2.2.6.

    [Dica]

    O Endereço de IP, a Máscara de rede (netmask), o Endereço de rede, Endereço de broadcast, e o Endereço de Gateway são, em geral, especificados com as diretivas apropriadas no arquivo /etc/network/interfaces. O endereço do Servidor de Nomes (DNS) é em geral especificado pela diretiva nameserver no arquivo /etc/resolv.conf. Para maiores informações, veja a página de manual para interfaces ou resolv.conf respectivamente, com os seguintes comandos a serem digitados no terminal:

    Acesse o sistema de páginas de manual para interfaces com o seguinte comando:

    man interfaces
    

    Acesse o sistema de páginas de manual para resolv.conf com o seguinte comando:

                    
                      man resolv.conf
                    
                  

Roteamento IP

Roteamento de IP consiste em espeficar e descobrir caminhos, em um rede TCP/IP, através dos quais os dados da rede devem ser enviados. O roteamento usa um conjunto de tabelas de roteamento para direcionar os pacotes de dados de uma rede desde a sua origem até seu destino, frequentemente através de vários nodos intermediários de redes conhecidos como roteadores. Existem duas formas principais de roteamento de IP: Roteamento Estático e Roteamento Dinâmico.

Roteamento estático envolve adição manual de rotas IP à tabela de roteamento do sistema, e isso é normalmente feito pela manipulação da tabela de roteamento com o comando route. O Roteamento estático tem muitas vantagens sobre o roteamento dinâmico, como a simplicidade de implementação em redes pequenas, previsibilidade (a tabela de roteamento é sempre formada previamente, e dessa forma a rota é precisamente a mesma todas as vezes que ela é usada), e baixa carga nos roteadores e links de rede devido à ausência de um protocolo de roteamento dinâmico. Entretanto, roteamento estático apresenta algumas desvantagens também. Por exemplo, roteamento estático está limitado a pequenas redes e não é muito escalável. O roteamento estático também falha completamente no caso de uma parada na rede e falhas ao longo das rotas devido a correção natural da rota.

Roteamento dinâmico depende de grandes redes com possibilidade de múltiplas rotas de IP de uma origem até um destino e usa protocolos especiais de roteamente como o Protocolo de Roteamento de Informação (RIP, do inglês Routing Information Protocol) que manipula os ajustes automáticos nas tabelas de roteamento e torna possível o roteamento dinâmico. O roteamento dinâmico possui muitas vantagens sobre o roteamento estático, como uma escalabilidade superior e a habilidade de se adaptar à falhas e interrupções na comunicação nas rotas da rede. Adicionalmente, há menos configuração manual das tabelas de roteamente uma vez que os roteadores aprendem através dos outros sobre suas existências e as rotas disponívies. Essa característica elimina a possibilidade de introduzir confusões na tabela de rotas provenientes de erro humano. O roteamento dinâmico não é, entretanto, perfeito, e apresenta desvantagens como uma maior complexidade e sobrecarga adicional da rede pelas comunicações dos roteadores que não benecifiam imediatamente os usuários final e ainda consumenlargura de banda da rede.

TCP e UDP

TCP é um protocolo de conexão, oferecendo correção de erro e entrega garantida de dados via o que é conhecido como controle de fluxo. O controle de fluxo determina quando o fluxo de certos dados devem ser parados, e previamente quais pacotes de dados devem ser re-enviados devido a problemas como colisões, por exemplo, deste modo assegurando a entrega exata e completa dos dados. TCP é tipicamente usado em trocas de informações importantes tal como transações de banco de dados.

O User Datagram Protocol (UDP), por outro lado, é um protocolo de conectividade que raramente lida com a transmissão de dados importantes porque falta controle de fluxo ou qualquer outro método para assegurar a entrega confiável dos dados. UDP comumente é usado em aplicações como áudio e vídeo, onde é consideravelmente mais rápido que TCP devido à falta de correção de erro e controle de fluxo, e onde a perda de alguns pacotes não é catastrófico, geralmente.

ICMP

O Internet Control Messaging Protocol (ICMP) é uma extensão do Internet Protocol (IP) como definido na Petição Para Comentários (RFC) #792 e apóia pacotes de rede contendo controle, erro, e mensagens de informação. ICMP é usado por aplicações de rede como a utilidade de ping, que pode determinar a disponibilidade de um host de rede ou dispositivo. Exemplos de mensagens de erro retornadas por ICMP que são útil a ambos hosts de rede e para dispositivos tal como roteadores, incluem Destino Inacessível e Tempo de Espera Excedido.

Serviços

Daemons (serviços) são aplicações especiais do sistema que tipicamente executam continuamente em segundo plano e esperam requisições para as funções que eles fornecem a outras aplicações. Muitos daemons são rede-cêntrico; isso é, um grande número de daemons executando em segundo plano em um sistema Ubuntu podem fornecer funcionalidades a redes relacionadas. Alguns exemplos de daemons de rede incluem o Hyper Text Transport Protocol Daemon (httpd), que fornece funcionalidade de servidor de Internet; o Secure SHell Daemon (sshd), que fornece identificação (login) remota segura e capacidade de transferência de arquivo; e o Internet Message Access Protocol Daemon (imapd), que fornece serviços de correio eletrônico (e-Mail).