<aside> 🔀 Este projeto é sobre como fazer uma fofoca de qualidade em privacidade (sem esparrar pra todo o mundo).

</aside>

palavras-chave: redes, roteamento, subdivisão de redes, endereço de IP, máscara de sub-rede, octetos, conversão binário-decimal

Introdução

Esse projeto é diferente de todos os outros da 42 porque a entrega não envolve uma sequer linha de código: é uma lista de 10 exercícios sobre roteamento e subdivisão de redes (subnetting), com dificuldade progressiva. A sua entrega neste projeto é a sua resolução para cada um dos exercícios, gravada em um arquivo .json, que deve ser submetido no repositório da Vogsphere. Para a defesa do projeto, três dos 5 exercícios mais difíceis da lista (6 ao 10) serão aleatoriamente escolhidos, e você terá 15 minutos ao todo para resolver os três exercícios.

Por causa disso, existe a maneira express de fazer o projeto — decorar a resolução dos exercícios 6 a 10 e praticar para resolvê-los rápido o suficiente —, e existe a maneira que leva mais tempo de pesquisa e mais bateção de cabeça. Uma não necessariamente é mais válida que a outra, e muito do conteúdo desse Acelera existe principalmente porque o decoreba não funciona >> pra mim <<, então por isso fiz minhas pesquisas para conseguir entender o que é que os exercícios do Netpractice pretendem simular, pesquisas que não necessariamente me dão ferramentas pra resolver os exercícios em si, mas me dão contexto sobre o mundo de redes e sub-redes para que eu me sinta mais confortável olhando para os diagramas abstratos da lista de exercícios.

Eu acho difícil começar a falar sobre esse projeto, porque o assunto “redes de computadores” é absurdamente vasto, com várias camadas que podem ser atacadas a partir de vários ângulos diferentes. Existem cursos de graduação inteiros dedicados a essa disciplina (Engenharia de Redes de Comunicação, por exemplo), que abordam desde o aspecto físico de redes de comunicação (cabos, wireless), aspectos lógicos (protocolos de comunicação), aspectos digitais (transmissão de sinais, componentes eletrônicos para produzir e medir sinais), aspectos elétricos (alimentação e manutenção de datacenters), e tantas coisas mais que me escapam… Da maneira como entendo, esse projeto existe no nosso currículo para nos mostrar que esse mundo das redes de computadores existe… mas não é (e nem faz sentido ser) um mergulho profundo no assunto.

Assim, se você precisa correr, siga o passo a passo comentado de resolução do NetPractice nesse Github (em inglês). Se você tem tempo e interesse para conhecer mais sobre o mundo de redes e roteamento, bem-vinde a este acelera :)

Onde tudo começa

Dá uma olhada no Holy Graph. Existe uma transição muito sutil que acontece do anel 4 pro anel 5, que não está escrita em nenhum lugar, não está documentada, mas que é fundamental perceber para você entender todos os projetos que vai fazer daqui pra frente. Até o presente momento, todos os projetos que você já entregou são projetos que rodam em um único computador, e não se comunicam com outros computadores. Não existe essa necessidade. Pensa em um jogo como o So_long, um programa como o Minishell, ou o Minitalk. O que eles têm em comum? Esses programas são executados uma única vez, dentro de um computador; podem ou não interagir com o usuário (o player andando na tela; os comandos do minishell); o minitalk até mesmo se propõe a botar dois processos diferentes para conversarem entre si, mas sempre dentro de um mesmo computador. O objetivo desses programas é: ser invocado, executar uma tarefa, e se encerrar.

Mas computadores não existem apenas isolados uns dos outros, rodando programas sozinhos, no máximo interagindo com o usuário. Na verdade, se você está lendo isto, é porque o seu computador está conectado a uma rede mundial chamada Internet! Para pra pensar sobre isso um minutinho. Eu não te dei o meu computador pessoal para você ler isso que estou escrevendo. Se pá a gente nem se conhece. Eu também não as publiquei em um livro que você comprou na livraria e está lendo agora, muito menos criei cópias do arquivo que contém os Aceleras em vários CDs ou pen-drives (entregando a idade aqui) e distribuí as cópias por aí na porta da 42. Você está lendo essas palavras aqui e agora porque eu coloquei os textos do Acelera dentro de um computador, que está conectado à internet, e cujo conteúdo pode ser acessado publicamente por qualquer outra pessoa conectada à internet, não importa quem seja ou de onde esteja me lendo.

[…]

Julio Battisti - Artigos e tutoriais gratuitos; Venda de livros, e-books, video-aulas e cursos online.

Roteirinho:

  1. O que é um IP
  2. O que são octetos (só vai de 0 a 255 então 290 é ip inválido etc)
  3. notação de máscara de subnet (CIDR e a outra)
  4. O que é a subnet (quando ñ é 255 ou 0; relação de 1 bit = 2 subnets = 128 ips por subnet, porém host e broadcast faz com q sejam 126 ips úteis)
  5. diferença entre um range (bloco de ips) e um ip + sua subnet mask