Olá, pessoal! No último artigo eu finalizei com as duas arquiteturas mais comuns de rede; a P2P e a Cliente-Servidor. Ambas são conceitos utilizados para determinar a forma de gerenciamento e processamento das informações geradas. Isso tanto a cada jogador, quanto pelas entidades autônomas (não somente NPC, mas também quaisquer dados gerados automaticamente).
Entretanto, existem outros fatores quanto à rede que precisamos levar em conta. Para dar uma ideia, vamos para uma explicação de como é feito o protocolo de comunicação na rede.
Modelo OSI
O modelo OSI (Open System Interconnection) é o modelo utilizado desde 1983 para a comunicação entre computadores. Esse modelo divide o processo de comunicação em 7 camadas, que são:
- Aplicação: é a camada onde são gerados os dados e criado o protocolo utilizado para que o aplicativo presente nos dois (ou mais) computadores possa se comunicar. É nela que fica não só os conceitos de arquiteturas que falamos, mas também as estruturas e lógica que o aplicativo possui. Protocolos famosos dessa camada são: HTTP, FTP, IRC, entre outros. Fazendo uma analogia com o envio de uma carta, essa é a parte em que você escolhe o tipo de papel que você vai escrevê-la e o tipo de caneta;
- Apresentação: É a camada que formata os dados que vão ser enviados ou recebidos. É nessa camada que é uma compressão dos dados, além de aplicar criptografia em alguns casos. Continuando a nossa analogia do envio da carta, é a parte em que você escreve a carta. Que idioma vai estar a carta? Ela vai estar cifrada que nem os livros do garoto do Acre?
- Sessão: responsável por controlar o fluxo de dados. É nessa camada que são verificados erros, falhas, e principalmente, as conexões. Na nossa analogia, é a parte em que conferimos se está tudo certo com a carta. Posso realmente enviar essa carta? Se sim, colocamos no envelope;
- Transporte: é a camada responsável em gerenciar o destino dos dados enviados, assim como vai ser enviado, e a origem dos dados recebidos. Também é a última camada lógica da rede. No nosso caso da carta, é a parte em que escrevemos remetente e destinatário. Também é a parte em que decidimos: a carta vai ser enviada da forma convencional? Ou talvez, Sedex, caso precisamos enviar com mais urgência e segurança? Então, postamos nos correios;
- Rede: essa camada é a que decide a rota que os dados vão ser enviados até o destino. Nos correios, é a parte em que a nossa carta é separada para o transporte segundo o destino e a forma de envio (afinal, quem quer Sedex, quer algo mais ágil do que alguém que pagou menos). Inclua também as escalas em todos os lugares em que a carta pode passar;
- Enlace: é a camada que faz a verificação final do pacote de dados, verificando possíveis erros antes de ser enviado e finalmente convertido em sinais físicos. É a conferência do envelope antes do embarque;
- Camada Física: como o nome diz, é a parte em que os dados são convertidos em sinais físicos, pulsos elétricos na maior parte, mas também pode ser pulso de luz, em caso de fibra ótica. É a carta no caminhão/avião seguindo o destino.
Essas são as sete camadas do modelo OSI. Quando o dado chega ao destino, ele passa pelo processo reverso ao que falei, saindo da camada física, passando pelo enlace, rede, transporte, sessão, apresentação e aplicação.
Como programador, nós temos controle até a camada de transporte. As camadas de Rede, Enlace e a Física é trabalho da placa de rede, logo não é do nosso interesse. As camadas de apresentação e sessão geralmente são transparentes para a programação, sendo que a própria linguagem de programação já deixa pronta. A única parte que realmente pode afetar o jogo, além da aplicação é a camada de transporte, que tem dois protocolos que vamos ver: UDP e TCP.
Protocolo TCP

TCP (Transmission Control Protocol) é o protocolo mais famoso da Internet. Basicamente, é ele que faz a maioria das conexões usadas na Internet. Não é à toa, primeiro, ele garante que todos os pacotes de dados que precisam ser enviados, cheguem ao seu destino, formalizando uma conexão entre as máquinas. E para enviar os pacotes? Tão simples quanto escrever um arquivo. Basicamente a ideia é exatamente isso. Você envia dados como se escrevesse em um arquivo que, ao invés de ser guardado em um disco rígido, é enviado ao destinatário.
Resumindo as principais características:
- TCP realiza conexão com o destinatário em um processo chamado de handshaking. Uma vez que o destinatário aceita, a troca de dados pode ser feita;
- No final de uma conexão de sucesso, é garantido que todos os dados tenha chegado ao destino;
- TCP é conexão ponto a ponto. Logo, somente duas máquinas podem compartilhar dados. Existem exceções, onde um endereço específico pode tornar o endereço de broadcast, ou seja, todas as máquinas recebem o pacote;
- Possui controle de fluxo refinado, onde para cada pacote recebido no destinatário, ele devolve uma confirmação, chamado ACK. Com base no tempo entre o envio e o ACK, ele avalia o fluxo da rede e adapta a velocidade de transmissão com a mesma.
Conclusão
Hoje começamos com o primeiro artigo sobre os protocolos de transporte. Falei do modelo OSI, que demonstra como os dados são enviados e recebidos na rede. E dei uma ideia geral do protocolo TCP, que é um protocolo que tem como principal característica a confiabilidade.
Falarei no próximo artigo sobre o outro protocolo: o UDP. Também faremos uma comparação entre os dois protocolos para decidir quais as situações um é melhor que o outro.
3 thoughts on “Desenvolvimento de Jogos em Rede: Camada OSI e Protocolo TCP”