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