For the complete documentation index, see llms.txt. This page is also available as Markdown.

Internet

Antes de seguirmos com opções de comunicação (IPC) para processos em computadores distintos, vamos entender um pouco o contexto da Internet e suas formas de comunicação.

Um pouco de história da Internet

O conceito de internet, como conhecemos, foi criado na década de 60 com o intuito de resolver um problema de interconexão entre computadores em redes distintas.

O objetivo era criar infra-estrutura para que a informação trafegasse rapidamente de um ponto remoto a outro no planeta, de forma descentralizada.

Durante o desenvolvimento do projeto, para evitar que cada rede tivesse sua própria forma de enviar mensagens, foi preciso delinear convenções e protocolos de comunicação dentro desta rede.

Dentre diversos outros padrões e conjuntos de protocolos criados naquela época de Protocol Wars, cria-se também o TCP/IP, que acaba se tornando a principal suite de protocolos para a internet desde então.

TCP/IP

Um dos conjuntos de padrões para a internet que foi concebido e hoje amplamente utilizado é a Suite de Protocolo de Internet, ou Internet Protocol Suite TCP/IP, que define protocolos de comunicação entre diferentes computadores na rede global.

No TCP/IP, são estabelecidas 4 camadas de comunicação:

  • Application: é o formato de mensagem que os diferentes programas irão interpretar. Exemplos como FTP, SSH e HTTP aparecem nesta camada.

  • Transport: nesta camada, são definidas regras de como a informação será transportada. Se será sem conexão, como os datagram sockets, ou com conexão, como os stream sockets, dentre outras regras. Exemplos como TCP e UDP surgem nesta camada.

  • Internet: cada processo na rede global precisa ter um identificador único, também chamado de endereço de protocolo de internet, ou endereço de IP. É esta camada que também define o formato da mensagem, se contém header, payload, dentre outros metadados.

  • Link: camada mais voltada para a parte de roteamento, especificações de canais de dados, dentre outros protocolos para a parte física da comunicação.

Neste guia, para que possamos entender os fundamentos da Web, vamos focar na camada de Transporte e Aplicação, pois a camada de Internet é basicamente a definição do que temos por endereçamento IP e camada de Link refere-se a toda a parte física (WiFi, fibra ótica, rádio, etc).

Camada de Transporte

Uma vez que a informação trafegou pela Internet e chegou ao computador, como a mesma é enviada ao processo destinatário?

Sockets

Sabemos que sockets são utilizados como IPC dentro do sistema operacional. Com isto, no TCP/IP, uma solução seria implementar a API de Sockets, assim conseguiríamos manter a mesma interface, facilitando a evolução de sistemas construídos em cima da Internet.

É com esta ideia que foi criado o projeto Berkeley Sockets, que é uma API que faz parte do TCP/IP mas que implementa UNIX Sockets. Desta forma, com Berkeley Sockets, conseguimos IPC de forma muito similar à UNIX Sockets.

Tipos de sockets no TCP/IP:

  • TCP: é a utilização de stream sockets no TCP/IP

  • UDP: é a utilização de datagram sockets no TCP/IP

Nas próximas seções, vamos explorar TCP e UDP como formas de comunicação entre processos através de TCP/IP.

Last updated