<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: mylena</title>
    <description>The latest articles on DEV Community by mylena (@mmsfarias).</description>
    <link>https://dev.to/mmsfarias</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1221200%2F8c4fd0f4-d04c-4549-8100-59e0970dfac7.jpg</url>
      <title>DEV Community: mylena</title>
      <link>https://dev.to/mmsfarias</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mmsfarias"/>
    <language>en</language>
    <item>
      <title>Redes: pt. 4 - Gateway, ARP e roteamento</title>
      <dc:creator>mylena</dc:creator>
      <pubDate>Sun, 27 Apr 2025 00:30:04 +0000</pubDate>
      <link>https://dev.to/mmsfarias/redes-pt-4-gateway-arp-e-roteamento-1j57</link>
      <guid>https://dev.to/mmsfarias/redes-pt-4-gateway-arp-e-roteamento-1j57</guid>
      <description>&lt;p&gt;&lt;em&gt;Registros do meu aprendizado sobre Redes, seguindo a trilha da &lt;a href="https://www.netacad.com/courses/networking-basics?courseLang=pt-BR" rel="noopener noreferrer"&gt;Cisco&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;




&lt;ul&gt;
&lt;li&gt;
Gateway

&lt;ul&gt;
&lt;li&gt;Roteamento&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

ARP

&lt;ul&gt;
&lt;li&gt;ND - Neighbor Discovery&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;




&lt;h2&gt;
  
  
  Gateway
&lt;/h2&gt;

&lt;p&gt;O gateway é uma &lt;strong&gt;porta de saída&lt;/strong&gt; que conecta o dispositivo de uma rede LAN à internet. Qualquer dispositivo pode ser um gateway, porém é comum que o endereço de gateway padrão seja atribuído ao &lt;strong&gt;roteador.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Mas o que é esse endereço de gateway padrão? É basicamente o IP do roteador. &lt;strong&gt;&lt;em&gt;"Todo gateway padrão é um IP, mas nem todo IP é um gateway padrão."&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Mas quando se usa ele? Em comunicações dentro da rede LAN não é necessário bater no gateway para enviar um pacote. Mas ao se comunicar com uma rede remota, ai sim é necessário fazer uso do gateway.&lt;/p&gt;

&lt;h3&gt;
  
  
  Roteamento
&lt;/h3&gt;

&lt;p&gt;Quando se faz o roteamento da comunicação, é necessário saber o IP e o endereço MAC de destino, mas como fazer se o destino está em outra rede e, portanto, desconhecemos o seu endereço MAC? É nesse caso que se usa o endereço MAC do gateway padrão.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Exemplo:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;O dispositivo 1 enviou um pacote para o dispositivo 2 que está em outra rede&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzqp1xjpj1ydlzugmjsvv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzqp1xjpj1ydlzugmjsvv.png" alt="Fluxo de envio de pacotes entre dispositivos através de roteadores e ISP, com NAT. O dispositivo 1 envia para Roteador 1: IP privado de origem e MAC de gateway como destino. O Roteador 1 realiza NAT: altera IP de origem para IP público e envia para ISP. O ISP encaminha para Roteador 2: mantém IP de origem e IP de destino. O Roteador 2 encaminha para Dispositivo 2: troca MAC de origem e destino para a rede interna.  &amp;lt;br&amp;gt;
Processos de NAT destacados nos roteadores." width="800" height="338"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Quando ocorre a conversão do NAT (do dispositivo 1 para o rotador 1), o IP de origem é armazenado na &lt;strong&gt;tabela NAT&lt;/strong&gt; então quando o roteador receber a resposta do dispositivo 2, ao desfazer o NAT, o roteador conseguirá pegar o IP correto e encaminhará o pacote.&lt;/p&gt;

&lt;h2&gt;
  
  
  ARP (Address Resolution Protocol)
&lt;/h2&gt;

&lt;p&gt;O ARP serve para quando se desconhece o endereço MAC de destino. Como precisamos dessa informação para nos comunicarmos, usamos o protocolo ARP para achar esse endereço MAC.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Como funciona? &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;O host atribui o endereço MAC broadcast do Ethernet &lt;strong&gt;(FFFF.FFFF.FFFF)&lt;/strong&gt; como destino em uma mensagem que contém o IP desse destino. Após isso, todos os hosts da rede LAN recebem o pacote e verificam o IP. Se for o IP correspondente, uma resposta é enviada com o seu endereço MAC.&lt;/p&gt;

&lt;p&gt;Ao encontrar o endereço MAC, ele e o IP são armazenados na &lt;strong&gt;tabela ARP&lt;/strong&gt; que facilita o processo quando for necessário.&lt;/p&gt;

&lt;h3&gt;
  
  
  ND (Neighbor Discovery)
&lt;/h3&gt;

&lt;p&gt;É a solução ARP para os IPv6.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Redes: pt 2. Introdução aos protocolos</title>
      <dc:creator>mylena</dc:creator>
      <pubDate>Fri, 28 Mar 2025 21:45:30 +0000</pubDate>
      <link>https://dev.to/mmsfarias/redes-pt-2-introducao-aos-protocolos-1hnp</link>
      <guid>https://dev.to/mmsfarias/redes-pt-2-introducao-aos-protocolos-1hnp</guid>
      <description>&lt;p&gt;&lt;em&gt;Registros do meu aprendizado sobre Redes, seguindo a trilha da &lt;a href="https://www.netacad.com/courses/networking-basics?courseLang=pt-BR" rel="noopener noreferrer"&gt;Cisco&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Padrões nos envios de mensagens
&lt;/h3&gt;

&lt;p&gt;As mensagens que trafegam pela internet seguem um conjunto de padrões que mantêm a comunicação organizada. Quem define as regras são os protocolos de redes e levam em consideração o: formato, tamanho, temporização, codificação, encapsulamento e padrão da mensagem enviada.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Encapsulamento:&lt;/strong&gt; Quando se fala de encapsulamento, é sobre conter um cabeçalho com informações sobre o dado que tá sendo enviado. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Cada camada do modelo de rede adiciona seu próprio cabeçalho, formando uma pilha de protocolos.&lt;/p&gt;

&lt;p&gt;Ao chegar na camada física do destino, os dados são desencapsulados e cada camada é responsável por verificar o seu respectivo cabeçalho e removê-lo no final, esse processo se dá até chegar na aplicação pro usuário final.&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;RFC&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;São documentos técnicos que contém padronizações, descrição de protocolos e de boas práticas que servem de recomendação para serem seguidas.&lt;/p&gt;

&lt;h3&gt;
  
  
  Modelo OSI e Modelo TCP/IP
&lt;/h3&gt;

&lt;p&gt;Existem diversos protocolos para serem usados na internet, porém hoje em dia os protocolos mais comuns são: &lt;strong&gt;IP, TCP, HTTP, ETHERNET&lt;/strong&gt; e podem existir algumas "combinações", como o modelo &lt;strong&gt;TCP/IP&lt;/strong&gt; que é bastante utilizado e explica como funciona a comunicação da internet.&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;Modelo de protocolo:&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;Descreve o que ocorre em cada camada de alguma suíte específica. Exemplo: Modelo TCP/IP fala sobre a suíte TCP/IP, então o foco são as camadas utilizadas e o que acontece dentro do TCP/IP em específico.&lt;/p&gt;

&lt;h5&gt;
  
  
  &lt;strong&gt;Camadas do TCP/IP:&lt;/strong&gt;
&lt;/h5&gt;

&lt;p&gt;No modelo TCP/IP a gente tem a: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;4. Camada de aplicação&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;3. Camada de transporte&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;2. Camada de internet&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;1. Rede&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Alguns autores, como o &lt;strong&gt;&lt;em&gt;Tunembaum&lt;/em&gt;&lt;/strong&gt; consideram o modelo TCP/IP com 4 camadas, onde a camada de rede corresponde a junção das camadas de enlace de dados e física do modelo OSI.&lt;/p&gt;

&lt;p&gt;Outros autores, como o &lt;strong&gt;&lt;em&gt;Kurose&lt;/em&gt;&lt;/strong&gt;, considera o modelo TCP/IP com 5 camadas, sem a junção da camada de enlace de dados e física. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A camada de aplicação no TCP/IP representa a junção das camadas de &lt;em&gt;aplicação, apresentação e sessão&lt;/em&gt; do modelo OSI.&lt;/strong&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;Modelo de referência:&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;É como o próprio nome já diz, é um modelo que serve de referência, então ele é mais genérico. Não vai ser abordado o que acontece em alguma suíte, mas vai dar uma visão ampla sobre como ocorrem os processos de comunicação na rede. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Modelo OSI&lt;/strong&gt; é um modelo de referência e conceitual, que serve para ter uma visão sobre as camadas existentes na comunicação de redes, ajudando a padronizar a comunicação.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No caso do OSI, existem 7 camadas, porém na prática nem sempre as camadas estarão rigidamente separadas.&lt;/p&gt;

&lt;h5&gt;
  
  
  &lt;strong&gt;Camadas do OSI:&lt;/strong&gt;
&lt;/h5&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Camada 7 - Aplicação:&lt;/strong&gt; camada mais próxima do usuário final, em que exibe os dados pro usuário. - &lt;strong&gt;HTTP/FTP/gRPC&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Camada 6 - Apresentação:&lt;/strong&gt; Traduz os dados recebidos e os organiza para o usuário final - &lt;strong&gt;Encoding, Serialização&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Camada 5 - Sessão:&lt;/strong&gt; Controla as sessões e o estabelecimento das comunicações - &lt;strong&gt;TLS, conexão&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Camada 4 - Transporte:&lt;/strong&gt; Garante a transferência dos dados entre os dispositivos de origem e destino, fazendo a segmentação (TCP) ou a diagramação (UDP) dos dados. - &lt;strong&gt;UDP/TCP&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Camada 3 - Rede:&lt;/strong&gt; Guarda os segmentos/datagramas em pacotes com roteamento dos IPs de origem e destino, além de calcular a melhor roda para o envio dos pacotes - &lt;strong&gt;IP com uso de roteadores, firewalls&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Camada 2 - Enlace de dados:&lt;/strong&gt; Responsável pela transmissão de dados (organizados em quadros) pro nível físico e detecção e correção de erros de transmissão - &lt;strong&gt;MAC Address, Ethernet com uso de Switches, NIC&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Camada 1 - Física:&lt;/strong&gt; Meio físico de transmissão - &lt;strong&gt;Cabos de rede, sinal de rádio&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
    </item>
    <item>
      <title>Redes: pt. 1 - Conexão e rede</title>
      <dc:creator>mylena</dc:creator>
      <pubDate>Sun, 02 Feb 2025 01:31:07 +0000</pubDate>
      <link>https://dev.to/mmsfarias/redes-pt-1-conexao-e-rede-1dcf</link>
      <guid>https://dev.to/mmsfarias/redes-pt-1-conexao-e-rede-1dcf</guid>
      <description>&lt;p&gt;&lt;em&gt;Registros do meu aprendizado sobre Redes, seguindo a trilha da &lt;a href="https://www.netacad.com/courses/networking-basics?courseLang=pt-BR" rel="noopener noreferrer"&gt;Cisco&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;




&lt;ul&gt;
&lt;li&gt;
Internet

&lt;ul&gt;
&lt;li&gt;Banda Larga&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Dados e sinais&lt;/li&gt;

&lt;li&gt;

Conexão na rede

&lt;ul&gt;
&lt;li&gt;Provedoras de serviço - ISP&lt;/li&gt;
&lt;li&gt;Modem e Roteador&lt;/li&gt;
&lt;li&gt;Modem&lt;/li&gt;
&lt;li&gt;Roteador&lt;/li&gt;
&lt;li&gt;Modem + Roteador&lt;/li&gt;
&lt;li&gt;Arquitetura Cliente-Servidor e P2P&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;




&lt;h2&gt;
  
  
  Internet
&lt;/h2&gt;

&lt;p&gt;A internet é uma rede de redes interconectadas que permite a comunicação entre diversas pessoas de qualquer lugar do mundo. O acesso a sites, blogs, jogos online é através da internet.&lt;/p&gt;

&lt;p&gt;Os usuários têm suas redes locais que acabam se conectando na internet. O caminho percorrido pode ser através de fibra óptica, fios de cobre, satélites etc.&lt;/p&gt;

&lt;p&gt;Essas redes locais (LAN - Local Area Network) podem ter diversos tamanhos, apesar do mais comum ser uma rede doméstica com apenas um roteador. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;SOHO:&lt;/strong&gt; Significa &lt;em&gt;pequeno escritório doméstico&lt;/em&gt;, que se refere a redes de pequeno porte, comuns em pequenos escritórios ou residências, conectando dispositivos como computadores, impressoras e roteadores, possibilitando acesso à internet e compartilhamento de recursos.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;WAN (Wide Area Network):&lt;/strong&gt; É uma rede mais ampla que interconecta várias redes LAN.&lt;/p&gt;

&lt;h3&gt;
  
  
  Banda larga
&lt;/h3&gt;

&lt;p&gt;A banda larga permite a conexão contínua com a internet, substituindo a internet discada. As vantagens da banda larga incluem poder navegar na internet de forma mais rápida e conseguir realizar várias atividades simultâneas sem depender de linhas telefônicas.&lt;/p&gt;

&lt;p&gt;Quanto maior a largura de banda, maior a capacidade de transferir dados. Essa transferência de dados é feita através do: DSL, conexão a cabo, fibra óptica, satélite, 4g/5g&lt;/p&gt;

&lt;h2&gt;
  
  
  Dados e sinais
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Dado voluntário&lt;/th&gt;
&lt;th&gt;Dado observado&lt;/th&gt;
&lt;th&gt;Dado inferido&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Dados que sabemos que são compartilhados. Como informações em perfil de rede social.&lt;/td&gt;
&lt;td&gt;Registros de atividades em segundo plano.&lt;/td&gt;
&lt;td&gt;Análise de dados observados e voluntários que disponibilizamos na internet.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Quando compartilhamos algum dado na internet, esse dado não chega no destino de uma forma linear do jeito que a enviamos. O dado que a origem envia é transformado em bits que é transformado em sinais e esses sinais são enviados pela rede.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bit:&lt;/strong&gt; Computadores interpretam padrões de bits, onde esses padrões são resumidos em uma sequência de 8 bits (como no padrão ASCII) entre os números 0 e 1. &lt;strong&gt;Um byte é 8 bits.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A rede por onde esses sinais passam é chamada de meio de transmissão (cobre/óptico/sem fio). E esses sinais podem ser convertidos N vezes de acordo com o tipo do meio, isso até chegar no destino. &lt;/p&gt;

&lt;p&gt;Os sinais podem ser do tipo: elétrico, óptico e sem fio.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Elétrico&lt;/th&gt;
&lt;th&gt;Óptico&lt;/th&gt;
&lt;th&gt;Sem fio&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Representação em pulsos elétricos de fio de cobre&lt;/td&gt;
&lt;td&gt;Conversão em pulsos de luz&lt;/td&gt;
&lt;td&gt;Uso de infravermelho, microondas ou ondas de rádio pelo ar&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Sinal Óptico:&lt;/strong&gt; Também conhecido como pulsos de luz, usa um laser/LED que converte os dados digitais em pulsos de luz e existe um conversor que traduz esses sinais em dados digitais (e vice versa).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Sinal elétrico:&lt;/strong&gt; Está relacionado ao fio de cobre, pois é ele que conduz eletricidade para transportar os dados na forma de ondas eletromagnéticas.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Cabos coxiais e DSL utilizam fios de cobre, ou seja, usam o sinal elétrico.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Conexão na rede
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Dispositivo final (Host)&lt;/th&gt;
&lt;th&gt;Dispositivo intermediário&lt;/th&gt;
&lt;th&gt;Meios de rede&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;PC, notebook, celular, tablet&lt;/td&gt;
&lt;td&gt;Gateway, switch, roteador, firewall&lt;/td&gt;
&lt;td&gt;Mídia LAN, WAN, Sem fio&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;A conexão usada pela maioria das redes domésticas não são com fibra óptica, pois a fibra óptica é ideal para sinais que percorrem longas distâncias. No contexto doméstico, o mais utilizado é a conexão por cabo ou por DSL.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Cabo:&lt;/strong&gt; O sinal de internet é enviado pelo mesmo cabo coaxial que entrega a TV a cabo.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Os usuários compartilham a banda larga da internet, o que faz com que, em horários de pico, a conexão fique mais lenta, mas ainda sim a conexão por cabo acaba sendo mais rápida do que o DSL.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;DSL:&lt;/strong&gt; Significa Linha Digital do Assinante. Ela mantém a conexão com a internet sempre ativa, requerendo um modem especial e que passa por fios de telefonia.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Nesse caso não há o compartilhamento entre os usuários, porém quanto mais longe da provedora, mais lenta será a conexão por conta da distância.&lt;/p&gt;

&lt;h3&gt;
  
  
  Provedoras de serviço - ISP
&lt;/h3&gt;

&lt;p&gt;A internet disponibilizada, seja por cabo, DSL ou outra forma, é através de provedoras de serviço de internet (ISP) que fornece esse link entre o usuário e a internet. Ou seja, o ISP oferece toda a infraestrutura de rede para acessar a internet, e além disso acabam oferecendo serviços adicionais.&lt;/p&gt;

&lt;p&gt;O fluxo do ISP pode ser descrito como:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Um dispositivo final pode estar conectado a um roteador;&lt;/li&gt;
&lt;li&gt;O roteador envia os dados do dispositivo final para o modem;&lt;/li&gt;
&lt;li&gt;O modem transforma em sinais analógicos e os envia para o ISP;&lt;/li&gt;
&lt;li&gt;O ISP recebe os sinais, os processa e envia para o destino;&lt;/li&gt;
&lt;li&gt;O modem recebe esses dados do ISP e os converte em sinais digitais e repassa para o roteador;&lt;/li&gt;
&lt;li&gt;O roteador organiza os pacotes de dados e envia para o dispositivo final;&lt;/li&gt;
&lt;li&gt;O dispositivo final de destino recebe as informações da origem;&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Modem e Roteador
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Modem
&lt;/h4&gt;

&lt;p&gt;O modem está diretamente conectado aos ISPs. É responsável por captar os sinais analógicos do ISP e transformar em sinais digitais (e vice versa).&lt;/p&gt;

&lt;p&gt;Essa conexão é através de um cabo WAN que se conecta diretamente a um roteador ou a um computador.&lt;/p&gt;

&lt;p&gt;O modem também pode ter um IP público atribuído pelo ISP.&lt;/p&gt;

&lt;h4&gt;
  
  
  Roteador
&lt;/h4&gt;

&lt;p&gt;O roteador não tem conexão direta com os ISPs, precisando de um modem para isso. A função do roteador é gerenciar os dispositivos que estão dentro da rede LAN. &lt;/p&gt;

&lt;p&gt;Ou seja, os dispositivos finais que se conectam a um roteador fazem parte de uma rede LAN. A conexão desses dispositivos com o roteador é feito através de cabos ethernet ou de wi-fi.&lt;/p&gt;

&lt;p&gt;O roteador é responsável por disponibilizar IPs privados para cada um dos dispostivos que fazem parte da sua rede LAN.&lt;/p&gt;

&lt;h4&gt;
  
  
  Modem + Roteador
&lt;/h4&gt;

&lt;p&gt;O roteador e o modem podem trabalhar juntos. O modem é capaz de transmitir os sinais digitais para o roteador e o roteador é capaz de organizar os pacotes de dados e enviar para o respectivo dispositivo final.&lt;/p&gt;

&lt;p&gt;O processo reverso também funciona. Além de que o roteador é capaz de traduzir, com ajuda do NAT, os IPs privados em um único IP público que permite a comunicação a fora na internet.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;NAT (Network Address Translation):&lt;/strong&gt; É uma tecnologia que permite que múltiplos dispositivos compartilhem de um mesmo IP público. E dentro dessa tecnologia existem alguns tipos como: NAT estático, dinâmico e o overload.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Arquitetura Cliente-Servidor e P2P
&lt;/h3&gt;

&lt;p&gt;Essas arquiteturas são algumas que existem e é importante compreender suas diferenças.&lt;/p&gt;

&lt;p&gt;Hoje em dia, na internet, usamos o padrão de cliente-servidor. O cliente é o nosso dispositivo, podendo ser o celular, notebook, tablet e afins. Nesse cliente-servidor, existe um servidor dedicado (centralizado) que lida com a comunicação e redirecionamento para esses clientes.&lt;/p&gt;

&lt;p&gt;Por exemplo, o youtube ou até mesmo o dev.to tem seus servidores em que eles armazenam os seus conteúdos. Ao digitarmos por "youtube" ou "dev.to", a busca do navegador leva até o IP dos seus servidores e retornam a lista de vídeos, no youtube, e a lista de posts, no dev.to.&lt;/p&gt;

&lt;p&gt;Na arquitetura P2P (peer-to-peer) não existe esse servidor centralizado. O cliente se conecta diretamente ao IP de outro cliente. Ou seja, no P2P os clientes só compartilham a rede, porém uma hora um dispositivo pode servir como cliente e outra hora pode servir como servidor, pois não existe um servidor fixo que gerencia essa comunicação e troca de recursos.&lt;/p&gt;

&lt;p&gt;O P2P é inseguro por não ter uma autenticação, uma criptografia. Um exemplo é o torrent, onde você se conecta e faz download de arquivos pirateados através de outros dispositivos que estão atuando como servidor, mas que na verdade é um outro cliente, já que não existe um servidor centralizado.&lt;/p&gt;

&lt;p&gt;Outro exemplo pode ser chats de bate papo. Pode existir chats que utilizam o cliente-servidor ou o P2P. No contexto do cliente-servidor, um cliente A vai enviar uma mensagem para o cliente B, e antes dessa mensagem chegar no cliente B, ela bate no servidor do chat e após isso a mensagem é redirecionada para o cliente B. Enquanto no P2P, a mensagem seria entregue sem essa etapa do servidor.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>SOLID</title>
      <dc:creator>mylena</dc:creator>
      <pubDate>Thu, 02 Jan 2025 22:11:59 +0000</pubDate>
      <link>https://dev.to/mmsfarias/solid-55aa</link>
      <guid>https://dev.to/mmsfarias/solid-55aa</guid>
      <description>&lt;p&gt;&lt;strong&gt;Disclaimer:&lt;/strong&gt; Post com intuito de gravar meu aprendizado em boas práticas de desenvolvimento. Não é uma verdade absoluta.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Referência:&lt;/strong&gt; Arquitetura Limpa, &lt;em&gt;Robert C. Martin&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;SOLID é um conjunto de princípios que facilitam a codificação/entendimento de um desenvolvedor e a manuntenção do software.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. S: Princípio da Responsabilidade Única&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Refatorar uma função quebrando ela em partes menores não é, necessariamente, o princípio da responsabilidade única. No caso, o SRP diz sobre um módulo ser responsável por apenas um ator.&lt;/p&gt;

&lt;p&gt;&lt;u&gt;Exemplo que não atende o princípio:&lt;br&gt;
&lt;/u&gt;&lt;br&gt;
Uma classe Funcionário que armazena as regras de diferentes departamentos: TI, RH e Financeiro. Cada departamento tem sua lógica na classe, porém eles compartilham um mesmo método. Se eu precisar alterar esse método para atender uma demanda do RH, ele vai acabar impactando as lógicas do TI e Financeiro.&lt;/p&gt;

&lt;p&gt;Ou seja, nesse cenário, a violação se dá por atender a vários atores (TI, RH e Financeiro) e compartilhar o mesmo código que é volátil entre lógicas diferentes.&lt;/p&gt;

&lt;p&gt;&lt;u&gt;Remodelando para atender o princípio: &lt;/u&gt;&lt;/p&gt;

&lt;p&gt;Uma forma básica para atender o SRP seria separar as responsabilidades de cada ator. A classe base continua sendo a de Funcionário e ela é responsável por armazenar regras que sejam genéricas e que atendam a todos igualmente.&lt;/p&gt;

&lt;p&gt;Dessa forma, seria criado classes distintas: TI, RH e Financeiro. Podendo herdar da base Funcionário e implementar suas próprias regras específicas.&lt;/p&gt;

&lt;p&gt;Outros tipos de violações:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Misturar regra de negócio e persistência em uma só classe&lt;/li&gt;
&lt;li&gt;Adicionar diferentes tipos de responsabilidades em um só lugar apenas por ser da mesma entidade. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Vale ressaltar que esse princípio não se refere apenas a classes, podendo dividir serviços/métodos, o importante é atender a um único ator/módulo, dependendo do escopo.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. O: Princípio Aberto/Fechado&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;O OCP diz que uma classe/método deve estar aberta para extensão, mas fechada para modificação. Esse princípio é a base pro padrão Strategy.&lt;/p&gt;

&lt;p&gt;Quando existirem novas funcionalidades, é preferível estender do que alterar o código principal que já funciona pois pode aparecer bugs que não existiam antes.&lt;/p&gt;

&lt;p&gt;Uma boa prática é usar Interfaces e DI ao criar novas funcionalidades e estabelecer a comunicação. &lt;/p&gt;

&lt;p&gt;&lt;u&gt;Exemplo:&lt;/u&gt;&lt;/p&gt;

&lt;p&gt;Uma classe Desconto com subclasses como DescontoPorcentagem e DescontoValorFixo, onde as regras de Desconto pode ser extendida de acordo com cada tipo específico de desconto.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. L: Princípio de Substituição de Liskov&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;O LSP fala que uma classe derivada deve ser substituível por sua classe base. Ou seja, uma classe derivada deve manter a herança sem modificá-la e ser usada como se ela mesma fosse a classe base.&lt;/p&gt;

&lt;p&gt;&lt;u&gt;Exemplo:&lt;/u&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F55l51b8k4z5jitzps7la.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F55l51b8k4z5jitzps7la.png" alt="Código em C# que define duas classes: Retangulo e Quadrado. A classe Retangulo possui propriedades Largura e Altura com métodos getter e setter, além de um método CalcularArea que retorna o produto de largura e altura. A classe Quadrado herda de Retangulo e redefine as propriedades Largura e Altura para garantir que ambos os valores sejam sempre iguais, ajustando largura e altura simultaneamente." width="615" height="392"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;No exemplo acima, o LSP é ferido tendo em vista que a classe Quadrado está modificando o comportamento original da classe Retangulo.&lt;/p&gt;

&lt;p&gt;O correto seria criar uma classe abstrata ou interface para calcular a área e extender nas classes Quadrado e Retangulo, fazendo as respectivas mudanças para os seus contextos.&lt;/p&gt;

&lt;p&gt;Então o OCP também ferido quando há essa violação do LSP.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. I: Princípio da Segregação de Interface&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;O ISP diz para quebrar as classes em interfaces e direcionar para cada ator específico para evitar depender de módulos que tenha mais elementos do que o necessário.&lt;/p&gt;

&lt;p&gt;Ou seja, uma classe não deve ser forçada a usar implementações que não vai precisar utilizar no seu contexto. É preferível ter interfaces específicas do que genéricas.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. D: Princípio da Inversão de Dependência&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;O DIP diz que sistemas mais flexíveis são os que se referem apenas a abstrações, ou seja, os import/include/use devem se referir apenas a interfaces, classes abstratas ou qualquer outra declaração que não seja concreta.&lt;/p&gt;

&lt;p&gt;A partir dessa ideia de usar abstrações, existe o Factory para ajudar no constrole das injenções de dependências.&lt;/p&gt;

</description>
      <category>solidprinciples</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Banco de dados: Modelo conceitual</title>
      <dc:creator>mylena</dc:creator>
      <pubDate>Mon, 03 Jun 2024 14:11:51 +0000</pubDate>
      <link>https://dev.to/mmsfarias/banco-de-dados-modelo-conceitual-loo</link>
      <guid>https://dev.to/mmsfarias/banco-de-dados-modelo-conceitual-loo</guid>
      <description>&lt;p&gt;&lt;strong&gt;Disclaimer:&lt;/strong&gt; Post com intuito de gravar meu aprendizado em banco de dados. Não é uma verdade absoluta.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Referência:&lt;/strong&gt; Sistemas de banco de dados, 7ª edição - &lt;em&gt;Navathe&lt;/em&gt; e &lt;em&gt;Elmasri&lt;/em&gt;&lt;/p&gt;




&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Conceitos iniciais&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Modelo conceitual    &lt;/p&gt;

&lt;p&gt;2.1 Entidades&lt;br&gt;
2.2 Atributos&lt;br&gt;
2.3 Relacionamentos&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Superclasse e subclasse&lt;/p&gt;

&lt;p&gt;3.1 Especialização&lt;br&gt;
3.2 Generalização&lt;br&gt;
3.3 Restrições&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;




&lt;h3&gt;
  
  
  Conceitos iniciais
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Modelo de dados:&lt;/strong&gt; Mostra toda a estrutura (tipos, relacionamentos, restrições) de um banco de dados, abstraindo em recursos essenciais para que diferentes pessoas sejam capazes de entender. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Alguns dos modelos mais conhecidos:&lt;/strong&gt; Modelo conceitual e modelo físico.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Modelo conceitual:&lt;/strong&gt; Modelo de alto nível, tendo o foco usuários finais. Ou seja, não vai haver um aprofundamento em pontos mais técnicos (para programadores, DBAs), mas sim em entidades, atributos, restrições e relacionamentos.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Modelo físico:&lt;/strong&gt; Modelo de baixo nível que descreve mais a fundo sobre como os dados serão armazenados (formato de registro, caminhos de acesso) e o foco são pessoas técnicas.&lt;/p&gt;

&lt;p&gt;Existe o modelo &lt;strong&gt;representativo&lt;/strong&gt; - ou &lt;strong&gt;implementação&lt;/strong&gt; - que é o meio termo entre o conceitual e o físico. Aqui há um aprofundamento sobre os dados, mas ainda sim diferentes tipos de usuários podem ser capazes de compreender.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Esquema (descrição) de banco de dados:&lt;/strong&gt; Diz respeito a esquematização de restrições lógicas, nome de tabelas, campos das tabelas e seus tipos. Um esquema não deve ser alterado com frequência, apenas quando há mudanças de requisitos no projeto - chamado de &lt;strong&gt;evolução do esquema&lt;/strong&gt; -&lt;/p&gt;

&lt;p&gt;Um banco de dados tem &lt;strong&gt;estados&lt;/strong&gt;, eles são:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Estado vazio:&lt;/strong&gt; Esquema sem nenhum registro inserido nele.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Estado inicial:&lt;/strong&gt; Quando uma carga é feita na tabela&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Todo banco em determinado tempo terá seu estado atual, com os registros atuais, porém o estado do banco se altera a cada nova inserção, atualização ou exclusão de registros.&lt;/p&gt;

&lt;p&gt;Com isso, o SGBD tem que &lt;strong&gt;garantir&lt;/strong&gt; o &lt;strong&gt;estado válido&lt;/strong&gt; dos registros, ou seja, garantir que tudo esteja de acordo com a estrutura e restrições do esquema.&lt;/p&gt;

&lt;p&gt;Obs: Os registros são também chamados de instância dos objetos (entidades) ou ocorrências.  &lt;/p&gt;




&lt;h3&gt;
  
  
  Modelo conceitual
&lt;/h3&gt;

&lt;p&gt;O modelo conceitual trabalha com três bases: &lt;strong&gt;entidade, atributos e relacionamentos&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhg0q2us8kfwehnkoaez0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhg0q2us8kfwehnkoaez0.png" alt="Primeiro desenho é o símbolo de um atributo simples, oval com uma linha. O segundo é o símbolo de um atributo multivalorado, oval dupla. O terceiro é o símbolo de uma entidade, um retângulo." width="446" height="76"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Entidades:
&lt;/h4&gt;

&lt;p&gt;É o objeto. Ex: Usuário, Departamento, Empresa e etc&lt;/p&gt;

&lt;h4&gt;
  
  
  Atributos:
&lt;/h4&gt;

&lt;p&gt;São as propriedades (características) que descrevem esse objeto. Ex: Usuário -&amp;gt; Nome, CPF, E-mail.&lt;/p&gt;

&lt;p&gt;Os atributos podem ser de diversos tipos, entre eles:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Composto&lt;/strong&gt; ou &lt;strong&gt;Simples (Atômico):&lt;/strong&gt; Atributos compostos são aqueles que podem ser sub-divididos (quebrados) em partes até serem atributos não divisíveis. Então um atributo simples é um atributo que não é divisível.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fejgyb72g572k1qq87nd7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fejgyb72g572k1qq87nd7.png" alt="Imagem do atributo endereço que é composto e tem atributos simples (cidade e estado) e um outro atributo composto logradouro que se divide em rua, bairro e número" width="729" height="318"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Não é obrigatório destrinchar os atributos compostos. Se um atributo for referenciado como um todo ou não especificado, é possível manter como um atributo simples.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff5guopd6kxo23zsluya1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff5guopd6kxo23zsluya1.png" alt="Imagem do atributo Nome que pode ser composto e se dividir em primeiro nome, nome do meio e sobrenome" width="531" height="210"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;No exemplo acima, o atributo "Nome" pode ser composto, mas também pode ser referenciado como atributo simples e agrupar os outros atributos. Ex: Nome: Josué Henrique Santos.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Valor único&lt;/strong&gt; ou &lt;strong&gt;Multivalorado:&lt;/strong&gt; Um atributo de valor único é aquele atributo que recebe apenas um valor, enquanto o multivalorado pode ter um conjunto de valores, além de poder estabelecer uma restrições do mínimo e do máximo de valores possíveis.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ex: Uma pessoa tem apenas uma idade, por isso o atributo "Idade" é valor único.&lt;/p&gt;

&lt;p&gt;Ex²: Uma pessoa pode ter zero, uma ou mais graduações, por isso o atributo "Formação" é multivalorado. Além disso, poderia colocar que o máximo de valores possíveis é 3.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Derivado&lt;/strong&gt; ou &lt;strong&gt;Armazenado:&lt;/strong&gt; Um atributo derivado é aquele que deriva de um atributo armazenado. Também podendo derivar de outra entidade relacionada.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ex: Eu tenho o atributo "Idade", onde o valor dele é feito através do cálculo do dia atual com o valor do atributo "Data de nascimento". Ou seja, o atributo "Idade" é derivado, pois deriva do atributo "Data de nascimento", este sendo o atributo armazenado. &lt;/p&gt;

&lt;p&gt;As entidades podem ter um ou mais atributos que são &lt;strong&gt;atributos chaves&lt;/strong&gt; que tem o objetivo de identificar, de forma única, cada entidade.&lt;/p&gt;

&lt;p&gt;Um atributo sozinho pode ser um atributo chave, porém dois ou mais atributos podem formar uma chave (as combinaçãos delas devem ser &lt;strong&gt;únicas&lt;/strong&gt;)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzlspt8p2fejqggrw3yeg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzlspt8p2fejqggrw3yeg.png" alt="Uma entidade com um atributo chave chamado " width="397" height="123"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Na imagem acima, o atributo chave "Registro" é formado pela combinação dos atributos simples, "Estado" e "Número". Esse tipo também é chamado de &lt;strong&gt;atributo chave composto.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Uma entidade pode ter nenhuma chave e é chamada de entidade fraca.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Exemplo do que foi descrito até agora:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1968pbqc7hq6ynw7mucj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1968pbqc7hq6ynw7mucj.png" alt="Entidade departamento tem cinco atributos, sendo dois atributos-chave (nome e número), um atributo multivalorado (localizações), um que é derivado (gerente) e outro que é a data de início que esse gerente começou a atuar" width="458" height="197"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Uma entidade departamento tem cinco atributos, sendo dois atributos-chave (nome e número), um atributo multivalorado (localizações), um que é derivado (gerente) e outro que é a data de início que esse gerente começou a atuar
&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Relacionamentos:
&lt;/h4&gt;

&lt;p&gt;Na fase inicial de um modelo ER, os relacionamentos existentes entre as entidades não precisam estar explícitos, pois isso é refinado durante a evolução do modelo.&lt;/p&gt;

&lt;p&gt;Existem alguns tipos de relacionamentos, entre eles o relacionamento &lt;strong&gt;binário&lt;/strong&gt; (que é o mais comum) e o &lt;strong&gt;terciário&lt;/strong&gt;, que corresponde a quantas entidades estão relacionadas. (Há relacionamentos mais complexos)&lt;/p&gt;

&lt;p&gt;Além disso, existe o relacionamento que é feito entre a mesma entidade. Ex: Um funcionário é supervisionado por outro funcionário. Nesse caso o relacionamento que existe é &lt;strong&gt;autorrelacionado/recursivo.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2773euashchxp8c4w588.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2773euashchxp8c4w588.png" alt="Três exemplos de visualizar o autorrelacionamento. O padrão, o de pé de galinha e usando conjuntos" width="800" height="218"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Há uma &lt;strong&gt;restrição estrutural&lt;/strong&gt; que é a &lt;strong&gt;restrição de participação&lt;/strong&gt; onde os relacionamentos entre as entidades podem ter uma &lt;strong&gt;dependência de existência&lt;/strong&gt; ou não.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Participação total:&lt;/strong&gt; Também conhecida como dependência de existência, a participação total é quando a existência de uma entidade depende dela estar ligada com outra. — &lt;strong&gt;Todas as instâncias precisam estar no relacionamento&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ex: Todo funcionário precisa trabalhar para um departamento. Ou seja, é obrigatório que todas as instâncias do 'Funcionário' participem (estejam ligados) a uma instância de 'Departamento'.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkqer4bl33y6k0vm9g5b7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkqer4bl33y6k0vm9g5b7.png" alt="Entidade 'Funcionario' ligado a entidade 'Departamento' com linha dupla, que significa dependência total" width="596" height="90"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A linha dupla representa que no relacionamento entre as entidades há a dependência total/de existência.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Participação parcial:&lt;/strong&gt; Quando nem todas as instâncias de uma entidade precisam estar ligada com outra.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ex: Um funcionário pode gerenciar um departamento ou nenhum,&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F75ua0h9bh4t5u59myr2d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F75ua0h9bh4t5u59myr2d.png" alt="Entidade 'Funcionario' ligado a entidade 'Departamento' com linha simples, que significa dependência parcial" width="590" height="86"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Os relacionamentos com participação parcial mantém a linha simples.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Cardinalidades:&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;1:1 - Um para Um:&lt;/strong&gt; Uma instância da entidade A está, no &lt;strong&gt;máximo&lt;/strong&gt;, associada a uma instância da entidade B (e vice versa)&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Ex: Uma pessoa está associada a apenas um CPF como documento oficial.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Nesse caso, o atributo desse relacionamento pode estar na entidade 'Pessoa' ou na entidade 'Documento', por exemplo. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd5rhwkwja2eanv4vuy0t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd5rhwkwja2eanv4vuy0t.png" alt="Entidade 'Pessoa' e entidade 'Documento' com cardinalidade 1:1 e o atributo PESSOA_ID estando na entidade 'Documento'" width="797" height="166"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;2.&lt;strong&gt;N:1 ou 1:N - Um para Muitos:&lt;/strong&gt; Quando uma instância de uma entidade A pode estar associada a zero, uma ou várias instâncias de uma entidade B, porém uma instância da entidade B só pode estar associada a, no máximo, uma instância da entidade A.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ex: Um departamento pode ter vários funcionários enquanto um funcionário só pode pertencer a um departamento. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Nesse caso, o atributo relacionado fica, &lt;strong&gt;somente&lt;/strong&gt;, na entidade com o lado &lt;strong&gt;N&lt;/strong&gt; do relacionamento.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7fawsn1a0p1azdwtweyc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7fawsn1a0p1azdwtweyc.png" alt="Entidade 'Funcionario' e entidade 'Departamento' com cardinalidade 1:N e o atributo DEPARTAMENTO_ID na entidade 'Funcionario'" width="680" height="184"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;3.&lt;strong&gt;N:M ou N:N - Muitos para muitos:&lt;/strong&gt; Várias instâncias de uma entidade A podem estar relacionadas a várias instâncias de uma entidade B (e vice-versa).&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ex: Um autor pode escrever vários livros e vários livros podem ser de um mesmo autor.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Nesse caso, os atributos de relação são a &lt;strong&gt;combinação das entidades&lt;/strong&gt; e &lt;strong&gt;precisa&lt;/strong&gt; ter uma entidade intermediária.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuq60fqtr6kg7zyfvfv38.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuq60fqtr6kg7zyfvfv38.png" alt="Entidade 'Livro' e entidade 'Autor' com cardinalidade N:N, onde gerou a entidade 'Livro_Autor' que contém o ID_AUTOR e ID_LIVRO" width="617" height="310"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Durante o processo de modelagem de um banco de dados, atributos definidos no refinamento inicial pode se tornar uma entidade independente. Uma forma de avaliar isso é vendo se um atributo está presente em N entidades, dessa forma é possível criar uma entidade independente e evitar a redundância dos dados.&lt;/p&gt;

&lt;p&gt;Da mesma forma que o inverso pode ser feito. Uma entidade estabelecida no refinamento inicial pode se tornar um atributo, se essa entidade estiver relacionada a apenas uma entidade, por exemplo, ela pode se tornar um atributo dessa outra entidade.&lt;/p&gt;




&lt;h3&gt;
  
  
  Superclasse e subclasse
&lt;/h3&gt;

&lt;p&gt;Também conhecido como supertipo e subtipo, esse conceito diz que um conjunto pode ter &lt;strong&gt;subconjuntos&lt;/strong&gt; associados. &lt;/p&gt;

&lt;p&gt;Quando há necessidade, uma entidade é criada para explicitar esse subagrupamento:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F460j6drxe5u0lavmwevh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F460j6drxe5u0lavmwevh.png" alt="Entidade Funcionário com ligação as entidades Secretária, Gerente e Técnico" width="451" height="202"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;No exemplo acima, o funcionário é a superclasse e a secretária, técnico e gerente são as subclasses. &lt;/p&gt;

&lt;p&gt;Uma subclasse não pode existir sem estar relacionada a uma superclasse. Ex: Não é possível existir uma secretária sem ser membro da superclasse 'Funcionário'.&lt;/p&gt;

&lt;p&gt;Ou seja, uma entidade de subclasse pertence a entidade de subclasse e também a de superclasse. Então o subtipo herda os atributos de entidade do supertipo.&lt;/p&gt;

&lt;h4&gt;
  
  
  Especialização
&lt;/h4&gt;

&lt;p&gt;Um conjunto de subtipos pode ser a especialização de um supertipo. Ex: Pode haver uma especizalição por 'tipo_cargo' da entidade base 'Funcionário'.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9gw797jem9peihyhuwye.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9gw797jem9peihyhuwye.png" alt="Supertipo 'Funcionário' com uma linha ligando a um círculo com a letra 'd' no meio e duas linhas, com o símbolo U no meio, desse círculo conectando as entidades de subtipo 'Técnico' e 'Secretária' e ao lado uma ligação de 'Funcionário' com o subtipo 'Gerente', onde nesse caso só utiliza a linha com U" width="636" height="451"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Os subtipos podem ter atributos normalmente, esses atributos são chamados de &lt;strong&gt;atributos específicos (ou locais)&lt;/strong&gt;, além de que subclasses podem participar de &lt;strong&gt;relacionamentos específicos&lt;/strong&gt;.&lt;/p&gt;

&lt;h4&gt;
  
  
  Generalização
&lt;/h4&gt;

&lt;p&gt;A generalização é o processo contrário da especialização. Quando entidades tem vários atributos comuns, é possível generalizar esses atributos em uma entidade (que se torna uma superclasse).&lt;/p&gt;

&lt;p&gt;Ex: As entidades 'Carro' e 'Caminhão' pode fazer surgir a entidade 'Veiculo', que é uma entidade generalizada e a superclasse dessas outras entidades.&lt;/p&gt;

&lt;p&gt;Ou seja, no final pode-se olhar o processo como generalização/especialização, pois no final do processo ela se complementa. O que diferencia é a motivação/objetivo inicial da modelagem.&lt;/p&gt;

&lt;h4&gt;
  
  
  Restrições
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Subclasse definida por predicado:&lt;/strong&gt; As subclasses são determinadas através de um atributo na superclasse. Ex: A entidade 'Funcionário' tem um atributo chamado 'tipo_emprego' que determina se o funcionário é do tipo 'Técnico', 'Secretária' etc.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Definida pelo usuário:&lt;/strong&gt; Quando não se tem uma condição explícita para se definir. A separação depende dos usuários do banco de dados no processo da operação de inserção de uma entidade.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Restrição de disjunção (desconexão):&lt;/strong&gt; As subclasses devem ser &lt;strong&gt;disjuntas&lt;/strong&gt;, ou seja, devem pertencer a, &lt;strong&gt;no máximo&lt;/strong&gt;, uma subclasse. &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Se as subclasses não forem disjuntas, pode se ter a sobreposição, onde é possível ser membro de mais de uma classe.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fphqujek2pjbbb4hzpooe.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fphqujek2pjbbb4hzpooe.png" alt="Entidade superclasse 'Peça' que tem uma linha dupla ligado a um círculo com um 'o' de overlapping dentro e duas linhas distintas partindo desse círculo e ligando as entidades 'P_Fabricada' e 'P_Comprada'" width="586" height="521"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Quando há a letra o dentro círculo, significa o overlapping.&lt;/p&gt;

&lt;p&gt;A linha dupla vem do conceito a seguir:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Restrição de completude:&lt;/strong&gt; A restrição de completude pode ser parcial ou total.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Quando &lt;strong&gt;total&lt;/strong&gt;, significa que &lt;strong&gt;toda&lt;/strong&gt; entidade da superclasse precisa ser membro de pelo menos uma subclasse da especialização. Por isso a linha dupla.&lt;/p&gt;

&lt;p&gt;A restrição &lt;strong&gt;parcial&lt;/strong&gt; significa que uma entidade &lt;strong&gt;pode&lt;/strong&gt; não pertencer a nenhuma subclasse.&lt;/p&gt;

&lt;p&gt;! Quando houver uma operação de exclusão de entidade da superclasse, isso implica que a entidade na subclasse também seja deletada. &lt;/p&gt;

</description>
      <category>database</category>
      <category>beginners</category>
      <category>sql</category>
      <category>data</category>
    </item>
    <item>
      <title>Threads e Processos</title>
      <dc:creator>mylena</dc:creator>
      <pubDate>Wed, 20 Dec 2023 15:21:17 +0000</pubDate>
      <link>https://dev.to/mmsfarias/threads-e-processos-29pc</link>
      <guid>https://dev.to/mmsfarias/threads-e-processos-29pc</guid>
      <description>&lt;p&gt;Um &lt;strong&gt;processo&lt;/strong&gt; é a representação de um programa, que fica isolada em uma memória da CPU. Um processo pode fazer a comunicação com outro processo, ter a etapa de I/O.&lt;/p&gt;

&lt;p&gt;Uma &lt;strong&gt;thread&lt;/strong&gt; é um "mini processo" que concorre de forma independente na cpu, porém que usa a mesma memória que o processo principal.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffbxn1sojimcqqm0je6k4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffbxn1sojimcqqm0je6k4.png" alt="Representação de um processo e thread. Uma thread faz parte de um processo" width="800" height="378"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Ou seja, um processo pode ter 1 ou N threads que dividirão trabalhos para realizar tarefas simultaneamente, porém threads estão sucetíveis a race condition.&lt;/p&gt;

&lt;p&gt;Também há concorrência entre processos, por isso que existe o Scheduler, onde um processo utiliza a CPU e quando esperar o I/O, um outro processo pode vir e utilizar a CPU.&lt;/p&gt;

&lt;p&gt;Mas o Scheduler nem sempre espera o processo finalizar a tarefa, e pode acabar interrompendo o processo após um tempo que ele mesmo especula e adiciona esse processo a uma lista de espera junto com outros processos.&lt;/p&gt;

&lt;p&gt;Pode existir um processo ou multi processos, uma thread ou multi threads, por isso é importante analisar o contexto de cada situação e a situação dos cores de uma CPU.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffr0gbhs28zvccri7llst.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffr0gbhs28zvccri7llst.png" alt="Exemplificação de um processo e multi processos" width="793" height="257"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foon974l8md1b9ykdbhc3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foon974l8md1b9ykdbhc3.png" alt="Exemplificação de um thread e multi threading" width="800" height="256"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Protocolos base da internet: HTTP</title>
      <dc:creator>mylena</dc:creator>
      <pubDate>Wed, 20 Dec 2023 14:57:21 +0000</pubDate>
      <link>https://dev.to/mmsfarias/protocolos-base-da-internet-http-4o2c</link>
      <guid>https://dev.to/mmsfarias/protocolos-base-da-internet-http-4o2c</guid>
      <description>&lt;h2&gt;
  
  
  HyperText Transfer Protocol
&lt;/h2&gt;

&lt;p&gt;O HTTP é um protocolo de transferência de hipertexto que fica na camada de aplicação, e é a base da internet quando se refere a carregamento de recursos de hipertexto, iamagens, vídeos, o que compõe uma página web.&lt;/p&gt;

&lt;p&gt;Uma forma de se comunicar usando esse protocolo é a base do request-response, onde:&lt;/p&gt;

&lt;p&gt;O navegador &lt;strong&gt;sempre&lt;/strong&gt; inicia a comunicação (enviando uma requisição)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmrfnvdd2yul8n7nedfq7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmrfnvdd2yul8n7nedfq7.png" alt="Exemplo de padrão request. Método, path, protocol/header/body" width="577" height="305"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Ao enviar uma requisição para o back-end, o client tem que garantir que está enviando o método, o path, header e body correto. Lembrando que um GET não deveria ter conteúdo no body.&lt;/p&gt;

&lt;p&gt;Obs: Um IP pode ter diversos websites, então, por trás do DNS, todos os websites estão apontado para o mesmo IP, mas no header tem o campo "host" e é através dele que a aplicação entende de onde/para onde é.&lt;/p&gt;

&lt;p&gt;Ao longo do tempo houveram evoluções do HTTP. A primeira versão é a 1.0, após isso vieram a 1.1 (a mais conhecida), 2.0 e 3.0.&lt;/p&gt;

&lt;p&gt;O HTTP 3.0 é um HTTP que não opera pelo TCP, mas sim através do UDP, tendo como premissa uma maior rapidez em comparação as outras versões e sendo uma forma de evitar o bloqueio que acontece com o TCP ao fazer o multiplexing e acaba tendo alguma perda de pacote na transmissão (pelo fato do TCP ler em sequência, e se um pacote for perdido, precisar fazer a retransmissão).&lt;/p&gt;

&lt;p&gt;Além do HTTP 3.0, o HTTP 2.0 também tem o suporte de fazer o multiplexing (no caso do HTTP 2.0, é feito com o TCP), é mais rápido e traz uma maior segurança por padrão ao invés da versão 1.1.&lt;/p&gt;

&lt;p&gt;Além disso, o HTTP é um protocolo que não tem estado então não existe um armazenamento das informações que foram trocadas "por conta própria", o armazenamento deve ser feito usando outras estratégias, como, por exemplo, cookies.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxz03v3btlv9d2l8wkrvi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxz03v3btlv9d2l8wkrvi.png" alt="Exemplo de padrão response. Protocolo, status code, code text, headers/body" width="579" height="307"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Na versão 1.1, ao receber o response, existe a transcrição do status code. Ex: 200 OK, 404 NOT FOUND&lt;/p&gt;

&lt;p&gt;Tanto o request quanto o response têm headers onde é possível colocar um cabeçalho genérico, que não tem relação aos dados em si transmitidos, quanto cabeçalhos específicos para request/response.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Protocolos base da internet: TCP</title>
      <dc:creator>mylena</dc:creator>
      <pubDate>Wed, 29 Nov 2023 21:00:25 +0000</pubDate>
      <link>https://dev.to/mmsfarias/protocolos-base-da-internet-tcp-2cd9</link>
      <guid>https://dev.to/mmsfarias/protocolos-base-da-internet-tcp-2cd9</guid>
      <description>&lt;p&gt;&lt;strong&gt;TCP - &lt;em&gt;Transmission Control Protocol&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;O TCP é um dos principais protocolos de transporte que existe na internet, e também é visto popularmente com o IP, formando o TCP/IP. Ou seja, o TCP é responsável por gerenciar o processo de comunicação entre duas partes (client-server).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F626p6aar6v0ahuqushrh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F626p6aar6v0ahuqushrh.png" alt="Uma requisição dividida em segmentos 1, 2 e 3" width="537" height="279"&gt;&lt;/a&gt;&lt;br&gt;
Ao fazermos uma requisição, ela é dividida em fragmentos menores onde contém dados importantes como o próprio conteúdo em si, o IP de origem, o IP de destino. E no cabeçalho do protocolo de transporte, está contido o número de sequência.&lt;/p&gt;

&lt;p&gt;Antes de receber esses pacotes e fazer a troca de informações, o server TCP precisa estabelecer a conexão com o outro dispositivo. Esse processo é chamado de &lt;em&gt;three handshake.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffc9cn921bvlgv3dunybu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffc9cn921bvlgv3dunybu.png" alt="Processo de three handshake: Syn, Syn-Ack, Ack" width="756" height="431"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;SYN:&lt;/strong&gt; Faz a solicitação para estabelecer uma conexão - Essa solicitação pede para o servidor sincronizar com o número da sequência.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;SYN ACK:&lt;/strong&gt; Aceita a conexão e sincroniza com o dispositivo - O servidor confirma a sincronização e solicita que o cliente sincronize o seu número de sequência.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ACK:&lt;/strong&gt; Confirma que recebeu a resposta e que houve a sincronização.&lt;/p&gt;

&lt;p&gt;Exemplo:&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8aqiq5pmt5ad4dzhspmv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8aqiq5pmt5ad4dzhspmv.png" alt="Fluxo de SYN/ACK entre cliente e servidor" width="620" height="685"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;O cliente envia um SYN para o servidor e seu número de sequência é 483. &lt;br&gt;
Do outro lado, o servidor tem o número 222 como sequência, e ao receber a solicitação, o confirma (ACK) com +1.      &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;O cliente ao receber o SYN-ACK do servidor, recebe a sequência do servidor (222) e o novo número de sequência (484).      &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;O cliente envia um ACK para o servidor com o ACK = 223, e o servidor passa a ter o número 223 como sequência.    &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ao receber os segmentos, o servidor TCP dá a garantia de receber/organizar em ordem, porém se um segmento se perdeu, o TCP não prossegue com os outros segmentos. Ele faz a retransmissão.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy8h9hge980gmcq3ugoky.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy8h9hge980gmcq3ugoky.png" alt="Fragmento 1 perdido" width="294" height="333"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Vamos supor que deu tudo certo no recebimento e organização do TCP: Após a conexão estabelecida, a gente tem que a sequência do cliente é 484 e a do servidor é 223.&lt;/p&gt;

&lt;p&gt;Se o cliente tiver, por exemplo, um payload de 30 bytes, ao enviar para o servidor, o servidor irá acrescentar +30 ao 484. Então o ACK será de 514.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi8e7dtfphur7ksusxqfw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi8e7dtfphur7ksusxqfw.png" alt="Fluxo de envio do cliente com payload para o servidor" width="585" height="280"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Exemplo de abertura de conexão em C# 11 + .NET 7&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flpou5d3dt0ubk29qwlan.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flpou5d3dt0ubk29qwlan.png" alt="Criação do servidor e aceite do cliente" width="728" height="487"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq3gfp52n7guctv65965p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq3gfp52n7guctv65965p.png" alt="Criação do cliente e conexão no servidor" width="722" height="413"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;👍&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>backend</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Redes: pt. 3 - IP</title>
      <dc:creator>mylena</dc:creator>
      <pubDate>Wed, 29 Nov 2023 01:19:15 +0000</pubDate>
      <link>https://dev.to/mmsfarias/protocolos-base-da-internet-ip-3goh</link>
      <guid>https://dev.to/mmsfarias/protocolos-base-da-internet-ip-3goh</guid>
      <description>&lt;p&gt;&lt;em&gt;Registros do meu aprendizado sobre Redes, seguindo a trilha da &lt;a href="https://www.netacad.com/courses/networking-basics?courseLang=pt-BR" rel="noopener noreferrer"&gt;Cisco&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;




&lt;ul&gt;
&lt;li&gt;IP - Internet Protocol&lt;/li&gt;
&lt;li&gt;IPv4 x IPv6&lt;/li&gt;
&lt;li&gt;
Estrutura IP

&lt;ul&gt;
&lt;li&gt;Roteamento&lt;/li&gt;
&lt;li&gt;Classes de endereços IPv4&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

Transmissões de pacotes

&lt;ul&gt;
&lt;li&gt;Loopback&lt;/li&gt;
&lt;li&gt;Link-local&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

DHCP e atribuição dos IPs

&lt;ul&gt;
&lt;li&gt;DHCP para IPv6&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;IP - Internet Protocol&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;O Protocolo de Internet (IP) é o protocolo base da internet, sendo responsável pelo endereçamento e o roteamento de dados.&lt;/p&gt;

&lt;p&gt;No caso, o IP é um endereço exclusivo que identifica um dispositivo. Seu computador, seu notebook e seu celular possuem endereços únicosa. Uma prova de que o IP é uma identificação única é o fato do IPv6 (com comprimento de 128 bits) ter sido introduzido e expandido por conta da escassez de novas combinações únicas de endereços do tipo IPv4 (Possibilidade de ter aproximadamente 4,3 bilhões de combinações únicas).   &lt;/p&gt;

&lt;p&gt;A exibição da numeração do IPv4 é em valores decimais, a fim de simplificar. Porém o processo é: O IPv4 têm o comprimento de 32 bits. O binário é transformado em um agrupamento de 4 bytes de 8 bits cada em que são convertidos para a exibição final.&lt;/p&gt;

&lt;p&gt;É possível conferir o seu IP através do comando &lt;strong&gt;ipconfig&lt;/strong&gt; no cmd:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;C:\Users\mylena&amp;gt;ipconfig

Configuração de IP do Windows


Adaptador Ethernet Ethernet:

   Sufixo DNS específico de conexão. . . . . . :
   Endereço IPv6 de link local . . . . . . . . : fe80::88c1:----:----:855b%11
   Endereço IPv4. . . . . . . .  . . . . . . . : 192.---.0.105
   Máscara de Sub-rede . . . . . . . . . . . . : 255.255.255.0
   Gateway Padrão. . . . . . . . . . . . . . . : 192.168.0.1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  IPv4 x IPv6
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;O &lt;em&gt;NAT&lt;/em&gt; e endereços privados ajudam a retardar o esgotamento de espaço de endereços IPv4. Com o surgimento do IPv6, a &lt;em&gt;IETF&lt;/em&gt; criou algumas formas pra ajudar a migração dos IPs pro IPv6 e elas são divididas em três categorias:&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Pilha dupla:&lt;/strong&gt; O IPv4 e IPv6 coexistem e executam simultaneamente em um dispositivo.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Tunelamento:&lt;/strong&gt; O IPv6 é encapsulado por uma rede de IPv4 quando ocorre o transporte de pacotes.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Conversão:&lt;/strong&gt; O IPv6 é traduzido para um pacote IPv4 e o contrário também ocorre. Esse processo é feito através do &lt;strong&gt;NAT64.&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Estrutura IP&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;O endereço de um IP é dividido entre: número de rede e número do host. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Número de rede:&lt;/strong&gt; Representa todos os dispositivos que estão conectados em uma mesma LAN.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Número do host:&lt;/strong&gt; Representa um dispositivo específico. A numeração do host é única.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ex:&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;IP&lt;/th&gt;
&lt;th&gt;Parte da rede&lt;/th&gt;
&lt;th&gt;Host&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;111.111.1.46&lt;/td&gt;
&lt;td&gt;111.111.1&lt;/td&gt;
&lt;td&gt;46&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;111.111.1.58&lt;/td&gt;
&lt;td&gt;111.111.1&lt;/td&gt;
&lt;td&gt;58&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;111.111.4.53&lt;/td&gt;
&lt;td&gt;111.111.4&lt;/td&gt;
&lt;td&gt;53&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Os dispositivos com IPs &lt;strong&gt;111.111.1.46&lt;/strong&gt; e &lt;strong&gt;111.111.1.58&lt;/strong&gt; têm o mesmo grupo de rede, porém com hosts únicos, então eles conseguem estabelecer uma comunicação entre si por estarem na mesma LAN.&lt;/p&gt;

&lt;p&gt;Já o IP &lt;strong&gt;111.111.4.53&lt;/strong&gt; não faz parte da mesma LAN que os outros dois IPs, então ele não vai conseguir estabelecer uma comunicação com os outros.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Como dispositivos de redes diferentes se comunicam? -&amp;gt;&lt;/strong&gt; Através do roteamento.&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;Roteamento&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;Quando se está em uma rede privada (LAN), o roteamento é feito através do gateway padrão dos roteadores. Se não, o roteamento é feito através dos IPs pelo provedor (ISP).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Exemplo:&lt;/strong&gt; &lt;em&gt;Uma empresa tem duas redes diferentes e existem dois dispositivos que querem estabelecer uma comunicação.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Rede 1: 192.168.1.0/24 (Gateway: 192.168.1.1)&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Rede 2: 192.168.2.0/24 (Gateway: 192.168.2.1)&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Se o IP 192.168.1.100 quiser enviar um pacote para o 192.168.2.100, ele vê que o destino não está na sua rede. Então, ele encaminha o pacote para o seu gateway padrão (192.168.1.1). &lt;/p&gt;

&lt;p&gt;Quando esse processo ocorre de forma interna, significa que o tráfego não passou pela ISP, por isso que é utilizado o gateway padrão como rotamento. Pois os dispositivos não conhecem as rotas globais.&lt;/p&gt;

&lt;p&gt;Caso não exista em nenhuma rede interna, o roteador encaminha para o ISP e assim é feita a conexão com a internet. Nesse caso existe uma diferenciação quando o IP de origem é privado ou público.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;IP privado:&lt;/strong&gt; Nesse caso, o NAT descarta o privado e traduz para um IP público para que o ISP o utilize e trafegue pela internet.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Vale lembrar que IPs privados não são exclusivos. Eles existem e podem ser usados internamente em qualquer rede, porém não são globalmente roteáveis.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;IP público:&lt;/strong&gt; Não há interferência do NAT nesse caso em específico, o ISP vai utilizar o IP de origem normalmente.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;Classes de endereços IPv4&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;O RFC 790 atribui os endereços IPv4 em classes&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Classe A (0.0.0.0/8 to 127.0.0.0/8)&lt;/strong&gt; – Projetado para suportar redes extremamente grandes com mais de 16 milhões de endereços de host. A Classe A usou um prefixo fixo /8 com o primeiro octeto para indicar o endereço de rede e os três octetos restantes para endereços de host (mais de 16 milhões de endereços de host por rede).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Classe B (128.0.0.0 / 16 - 191.255.0.0 / 16)&lt;/strong&gt; - Projetada para oferecer suporte às necessidades de redes de tamanho moderado a grande com até aproximadamente 65.000 endereços de host. A Classe B usou um prefixo fixo /16 com os dois octetos de alta ordem para indicar o endereço de rede e os dois octetos restantes para endereços de host (mais de 65.000 endereços de host por rede).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Classe C (192.0.0.0 / 24 - 223.255.255.0 / 24)&lt;/strong&gt; - Projetado para oferecer suporte a pequenas redes com no máximo 254 hosts. A Classe C usou um prefixo fixo / 24 com os três primeiros octetos para indicar a rede e o octeto restante para os endereços de host (apenas 254 endereços de host por rede).&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Observação:&lt;/strong&gt; Há também um bloco multicast &lt;strong&gt;Classe D&lt;/strong&gt; consistindo de 224.0.0.0 a 239.0.0.0 e um bloco de endereço experimental *&lt;em&gt;Classe E *&lt;/em&gt; consistindo de 240.0.0.0 - 255.0.0.0.&lt;/p&gt;

&lt;p&gt;Os endereços de IPv4 e IPv6 são gerenciados pela IANA e são alocados blocos de endereços IPs aos registros regionais de internet, onde existem 5. &lt;strong&gt;Os registros regionais (RIRs) são responsáveis por alocar endereços IP aos ISPs.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;AfriNIC(Centro de Informação de Redes Africanas)&lt;/em&gt; - Região da África&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;APNIC(Centro de informações de redes da Ásia-Pacífico)&lt;/em&gt; - Região Ásia/Pacífico&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;ARIN(Registro Americano de Números da Internet)&lt;/em&gt; - Região da América do Norte&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;LACNIC(Registro regional de endereços IP da América Latina e do Caribe)&lt;/em&gt; - América Latina e algumas ilhas do Caribe&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;RIPE NCC(Centro de coordenação da rede Réseaux IP Européens)&lt;/em&gt; - Europa, Oriente Médio e Ásia Central&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Transmissões de pacotes&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;1. Transmissão unicast:&lt;/strong&gt; Comunicação um-para-um. Onde só existe um destinatário.&lt;/p&gt;

&lt;p&gt;O IP de origem &lt;strong&gt;sempre&lt;/strong&gt; vai ser &lt;strong&gt;unicast&lt;/strong&gt;, afinal um pacote se origina a partir de uma única origem.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Transmissão broadcast:&lt;/strong&gt; Comunicação um-para-todos. O destino são todos os dispositivos que estão na mesma LAN. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Essa transmissão pode causar lentidão dependendo da quantidade de dispositivos conectados, por isso é ideal que se usada, seja de forma limitada.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No broadcast existe o &lt;strong&gt;limitado&lt;/strong&gt; e o &lt;strong&gt;dedicado.&lt;/strong&gt; No &lt;strong&gt;dedicado&lt;/strong&gt; o compartilhamento do pacote é enviado para todos os dispositivos, mas apenas os dispositivos da mesma sub-rede recebe esse pacote.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Transmissão multicast:&lt;/strong&gt; Comunicação para um grupo específico da rede. &lt;/p&gt;

&lt;p&gt;O compartilhamento é feito da mesma forma que o broadcast, onde o pacote é enviado para todos os dispositivos da mesma LAN, porém apenas recebe de fato quem fizer parte de um grupo. &lt;/p&gt;

&lt;p&gt;Nesse caso, o que diferencia o multicast do broadcast dedicado, é que no multicast os dispositivos precisam se inscrever no grupo. O &lt;em&gt;&lt;strong&gt;IGMP&lt;/strong&gt; (Internet Group Management Protocol)&lt;/em&gt; permite que um dispositivo diga ao roteador que quer participar de um grupo multicast.&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;Loopback&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;Os endereços de loopback (127.0.0.0 / 8 ou 127.0.0.1 a 127.255.255.254) são comumente identificados apenas como 127.0.0.1. É um tipo de endereço especial em que o host direciona o tráfego para ele mesmo.&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;Link-local&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;O IP link-local só funciona localmente, sem ser roteável e sem estabelecer comunicação com a internet. A criação desse IP acontece quando um dispositivo não adquire um IP pelo DHCP.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;É mais comum em redes privadas e temporárias.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  DHCP e atribuição dos IPs
&lt;/h3&gt;

&lt;p&gt;O DHCP é um protocolo que gerencia a configuração e associação de IPs aos dispositivos. Ou seja, lida com informações de endereçamento, máscara de sub rede, gateway padrão e outras configurações.&lt;/p&gt;

&lt;p&gt;Isso significa que os IPs &lt;strong&gt;não&lt;/strong&gt; são fixos, é como se fossem "alugados" e conforme um host é desligado ou retirado da rede, o endereço volta ao pool e pode ser reutilizado.&lt;/p&gt;

&lt;p&gt;Com essa prática do DHCP, dizemos que o endereço foi atribuído de forma &lt;strong&gt;dinâmica.&lt;/strong&gt; Na forma &lt;strong&gt;estática,&lt;/strong&gt; é necessário que o administrador de rede configure tudo manualmente, o que aumenta as chances de erros.&lt;/p&gt;

&lt;p&gt;Em redes LAN, o roteador age como servidor e cliente DHCP. Ele recebe a configuração DHCP do ISP e repassa os endereços aos hosts internos da rede.&lt;/p&gt;

&lt;h4&gt;
  
  
  DHCP para IPv6
&lt;/h4&gt;

&lt;p&gt;O DHCP também serve para o IPv6, porém com o IPv6 existe outra forma além da manual e do DHCPv6, que é a &lt;strong&gt;SLAAC.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;SLAAC:&lt;/strong&gt; O dispositivo gera seu próprio endereço IPv6 automaticamente com base nas informações da mensagem &lt;strong&gt;&lt;em&gt;Router Advertisement (RA)&lt;/em&gt;&lt;/strong&gt; que é enviada pelo roteador. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Com o SLAAC, não é necessária a utilização do DHCP. Mas é possível trabalhar junto do DHCP, onde o endereço vem pelo SLAAC e o DNS via o DHCPv6.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>backend</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
