
Então para resolver parte deste problema, seguem alguns dados básicos sobre o funcionamento de redes que todos os desenvolvedores são obrigados a saber, para evitar parecer um retardado mental em um forum, ou pior, em uma entrevista de emprego
Este post não vai ser o compendio de todo o conhecimento sobre redes da história, mas a idéia é possibilitar pelo menos um conhecimento básico.
Rede = Mais de um computador ligado de alguma forma.
O primeiro passo para a criação de uma rede, é a conexão fisica dos computadores, para esta conexão fisica temos diversas opções, seguem alguns exemplos:
Todas estas opções criam redes, simples ou complexas, dois computadores ligados atravéz de um cabo formam uma rede, a internet é uma rede.
Depois do cabo ligado, ou da conexão fisica estabelecida, normalmente existe um protocolo de baixo nível que vai permitir que os protocolos de mais alto nível funcionem. Estes protocolos normalmente são especificos para cada meio de transporte, como pode ser visto na lista abaixo:
Depois de uma conexão fisica estabelecida, é necessário um protocolo para a utilização desta conexão fisica. Este protocolo de mais alto nível, vai ser executado sobre o protocolo de baixo nível descrito anteriormente. Neste nível em uma rede TCP/IP temos o protoclo ARP.
ARP = Address Resolution Protocol
Este protocolo permite que computadores consigam localizar outros computadores na mesma rede física. não confundir com DNS que veremos depois.
O ARP é um protocolo baseado em broadcast, e funciona mais ou menos como se um computador gritasse no cabo de rede: Quem é o dono do endereço IP 192.168.1.1?
Todos os computadores na mesma rede física receberão a pergunta, apenas o dono do endereço vai responder, algo como: Este endereço é meu, meu endereço fisico é: 3e:43:87:a2:01:23
O endereço físico da mensagem é o famoso endereço MAC
MAC = Media Access Control
o IEEE define 3 tipos de endereço MAC
Unicast – que identifica apenas uma máquina
Broadcast – identifica todas as maquinas da rede local, tem o valor fixo FF:FF:FF:FF:FF:FF
Multicast – endereços que identificam um grupo de maquinas da rede local
Com o ARP funcionando, ja é possível que as maquinas da rede local se encontrem, descubram para qual endereço físico mandar as mensagens IP. Então chegou a hora de começarmos a falar de TCP/IP
TCP/IP = Transmission Control Protocol/Internet Protocol
Existe também o UDP/IP mas se você entender o TCP o UDP vai ser barbada.
TCP/IP como pode ser visto no nome, é uma combinação de 2 protocolos, o Internet Protocol e o Transmission Control Protocol.
A pilha de protocolos IP começa no ARP, inclui o ICMP (o protocolo utilizado pelo Ping e Traceroute) e o IP.
Aqui é importante saber que existem 4 categorias de endereços IP:
Para explicar estas categorias vou falar um pouco de Endereçamento IP, se quiser mais detalhes siga o link para a Wikipedia.
Endereços Públicos são os que não são reservados, nem de multicast.
Existem as seguintes faixas de endereços reservados para utilização em redes internas:
| Faixa de endereços de IP | No de Redes | No de IPs | IPs por rede |
|---|---|---|---|
| 10.0.0.0 – 10.255.255.255 | 126 | 16.777.215 | 16.777.216 |
| 172.16.0.1 – 172.31.255.254 | 16.382 | 1.048.576 | 65 534 |
| 192.168.0.0 – 192.168.255.255 | 2.091.150 | 65.535 | 256 |
Alem destes endereços reservados para redes privadas, a rede 127.0.0.0/8, é toda reservada para apontar para “localhost”, o endereço utilizado normalmente é 127.0.0.1 mas qualquer endereço desta rede funciona exatamente igual.
Alem destes endereços reservados, as redes são dividias em 5 classes (A, B, C, D e E) a classe D é a rede de multicast mencionada anteriormente.
| Classe | Gama de Endereços | |
|---|---|---|
| A | 1.0.0.0 até 127.255.255.255 | |
| B | 128.0.0.0 até 191.255.255.255 | |
| C | 192.0.0.0 até 223.255.255.255 | |
| D | 224.0.0.0 até 239.255.255.255 | |
| E | 240.0.0.0 até 247.255.255.255 |
Para se utilizar um endereço IP que não esteja reservado para redes privadas, é necessário pagar por ele, empresas compram faixas de endereços IP. Todos os provedores precisam ter uma faixa de endereços IP. Por isto os endereços começaram a acabar, e a pelo menos 10 anos, se fala em substituir os endereços IP de 4 bytes que utilizamos hoje, por endereços IP de 16 bytes. Mas acredito que isto vai deporar um pouco ainda.
Bom, isto é o mínimo que você precisa conhecer sobre redes, algum dia destes escrevo um pouco mais sobre algum assunto especifico, mas se você não conhecer isto sobre redes, você não deveria programar aplicações que utilizam rede (ou seja, qualquer uma hoje em dia).
O assunto ficou inacabado com certeza, mas ja escrevi bastante e perdi a vontade de falar sobre isto, provavelmente volte a vontade assim que eu ler outra atrocidade em algum forum como a que deu origem a este post
)
Para saber mais sobre redes leia sobre o Modelo OSI, Endereçamento IP, Domain Name System, Enderaçamento CIDR e principalmente sobre Roteamento IP.
Espero que este post seja útil para alguem, e meus parabéns para os que leram até aqui!
If you enjoyed this post, make sure you subscribe to my RSS feed!
O que alguém poderia ter escrito em um fórum que motivaria escrever essa cola-para-prova-de-redes-da-faculdade?
Quero dizer, manda aê as atrocidades ou o link para elas
[],
AC
O link para as atrocidades iria desmoralizar o cara
E se alguem passar em uma prova sobre redes só com isto, muda de faculdade
Concondo contigo.
Mas isto é apenas a ponta do iceberg. Existem outros assuntos que também acho são básicos para um, digamos assim, um bom uso da “Ciência do Desenvolvimento de Software” (Ih… acho que criei mais um curso para as Universidades…)
Com certeza é só a ponta do iceberg,
Saber corretamente OO, Tecnicas de Refactoring, Design Patterns, …
Tudo é necessário …
Falando nisto, acho que vou escrever um pouco sobre refactoring
Só para constar, o IPv6 não vai usar seis bytes de endereçamento; vai usar 16 bytes.
Obrigado pela correção
[...] Coisas que todo desenvolvedor deveria saber sobre redesQualquer bom desenvolvedor de sistemas, independente de linguagem, tem a obrigação de conhecer um pouco sobre configuração de redes. [...]
Obrigação de conhecer um pouco de tudo ! Não somente no que toca a assuntos relacionados a propria informática, mas a outros também !
Acho que não existe lugar onde conhecimentos gerais e aleatórios sejam mais benvindos que no desenvolvimento de software.
Um bom desenvolvedor tem de possuir bom conhecimento de redes, sistemas operacionais, psicologia, química, fisica quantica, ufologia, klingon, teologia, peteca, e por aí vai… ( Parece até aqueles anuncios de empresa que pedem MS-Word nos requisitos pra programador, rsrsrsr )
Já repararam quanto conhecimento adquirimos ao longo dos anos em nossos projetos ? Meu caso: Medicina, Logística, Engenharia, Vendas, Aviação Militar, Biologia, Mercado Financeiro, inumeros outros…
Cheguei a conclusão que o único bom desenvolvedor de sistemas é Deus
Abraços,
Mac