TCP/IP
Introdução
O TCP/IP (também chamado de pilha de protocolos TCP/IP) é um conjunto de protocolos de comunicação entre computadores em rede. Seu nome vem de dois protocolos: o TCP (Transmission Control Protocol – Protocolo de Controle de Transmissão) e o IP (Internet Protocol – Protocolo de Internet, ou ainda, protocolo de interconexão). O conjunto de protocolos pode ser visto como um modelo de camadas (Modelo OSI), onde cada camada é responsável por um grupo de tarefas, fornecendo um conjunto de serviços bem definidos para o protocolo da camada superior. As camadas mais altas, estão logicamente mais perto do usuário (chamada camada de aplicação) e lidam com dados mais abstratos, confiando em protocolos de camadas mais baixas para tarefas de menor nível de abstração.
História TCP/IP
O TCP/IP foi desenvolvido em 1969 pelo U.S. Department of Defense Advanced Research Projects Agency, como um recurso para um projeto experimental chamado de ARPANET (Advanced Research Project Agency Network) para preencher a necessidade de comunicação entre um grande número de sistemas de computadores e várias organizações militares dispersas. O objetivo do projeto era disponibilizar links (vínculos) de comunicação com alta velocidade, utilizando redes de comutação de pacotes. O protocolo deveria ser capaz de identificar e encontrar a melhor rota possível entre dois sites (locais), além de ser capaz de procurar rotas alternativas para chegar ao destino, caso qualquer uma das rotas tivesse sido destruída. O objetivo principal da elaboração de TCP/IP foi na época, encontrar um protocolo que pudesse tentar de todas as formas uma comunicação caso ocorresse uma guerra nuclear. A partir de 1972 o projeto ARPANET começou a crescer em uma comunidade internacional e hoje se transformou no que conhecemos como Internet. Em 1983 ficou definido que todos os computadores conectados ao ARPANET passariam a utilizar o TCP/IP. No final dos anos 1980 a Fundação Nacional de Ciências em Washington, D.C, começou a construir o NSFNET, um backbone para um supercomputador que serviria para interconectar diferentes comunidades de pesquisa e também os computadores da ARPANET. Em 1990 o NSFNET se tornou o backbone das redes para a Internet, padronizando definitivamente o TCP/IP.
Especificação
De 1973 a 1974, o grupo CERF de redes de pesquisas de Stanford trabalhou os detalhes da ideia do protocolo TCP/IP, resultando em sua primeira especificação. A influência técnica significativa foi o trabalho da Xerox PARC, que produziu o PARC (Packet Universal protocol suite), muito mais do que existia naquela época.[necessário esclarecer]
DARPA então contratado pela BBN Technologies, da Universidade de Stanford e da University College London (UCL) para desenvolver versões operacionais do protocolo sobre diferentes plataformas de hardware. Quatro versões foram desenvolvidas: TCP v1, v2 TCP, TCP v3 e v3 IP e TCP / IP v4. O último protocolo ainda está em uso hoje.
Em 1975, foi realizado um teste de comunicação entre as duas redes TCP/IP entre Stanford e UCL (as duas universidades citadas anteriormente). Em novembro de 1977, foi realizado um teste entre três redes TCP/IP entre os sites nos EUA, Reino Unido e Noruega. Vários outros protótipos TCP/IP foram desenvolvidos em múltiplos centros de pesquisa entre 1978 e 1983. A migração da ARPANET para o TCP/IP foi oficialmente concluído no dia 1º de janeiro de 1983, quando o flag foi programado para ativar permanentemente os novos protocolos.
Benefícios do protocolo TCP/IP
O TCP/IP sempre foi considerado um protocolo bastante pesado,[carece de fontes] exigindo muita memória e hardware para ser utilizado. Com o desenvolvimento das interfaces gráficas, com a evolução dos processadores e com o esforço dos desenvolvedores de sistemas operacionais em oferecer o TCP/IP para as suas plataformas com performance igual ou às vezes superior aos outros protocolos, o TCP/IP se tornou um protocolo indispensável. Hoje ele é tido como “The Master of the Network” (O Mestre das Redes),[carece de fontes] pois a maioria das LANs exige a sua utilização para acesso ao mundo externo. O TCP/IP oferece alguns benefícios, dentre eles:
Padronização: um padrão, um protocolo roteável que é o mais completo e aceito protocolo disponível atualmente. Todos os sistemas operacionais modernos oferecem suporte para o TCP/IP e a maioria das grandes redes se baseia em TCP/IP para a maior parte de seu tráfego.
Interconectividade: uma tecnologia para conectar sistemas não similares. Muitos utilitários padrões de conectividade estão disponíveis para acessar e transferir dados entre esses sistemas não similares, incluindo FTP (File Transfer Protocol) e Telnet (Terminal Emulation Protocol).
Roteamento: permite e habilita as tecnologias mais antigas e as novas a se conectarem à Internet. Trabalha com protocolos de linha como P2P (Point to Point Protocol) permitindo conexão remota a partir de linha discada ou dedicada. Trabalha como os mecanismos IPCs e interfaces mais utilizados pelos sistemas operacionais, como sockets do Windows e NetBIOS.
Protocolo Robusto: escalável, multiplataforma, com estrutura para ser utilizada em sistemas operacionais cliente/servidor, permitindo a utilização de aplicações desse porte entre dois pontos distantes.
Internet: é através da suíte de protocolos TCP/IP que obtemos acesso a Internet. As redes locais distribuem servidores de acesso a Internet (proxy servers) e os hosts locais se conectam a estes servidores para obter o acesso a Internet. Este acesso só pode ser conseguido se os computadores estiverem configurados para utilizar TCP/IP.
Protocolos para Internet
Os protocolos para Internet formam o grupo de protocolos de comunicação que implementam a pilha de protocolos sobre a qual a internet e a maioria das redes comerciais funcionam. Eles são algumas vezes chamados de “protocolos TCP/IP”, já que os dois protocolos: o protocolo TCP – Transmission Control Protocol (Protocolo de Controle de Transmissão); e o IP – Internet Protocol (Protocolo de Internet) foram os primeiros a serem definidos.
O modelo OSI descreve um grupo fixo de sete camadas que pode ser comparado, a grosso modo, com o modelo TCP/IP. Essa comparação pode causar confusão ou trazer detalhes mais internos para o TCP/IP.
O modelo inicial do TCP/IP é baseado em 4 níveis: Host/rede; Inter-rede; Transporte; e Aplicação. Surgiu, então, um modelo híbrido, com 5 camadas, que retira o excesso do modelo OSI e melhora o modelo TCP/IP: Física; Enlace; Rede; Transporte; e Aplicação.
Resumidamente, o modelo é o que podemos chamar de uma “solução prática para problemas de transmissão de dados”. Textualmente isto pode parecer muito genérico, pois na realidade para melhor compreensão de um protocolo TCP/IP deveremos usar exemplos práticos. Este modelo é ocasionalmente conhecido como modelo DoD, devido à influência fundamental da ARPANET em 1970 (operado pela DARPA, uma agência do Departamento de Defesa dos Estados Unidos).
Funcionamento
TCP-IP possui 4 camadas sendo que o início se dá com o programa conversando na camada de aplicação. Nesta camada você vai encontrar protocolos como o SMTP (para e-mail), FTP (para transferência de arquivos) e HTTP (para navegar na internet) e cada tipo de programa fala para um protocolo diferente da camada de Aplicação, dependendo do propósito do programa.
Depois de processar a requisição, o protocolo na camada de Aplicação vai falar com outro protocolo na camada de Transporte, usualmente o TCP. Esta camada é responsável por pegar o dado enviado pela camada de Aplicação, dividindo este dado em pacotes a fim de enviar ele para a camada inferior, a da Internet. Também, durante o recebimento do dados, a camada de Transporte é responsável por colocar os pacotes de dados recebidos da camada de Internet em ordem (os dados podem ser recebidos fora de ordem) e também checar se o conteúdo dos pacotes estão intactos.
Na camada da Internet, nós temos o IP (Internet Protocol), que pega os pacotes recebidos da camada de Transporte e adiciona uma informação de endereço virtual. Exemplo: adiciona o endereço do computador que está enviando dados e o endereço do computador que vai receber estes dados. Estes endereços virtuais são chamados de endereços IP. Então o pacote é enviado para a camada inferior, Interface de Rede e quando dos dados chegam nesta camada, eles são chamados de datagramas.
A Interface de Rede vai pegar os pacotes enviados pela camada de Internet e enviar através da rede (ou receber da rede, se o computador estiver recebendo dados). O que vai ter dentro desta camada vai depender do tipo de rede que o computador estiver inserido. Hoje em dia, o tipo de rede mais utilizado para comunicação entre computadores é a Ethernet (que é avaliada em diferentes faixas de velocidade) e pode ser cabeada (cabo de par trançado CAT5 ou CAT6) ou WI-FI (sem fio). Ainda dentro da camada de Interface de Rede Ethernet, você deve encontrar camadas Ethernet como a LLC (Logic Link Control), MAC (Media Access Control) e a Física que é o meio físico (cabo por exemplo). Os pacotes transmitidos através da rede são chamados de quadros.
Camadas da pilha dos protocolos internet
O modelo ou arquitetura TCP/IP de encapsulamento busca fornecer abstração aos protocolos e serviços para diferentes camadas de uma pilha de estruturas de dados (ou simplesmente pilha).
No caso do modelo inicial do TCP/IP, a pilha possuía quatro camadas:
Camada 4 – Aplicação – (5ª, 6ª e 7ª camada OSI) HTTP, HTTPS, FTP, DNS. Essa parte contém todos os protocolos para um serviço específico de comunicação de dados em um nível de processo-a-processo (por exemplo: como um web browser deve se comunicar com um servidor da web). [protocolos de routing como BGP e RIP, que, por uma variedade de razões, são executados sobre TCP e UDP respectivamente, podem também ser considerados parte da camada de aplicação]
Camada 3 – Transporte – (4ª camada OSI) TCP, UDP, SCTP. Essa parte controla a comunicação host-a-host. [protocolos como OSPF, que é executado sobre IP, podem também ser considerados parte da camada de rede]
Camada 2 – Internet – (3ª camada OSI) Para TCP/IP o protocolo é IP, MPLS. Essa parte é responsável pelas conexões entre as redes locais, estabelecendo assim a interconexão. [protocolos requeridos como ICMP e IGMP é executado sobre IP, mas podem ainda ser considerados parte da camada de rede; ARP não roda sobre IP]
Camada 1 – Enlace (Interface com Rede) – (1ª e 2ª camada OSI) Essa é a parte conhecida como física pois trata-se das tecnologias usadas para as conexões como: Ethernet, Wi-Fi, Modem, etc. No modelo OSI, essa camada também é física, porém, é dividido em duas partes: física e enlace de dados. A física é a parte do hardware e a enlace de dados é a parte lógica do hardware; mac address.
As camadas mais próximas do topo estão logicamente mais perto do usuário, enquanto aquelas mais abaixo estão logicamente mais perto da transmissão física do dado. Cada camada tem um protocolo de camada acima e um protocolo de camada abaixo (exceto as camadas da ponta, obviamente) que podem usar serviços de camadas anteriores ou fornecer um serviço, respectivamente.
Enxergar as camadas como fornecedores ou consumidores de serviço é um método de abstração para isolar protocolos de camadas acima dos pequenos detalhes de transmitir bits através, digamos, de ethernet, e a detecção de colisão enquanto as camadas abaixo evitam ter de conhecer os detalhes de todas as aplicações e seus protocolos.
Essa abstração também permite que camadas de cima forneçam serviços que as camadas de baixo não podem fornecer. Por exemplo, o IP é projetado para não ser confiável e é um protocolo best effort delivery. Isso significa que toda a camada de transporte deve indicar se irá ou não fornecer confiabilidade e em qual nível.
O TCP (Transmission Control Protocol – Protocolo de Controle de Transmissão), é um protocolo orientado a conexões confiável que permite a entrega sem erros de um fluxo de bytes.
O UDP fornece integridade de dados (via um checksum) mas não fornece entrega garantida; já o TCP fornece tanto integridade dos dados quanto garantia de entrega (retransmitindo até que o destinatário receba o pacote).
Comparação com o modelo OSI
Existe a discussão de como mapear o modelo TCP/IP convencionalmente de 4 camadas dentro do modelo OSI que possui o padrão de 7 camadas. Como os modelos TCP/IP e OSI não combinam exatamente, não existe uma única resposta para esta questão.
Além do mais, o modelo OSI não é realmente rico o suficiente nas camadas mais baixas para capturar a verdadeira divisão de camadas; é necessário uma camada extra (a camada internet) entre as camadas de transporte e de rede. Protocolos específicos para um tipo de rede que rodam em cima de estrutura de hardware básica precisam estar na camada de rede. Exemplos desse tipo de protocolo são ARP e o Spanning Tree Protocol (usado para manter pontes de rede redundantes em “espera” enquanto elas são necessárias). Entretanto, eles são protocolos locais e operam debaixo da funcionalidade internet. Reconhecidamente, colocar ambos os grupos (sem mencionar protocolos que são logicamente parte da camada internet, mas rodam em cima de um protocolo internet, como ICMP) na mesma camada pode ser um tanto confuso, mas o modelo OSI não é complexo o suficiente para apresentar algo melhor.
Geralmente, as três camadas mais acima do modelo OSI (aplicação, apresentação e sessão) são consideradas como uma única camada (aplicação) no modelo TCP/IP. Isso porque o TCP/IP tem uma camada de sessão relativamente leve, consistindo de abrir e fechar conexões sobre TCP e RTP e fornecer diferentes números de portas para diferentes aplicações sobre TCP e UDP. Se necessário, essas funções podem ser aumentadas por aplicações individuais (ou bibliotecas usadas por essas aplicações). Similarmente, IP é projetado em volta da ideia de tratar a rede abaixo dele como uma caixa preta de forma que ela possa ser considerada como uma única camada para os propósitos de discussão sobre TCP/IP.
O modelo TCP/IP está dividido em quatro camadas:
- Camada de aplicação (FTP, SMTP, TELNET, HTTP, HTTPS, etc)
- Camada de transporte (TCP, UDP, etc)
- Camada de rede (IP)
- Camada física (Ethernet, etc)
Semelhanças:
- Ambos têm camadas;
- Ambos têm camadas de aplicação, embora incluam serviços muito diferentes;
- Ambos têm camadas de transporte e de rede comparáveis;
- A tecnologia de comutação de pacotes (e não comutação de circuitos) é presumida por ambos;
- Os profissionais da rede precisam conhecer ambos.
Diferenças:
- TCP/IP combina os aspectos das camadas de apresentação e de sessão dentro da sua camada de aplicação;
- TCP/IP combina as camadas física e de enlace do OSI em uma camada;
- TCP/IP parece ser mais simples por ter menos camadas;
- Os protocolos do TCP/IP são os padrões em torno dos quais a Internet se desenvolveu, portanto o modelo TCP/IP ganha credibilidade apenas por causa dos seus protocolos. Em contraste, nenhuma rede foi criada em torno de protocolos específicos relacionados ao OSI, embora todos usem o modelo OSI para guiar seu raciocínio.