Por que um desenvolvedor precisa aprender sobre o modelo TCP/IP ?
Published: 2024-01-08 19:17:06

Há muitas razões para aprender, mesmo que o básico sobre protocolos de redes. Já que 90% do mercado hoje é focado em web, esse conhecimento se torna não apenas relevante, mas indispensável para qualquer desenvolvedor. Nesse artigo, trarei o básico sobre modelo TCP/IP, desde suas camadas até a aplicação prática no desenvolvimento web.

Para começo de conversa, a estrutura da internet é construída sobre o modelo TCP/IP. Entender esse modelo ajuda na compreensão de como os dados são transmitidos (cliente x servidor).

##  Mas qual a diferença entre HTTP(s) para o tcp/ip e qual a relação entre eles?

O HTTP/HTTPs utilizam do modelo TCP/IP na camada de transporte (vou explicar logo mais) para estabelecer conexão entre clientes e servidores.

Basicamente, o TCP/IP fornece a infraestrutura para o transporte, enquanto o HTTP(s) especificam como os dados devem ser formatados e transferidos.

Pense que a relação deles seja uma conversa entre dois amigos que estão enviando cartas um para o outro.

Imagine que o TCP/IP é como o correio, que cuida do roteamento, da entrega e da confirmação recebida. Agora o HTTP(s) como o conteúdo da carta com informações específicas.

## Camadas do modelo TCP/IP
O modelo TCP/IP é composto por quatro camadas, sendo elas: acesso de rede, internet, transporte e aplicação. Para melhor entendimento, imagine cada camada como um andar de um prédio, cada uma desempenha uma função crucial no processo de comunicação.

Camada de acesso:

- Responsável pela transmissão de dados entre dispositivos em uma mesma rede local.
 
Camada de internet:

- Lida com o roteamento de pacotes de dados entre diferentes redes.

Camada de transporte:

- Aqui é onde reside o TCP (Transmission Control Protocol) e o UDP (User Datagram Protocol), sendo o TCP responsável pela confiabilidade na transmissão.

Camada de aplicação:

- Engloba protocolos de nível de aplicação, como já ditos anteriormente, HTTP, HTTP(s). Existem outros também, como por exemplo o FTP e o SMTP, mas não abordaremos eles nesse artigo.

## Como o desenvolvimento é impactado usando o modelo TCP/IP?
Compreender como as camadas interagem é crucial para o desenvolvimento web. Ao criar aplicações, os desenvolvedores interagem principalmente com a camada de aplicação, utilizando o HTTP e o HTTPS.

## O que são sockets? (Sockets Programming)
Sockets são uma interface de programação (API) que fornece um mecanismo para a comunicação entre processos em diferentes dispositivos, seja na mesma máquina ou em máquinas remotas.
Os sockets permitem que programas troquem dados e informações de maneira bidirecional, estabelecendo conexão entre cliente x servidor.

Há dois tipos de sockets, os sockets de fluxo (TCP) e sockets de datagrama (UDP).
- Sockets de fluxo garantem uma transmissão confiável de dados, assegurando que os dados sejam entregues na ordem correta e sem perda.
- Sockets de datagrama (UDP) oferecem uma comunicação mais leve, sem garantias de entrega ou ordem. (São úteis para aplicações onde a perda de pacotes é aceitável, como por exemplo streams ou jogos online).

## Segurança com o modelo TCP/IP
O modelo TCP/IP é essencial para entender as práticas de segurança na web. Aspectos como criptografia em camadas de transporte (HTTPS), firewalls na camada de internet e boas práticas na camada de aplicação são fundamentais para proteger aplicações contra ameaças.

## Criptografia em camadas de transporte:
A criptografia em camadas de transporte, como TLS/SSL, é uma prática de segurança que envolve a aplicação de técnicas criptográficas para proteger a confidencialidade dos dados durante a transmissão. Utilizando um protocolo seguro na camada de transporte (geralmente sobre o TCP), a criptografia assegura que as informações transmitidas entre cliente e servidor permaneçam privadas e seguras contra interceptação.

## Firewalls:
Os firewalls são dispositivos ou softwares que monitoram e controlam o tráfego de rede com base em regras predefinidas. Essa medida de segurança é implementada em diferentes camadas do modelo TCP/IP, incluindo a camada de Internet e a camada de Aplicação. Os firewalls ajudam a prevenir acessos não autorizados, filtrar tráfego malicioso e proteger contra ameaças externas, contribuindo para a segurança global de uma rede ou sistema.

## Conclusão
Dominar o modelo TCP/IP ou pelo menos saber o básico é essencial para qualquer desenvolvedor que almeje trabalhar com web. Essa compreensão facilita o desenvolvimento de aplicações eficientes e seguras.

## Referencias
[CISCO - Visão geral sobre TCP/IP](https://www.cisco.com/c/pt_br/support/docs/ip/routing-information-protocol-rip/13769-5.html)
[DevChannel - Introdução TCP/IP](https://devschannel.com/tcp-ip/introducao-tcp-ip)
[Proeminente - Modelo de redes TCP/IP](https://www.proeminente.com.br/blog/post/mundo/modelo-de-rede-tcp-ip)
[IBM - Sockets](https://www.ibm.com/docs/pt-br/i/7.5?topic=communications-socket-programming)
[CISCO - Firewalls](https://www.cisco.com/c/pt_br/products/security/firewalls/what-is-a-firewall.html#~tipos-de-firewall)