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