Conhecimentos básicos sobre redes de computadores
O que me motivou a criar essa publicação?
Tendo em vista a quantidade absurda de conteúdo que envolve a área de desenvolvimento é normal se sentir perdido em relação ao quê estudar, e um problema quase que geral da área de desenvolvimento é a negação de estudos de conteúdos de base (aliás, quem é que gosta de ficar estudando algoritmos ou lógica de programação enquanto tem um framework ou uma linguagem nova por aí, não é?)
Por isso me propus a criar uma postagem que explicasse os conceitos introdutórios de Redes de computadores (assunto esse que muitas vezes sequer chega a ser comentado em cursos ou livros).
Sou apenas um estudante em busca de compartilhar um pouco de conhecimento, espero que possam me corrigir caso tenha escrito alguma besteira :D
O quê é uma request?
Antes de tudo, nada mais justo do quê explicar o quê é uma request e qual exatamente a sua função.
De maneira grosseira, uma request é responsável por enviar uma mensagem/instrução ao servidor que vai retornar ao cliente (computador que enviou a requisição) algum dado como por exemplo uma página HTML ou a imagem de um gato fofinho.
Vale lembrar também que as requisições podem ser citadas como "pacotes"
Dito isso, acho que ficou fácil de entender que as requisições de nada mais se tratam do que instruções que podem ser enviadas a algum servidor para requisitar dados, mas... como funciona exatamente essa relação entre cliente e servidor?
Isso é o quê vou explicar agora ;)
A relação entre cliente e servidor
Tendo compreendido como as requisições funcionam já dá pra ter uma boa ideia de como isso funciona, portanto vou tentar ser sucinto!
O Cliente nada mais é do que o dispositivo que normalmente que está requisitando algum dado para outra máquina, vale lembrar que um cliente também pode ser um servidor isso vai variar de acordo com a maneira em que a rede utilizada está organizada, mas por enquanto não entraremos em tantos detalhes.
O Servidor já se trata da máquina que diferentemente do cliente vai enviar dados para outra máquina/dispositivo, um servidor normalmente é dotado de um banco de dados (o banco de dados pode variar desde uma pasta com alguns arquivos que estão sendo compartilhados até uma estrutura mais complexa que só vai liberar certos arquivos caso o usuário tenha permissão) que vai ser o local de onde vão ser "puxadas" as informações a serem enviadas.
Um exemplo simples de uma relação entre cliente e servidor é o próprio site do TabNews, que possui uma estrutura de servidor fixo, onde "apenas uma máquina" é capaz de prover os arquivos necessários para que você esteja visualizando essa postagem.
E sobre isso de um cliente também poder ser um servidor?
Para explicar isso irei precisar falar um pouco sobre a arquitetura de rede ponto-a-ponto
O quê é uma arquitetura de rede ponto-a-ponto?
Esse termo se refere a um modelo de arquitetura que diferente do citado acima onde o servidor é uma máquina fixa, pois todos os computadores da rede são capazes de fornecer e requisitar dados ao mesmo tempo!
Apesar de ser algo difícil de se imaginar assim de cara é possível citar exemplos bem comuns, como por exemplo os serviços de e-mail, FTP e até o Torrent. Todos esses serviços tem em comum o compartilhamento de arquivos sem a necessidade de um servidor central, pois essa troca de dados ocorre de maneira extremamente bem coordenada entre as máquinas conectadas a rede.
No caso do Torrent, por exemplo, quando você termina o download de algum arquivo como um filme, música ou etc. o seu computador automaticamente se transforma em um servidor (a não ser claro que você faça como é recomendado, e encerre todas as instâncias do programa), que vai começar a fornecer o mesmo arquivo para outros usuários. Sendo assim a sua máquina tanto consome dados como também passa a fornecer.
Tendo em vista que você agora é capaz de compreender as relações básicas entre cliente e servidor, podemos comentar um pouco sobre as diferentes maneiras de se transmitir dados por uma rede!
Ponto-a-ponto X Broadcast
Tendo em vista as relações explicadas acima, creio que foi possível entender que os computadores trocam dados entre si conforme as requisições são feitas, porém há um outro tipo de tecnologia para transmissão de dados chamada Broadcast que também é importante de ser citada.
Uma rede Broadcast é composta por um canal (um canal pode ser entendido como um grupo onde estão reunidas várias máquinas) de compartilhamento único onde o servidor é capaz de enviar um pacote que vai ser recebido e processado por todas as máquinas presentes no canal.
Uma rede ponto-a-ponto pode utilizar da tecnologia de transmissão de dados em Broadcast?
A resposta curta é que sim! Em uma rede ponto-a-ponto o pacote seria recebido por uma máquina e após isso ele seria reproduzido até que todas tivessem recebido uma cópia igual do mesmo.
Considerações finais
Creio que com esse conteúdo já é possível ter uma boa base de como funcionam as relações entre computadores em redes mais simples, conto a contribuição de todos que estejam lendo isso para que sejam corrigidos ou melhor explicar pontos que deixei passar. Agradeço desde já!
Vale lembrar novamente que isso se trata apenas dos conceitos mais inicias de redes de computadores, há muitos assuntos que penso em abordar em próximas publicações... quem sabe algum dia ;)
Fontes
- Computer Networks by Andrew S. Tanenbaum (Livro)
- https://www.infomoney.com.br/guias/peer-to-peer-p2p/
- https://www.firewall.cx/networking-topics/general-networking/109-network-broadcast.html