O funcionamento do protocolo TCP/IP
Autor: Daniel Informatica | Publicado: 2010-12-29T00:23:00-02:00

TCP/IP (Transmission Control Protocol/Internet Protocol, ou Protocolo  de Controle de Transmissão / Protocolo da Internet) se refere ao  conjunto de protocolos utilizados na Internet. Ele inclui uma série de  padrões que especificam como os computadores vão se comunicar e cria  convenções para inter conectar redes e para o roteamento através dessas  conexões.
Os protocolos da Internet (IP) são o resultado de um  projecto da DARPA (Defense Advanced Research Projects Agency, ou Agência  de Projectos de Pesquisa Avançada de Defesa) sobre conectividade entre  redes no final dos anos 70. Ele foi utilizado em todas as redes de longa  distância do sistema de Defesa dos EUA em 1983, mas não foi amplamente  aceito até ser incorporado ao BSD (Berkeley Software Distribution) UNIX  4.2. A popularidade do TCP/IP é baseada em:
Estrutura  cliente-servidor robusta. O TCP/IP é uma excelente plataforma  cliente-servidor, especialmente em ambientes WAN (wide-area network, ou  redes de grande alcance).
Compartilhamento de informações.  Milhares de organizações militares, educacionais, científicas e  comerciais compartilham dados, correio electrónico (e-mail), e outros  serviços na Internet usando o TCP/IP.
Ampla disponibilidade.  Implementações do TCP/IP estão disponíveis em praticamente todos os  sistemas operacionais populares. Seu código fonte é amplamente  disponível em várias implementações. Fabricantes de bridges, routers e  analisadores de redes oferecem suporte para o TCP/IP em seus produtos.
Número de IP
Existem  algumas analogias entre computadores e telefones e o número de IP é uma  delas. Você pode imaginar o número IP como um número de telefone com  todos os códigos de discagem internacional. Isto significa que qualquer  máquina pode contactar outra máquina usando o número de IP, bastando  apenas que exista um caminho entre as 2 máquinas. Além disso toda  máquina na rede tem de ter um nº de IP.
Isto também significa que 2  máquinas na mesma rede NÃO podem ter o mesmo número de IP. Essa  restrição só ocorre para máquinas na mesma rede, pois máquinas numa rede  não conectada usualmente tem número de IP iguais, por algumas razões  técnicas. No caso da analogia com os telefones, imagine 2 pessoas  morando em países diferentes que possuam o mesmo número de telefone  (apenas os números locais). Nesse caso não há conflito (excerto talvez  na sua mente! :-) ).
O número de IP tem 4 bytes de tamanho e tem  um formato específico, xxx.xxx.xxx.xxx (exemplo : 200.241.216.20). Isso  significa que cada grupo xxx só pode ir de 0 à 255 (pois essa é a  capacidade de 1 byte). 
Máscara de Sub-Rede
Existem 3 classes  de endereços IP : classes A, B, C. A diferença entre as classes é a  forma de como o nº de IP é interpretado. O nº de IP é divido em duas  partes : o endereço da rede e o endereço da Sub-Rede. Considere o nº IP  da seguinte forma : w.x.y.z (ex: 200.241.216.20)


Classe Nº de IP ID. da rede ID da Sub-rede Nº de redes disponíveis Nº de sub-redes disponíveis 
A B C 1.126 128.191 192.223 w w.x w.x.y x.y.z y.z z 126 16,384 2,097,151 16,777,214 65,534 254 

Obs:  O endereço 192.168 é reservado para uso em redes internas, o endereço  127 é utilizado para testes de loopback e os acima de 224 (inclusive)  são reservados para protocolos especiais.
Uma Sub-Rede é uma rede  ligada directamente a Internet através de uma rede pertencente a  Internet. A rede pertencente recebe um nº de IP, e distribui nº de IP  dentro de sua Sub-Rede. As classes apenas definem quantas Sub-Rede um nº  de IP tem. De acordo com a tabela, existem 126 nº de IP da classe A e  cada um deles pode ter 16.777.214 Sub-Rede. Você logo pode imaginar que  não existem endereços classe A para todo mundo, e tem razão, actualmente  não existem endereços classe A e B disponíveis na Internet, e os de  classe C estão acabando, o IETF (Internet Engenniering Task Force, ou  Força Tarefa de Engenharia da Internet ) está estudando a expansão  desses números.

tabela 1
100.1.0.0 100.2.0.0 100.3.0.0 ....... 100.201.0.0 Matriz Filial 1 Filial 2 ....... Filial 200
As  máscaras de Sub-Rede identificam a classe do nº de IP. A primeira vista  isso parece desnecessário, pois basta olhar o primeiro número do nº do  IP para determinar sua classe. Mas acontece que um nº de IP classe A  pode funcionar como um classe B ou classe C, dependendo da estrutura  interna de sua Sub-Rede. Um exemplo : Imagine uma empresa com 200  filiais no Brasil conectadas por uma rede própria. A matriz tem um nº de  IP classe A, digamos 100 e distribui suas Sub-Rede ( Tabela 1 ): 
Para  as filiais, o nº de IP (ex: 100.201.0.0) é de classe B, pois só tem  16.384 Sub-Rede disponíveis, embora comece com 100. Dentro das filiais  ainda é possível se distribuir Sub-Rede, as quais teriam nº de IP classe  C.
Para que o roteamento funcione correctamente, os computadores precisam saber qual a classe do nº de IP, e elas são as seguintes:


Classe A BCMáscara de Sub-Rede 255.0.0.0 255.255.0.0 255.255.255.0 
Gateway Padrão (Default Gateway)
O  gateway padrão é a máquina para quem pedimos ajuda quando não  conseguimos achar uma outra máquina na rede. Funciona assim: Quando uma  máquina na rede precisa se comunicar com uma outra, ela emite um pedido  de conexão (esse pedido é feito através de broadcasting, ou seja, a  máquina envia um pedido a toda a rede, e apenas a máquina destino  responde) e aguarda uma resposta. Se a resposta não vier, ela entra em  contanto com o gateway padrão e solicita que o mesmo conecte com a  máquina destino. Se o gateway conseguir se conectar à máquina destino,  ele fica como " inter mediador " dessa conexão, caso contrário ele avisa  a máquina solicitante que não foi possível encontrar a máquina destino.  
Essa estrutura de procura visa diminuir o tráfego desnecessário  na rede. Imagine só se toda a solicitação de conexão realizada na  Internet (e em todas as redes conectadas à Intenet) fosse enviada para  todos os computadores ligados à ela! Seria um tráfego muito grande. Ao  invés disso, o broadcasting é feito em níveis, primeiro na LAN (local  area network, ou rede local), depois na WAN de sua cidade ou estado,  depois na WAN nacional até chegar na WAN internacional. Reduz-se desse  modo todo o tráfego interno às WANs e LANs, aliviando as linhas de  conexão. 
DNS
Essas 3 letras não significam muita coisa para a  maior parte das pessoas, mas elas significam Domain Name System (ou  Sistema de Nomes de Domínio). Essas 3 palavras também não significam  muita coisa para a maior parte das pessoas também, por isso vamos à  analogia com o telefone. Quando deseja telefonar para a loja da esquina,  você consulta o catálogo, descobre o telefone de lá e liga. Você não  consegue telefonar para lugar algum se não souber o número do telefone.  Na rede TCP/IP acontece a mesma coisa. Os usuários não decoram o número  IP das máquinas, e sim seus nomes. Mas para se alcançar uma máquina na  rede, precisamos do seu número de IP. Para resolver isso, foi criado o  DNS, um serviço disponível na rede que, dado um nome de máquina, ele  retorna o número de IP da mesma.
Existe uma particularidade aqui.  No caso da rede local estar conectada a alguma outra, é recomendável que  o servidor DNS (o programa que oferece o serviço DNS) seja executado na  máquina de ligação entre as 2 redes (o gateway), para que no caso do  nome requisitado não existir na rede local, o DNS possa pedir ao  servidor DNS da outra rede para pesquisar tal nome.
O Windows NT  oferece um serviço semelhante, o WINS (Windows Internet Name System, ou  Sistema de nomes da Internet do Windows). A principal diferença entre os  dois é que o DNS usa uma tabela estática, e o WINS usa uma tabela  dinâmica. No caso do servidor DNS rodar numa máquina Windows NT é  recomendável que ele seja substituído pelo WINS. 
DHCP
Mais um  caso de 4 letras que não significam nada para a maioria das pessoas. Mas  infelizmente não existe uma boa analogia para o DHCP, portanto vamos  directo ao assunto: DHCP significa Dynamic Host Configuration Protocol  ou seja : Protocolo de Configuração de Host Dinâmico. Numa rede TCP/IP,  todo computador tem de ter um número de IP distinto. Isto significa que  antes de colocar uma nova máquina na rede, o administrador teria de  checar quais números estão sendo utilizados para poder escolher um nº  adequado para a nova máquina. Em pequenas redes isso é possível de ser  feito, mas em grandes redes isso se torna uma tarefa muito tediosa e  sujeita a falhas. Para evitar isso, foi criado o DHCP. Quando uma  máquina entra na rede, ela procura o servidor DHCP (cujo nº de IP foi  previamente fornecido) e solicita um nº de IP para si própria. O  servidor verifica qual o nº disponível, informa ao solicitante esse nº e  o torna indisponível para futuras solicitações. Dessa maneira, a  administração dos nº de IP é feita automaticamente e não existem  problemas de conflito. Quando a máquina solicitante sai da rede, o  servidor DHCP torna seu nº de IP disponível novamente. 
Portas
Uma  porta pode ser vista como um canal de comunicações para uma máquina.  Pacotes de informações chegando a uma máquina não são apenas endereçadas  à maquina, e sim à máquina numa determinada porta. Você pode imaginar  uma porta como sendo um canal de rádio, com a diferença fundamental de  que um computador pode " ouvir " a todos os 65000 canais possíveis ao  mesmo tempo!
Entretanto, um computador geralmente não está  escutando a todas as portas, ele escuta umas poucas portas específicas. E  ele não vai responder a um pedido que chegue numa porta a qual ele não  esteja escutando.
Existem uma série de portas predefinidas para certos serviços que são aceitos universalmente. As principais são :


Serviço FTP Telnet SMTP Gopher HTTP POP3 NNTP IRC Compuserve AOL MSN Porta 21 23 25 70 80 110 119 6667 4144 5190 569 Descrição File Transfer Protocol (Protocolo de Transferência de Arquivos) Para se conectar remotamente a um servidor Para enviar um e-mail Browser baseado em modo texto Protocolo WWW - Netscape, Mosaic Para receber e-mail Newsgroups Internet Relay Chat - Bate papo on-line Compuserve WinCIM America Online Microsoft Network 
Outros termos
Roteador  : É um computador especial que é utilizado para conectar 2 ou mais  redes distintas. Ele tem esse nome porque tem de " rotear " (ou  redireccionar) os pacotes de uma rede para outra, actuando como um "  guarda de trânsito " para os pacotes entre as redes.

Gateway  : O gateway é um computador que também é utilizado para conectar 2 ou  mais redes distintas. A principal diferença para o roteador é que o  gateway não tem hardware especial para efectuar o roteamento. Usualmente  os Gateway conectam LANs e os roteadores, WANs. Em vários casos se  utiliza um roteador em conjunto com um gateway. 
Visão geral de uma rede TCP/IP
Uma  rede utilizando o TCP/IP tem uma estrutura básica composta por um (ou  mais) servidor rodando um servidor DNS (ou WINS), DHCP, SMTP, POP3 e os  servidores dos serviços desejados (HTTP, Gopher, Telnet e etc) e as  máquinas clientes solicitando esses serviços. Para se interligar essa  rede a uma outra rede TCP/IP, se faz necessário o uso de um roteador ou  gateway e da correcta configuração da rede.
Existem 2 maneiras de se ligar a LAN à Internet :
Atribuindo-se um nº de IP válido para cada máquina na rede, o que pode ser impossível para redes com muitas máquinas. 
Atribuindo-se um nº de IP válido para o gateway e utilizando-se o nº de IP 192.168.x.x internamente.
Como  o segundo caso é o mais factível, vamos observá-lo melhor. Nele, se  utiliza internamente à LAN o IP 192.168.x.x, que quando da determinação  do padrão dos nº de IP foi reservado para uso em redes internas, ou  seja, nenhuma máquina ligada directamente à Internet tem um IP  192.168.x.x. Isso é necessário pois como já vimos nenhuma máquina pode  ter um nº de IP que já esteja sendo utilizado por uma outra máquina.
O  gateway tem 2 interfaces de rede, uma para se conectar à Internet e  outra para se conectar à LAN. À interface da Internet é atribuído o nº  de IP válido na Internet e na da LAN o nº de IP do tipo 192.168.x.x  (usualmente 192.168.0.1). Nas máquinas da LAN o nº de IP é do tipo  192.168.x.x (aonde o 1º " x " é o mesmo do do gateway) e o gateway  default é o IP do gateway voltado para a LAN (192.168.x.x). Dessa forma  podemos ter até 16.384 máquinas na Internet por nº de IP válido. Essa  estrutura também facilita a adopção de medidas de segurança contra  intrusos da Internet, pois como todo o tráfego Internet passa pelo  gateway, basta protegê-lo para proteger toda a LAN. 
Protocolos do TCP/IP.
TCP e IP
O  TCP e o IP são apenas 2 membros da família TCP/IP. IP é um protocolo  que providência a entrega de pacotes para todos os outros protocolos da  família TCP/IP. O IP oferece um sistema de entrega de dados sem conexão.  Isto é, os pacotes IP não são garantidos de chegarem ao seu destino,  nem de serem recebidos na ordem em que foram enviados. O checksum do IP  confirma apenas a integridade do cabeçalho do pacote. Desta maneira, a  responsabilidade pelos dados contidos no pacote do IP (e sua sequência) é  tarefa de protocolos de mais alto nível.
Talvez o protocolo de  alto nível do IP mais comum seja o TCP. O TCP oferece um fiável  protocolo baseado em conexão encapsulado no IP. O TCP garante a entrega  dos pacotes, assegura o seguimento dos pacotes, e providencia um  checksum que valida tanto o cabeçalho quanto os dados do pacote. No caso  da rede perder ou corromper um pacote TCP/IP durante a transmissão, é  tarefa do TCP retransmitir o pacote faltoso ou incorrecto. Essa  compatibilidade torna o TCP/IP o protocolo escolhido para transmissões  baseadas em sessão, aplicativos cliente-servidor e serviços críticos  como correio electrónico.
Porém essa compatibilidade tem um preço.  Os cabeçalhos dos pacotes TCP requerem o uso de bits adicionais para  assegurar o correcto seguimento sequencial da informação, bem como um  checksum obrigatório para garantir a integridade do cabeçalho e dos  dados. Para garantir a entrega dos pacotes, o protocolo também requer  que o destinatário informe o recebimento do pacote.
Tal "  informação de recebimento " (ou ACKs, de acknowledgments) geram tráfego  adicional na rede, diminuindo a taxa de transferência de dados em favor  da compatibilidade. Para reduzir o impacto no desempenho, a maioria dos  servidores enviam um ACK para todo segmento de dados (ao invés de todo  pacote) ou quando um ACK expira.
UDP
Se a  compatibilidade não é essencial, o UDP (User Datagram Protocol), um  complemento do TCP, oferece um serviço de transmissão de dados sem  conexão que não garante nem a entrega nem a correcta sequência dos  pacotes enviados (bem parecido com o IP). Checksum no UDP são opcionais,  oferecendo assim uma maneira de se trocar dados em uma rede altamente  fiável sem consumir desnecessariamente recursos da rede.
ARP e ICMP
Dois  outros protocolos na família TCP/IP tem importantes funções, embora  essas funções não estejam directamente relacionadas com a transmissão de  dados: ARP (Address Resolution Protocol, ou Protocolo de Resolução de  endereços) e ICMP (Internet Control Message Protocol, ou Protocolo de  Controle de Mensagens da Internet). O ARP e o ICMP são protocolos de  manutenção que mantêm a estrutura do IP e usualmente são invisíveis aos  usuários e às aplicações.
Os cabeçalhos do IP contém tanto o  endereço IP da origem quanto do destino, mas o endereço do hardware  também tem de ser conhecido. O IP obtém um endereço de hardware de um  determinado sistema difundindo pela rede um pacote especial de  requisição (um pacote ARP de requisição) contendo o endereço IP do  sistema com o qual está tentando se comunicar. Todos os nós da rede  local que tiverem o ARP habilitado detectam essa difusão, e o sistema  que tem o número de IP em questão envia um pacote (do tipo ARP reply, ou  resposta ARP) contendo seu endereço de hardware para o computador que o  solicitou. O endereço de hardware e o endereço IP do computador estão é  armazenado no cache do ARP para uso futuro. Como a resposta ARP também é  feita na forma de difusão, é normal que outros nós usem essa informação  para actualizar seus caches ARP.
O ICMP permite que 2 nós em uma  rede IP compartilhem o status do IP (protocolo) e informação de erros.  Esta informação pode ser usada por protocolos de alto nível para tratar  problemas de transmissão ou para administradores de rede para detectar  problemas na rede. Embora estejam encapsulados em pacotes IP, o ICMP não  é considerado um protocolo de alto nível (ele é necessário em toda  implementação do TCP/IP). O utilitário ping faz uso do ICMP para  determinar se um certo endereço IP na rede está operacional. Isto é útil  para diagnosticar problemas em redes IP ou falhas em gateways.
Outros Protocolos
Além  desses protocolos citados, existem os protocolos de alto nível, como o  Telnet, FTP, HTTP e etc. Vamos a uma breve descrição deles :
Telnet  : É um protocolo que permite o logon em máquinas remotas. Você passa a  utilizar a máquina remota para realizar o processamento. No Windows NT  existe o RAS (Remote Access Service, Serviço de Acesso Remoto) que tem  os mesmos objectivos do Telnet.
FTP : File Transfer  Protocol (protocolo de transferência de arquivos), como o nome já diz é  utilizado para a transferência de arquivos.
HTTP:  Hyper Text Transfer Protocol : É o protocolo utilizado pela Web, ele  transmite textos, gráficos e qualquer outro tipo de arquivo  (substituindo o FTP) além de permitir a navegação através de hiper  texto.