Extra Guia De Redes • Trilha Progressiva em 4 Níveis


🎯 Nível 1: Fundamentos

Problema 04.1 — Compreensão e Análise de Hospedagem, Deploy e Certificados SSL/TLS

Contexto: Compreensão e Análise de Hospedagem, Deploy e Certificados SSL/TLS aplicado ao domínio de Hospedagem, Deploy e Certificados SSL/TLS.

Requisitos de Execução:

  1. Criar script que calcule máscaras de sub-rede IPv4 (CIDR) e determine o endereço de rede, broadcast e total de hosts válidos.
  2. Validar cálculos para redes /24, /28 e /30.

Resultado Esperado

IP: 192.168.1.50/24 -> Rede: 192.168.1.0 | Broadcast: 192.168.1.255 | Hosts: 254

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_04_1_SeuNome
  2. Envie na tarefa: Atividade Cap 04 - Hospedagem, Deploy e Certificados SSL/TLS
🔑 Gabarito de Código & Solução Comentada
# calculador_cidr.py
import ipaddress

def analisar_rede(ip_cidr):
    rede = ipaddress.ip_network(ip_cidr, strict=False)
    return {
        "Endereco_Rede": str(rede.network_address),
        "Mascara": str(rede.netmask),
        "Broadcast": str(rede.broadcast_address),
        "Hosts_Validos": rede.num_addresses - 2
    }

print(analisar_rede("192.168.1.50/24"))
print(analisar_rede("10.0.0.1/28"))

🔍 Nível 2: Prática

Problema 04.2 — Configuração de Proxy Reverso Nginx com Load Balancing

Contexto: Configuração de Proxy Reverso Nginx com Load Balancing aplicado ao domínio de Hospedagem, Deploy e Certificados SSL/TLS.

Requisitos de Execução:

  1. Escrever arquivo de configuração nginx.conf com upstream para 2 instâncias backend (Round-Robin).
  2. Configurar headers X-Forwarded-For, X-Real-IP e terminação TLS.

Resultado Esperado

Configuração Nginx de Proxy Reverso e Load Balancing gerada com sucesso.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_04_2_SeuNome
  2. Envie na tarefa: Atividade Cap 04 - Hospedagem, Deploy e Certificados SSL/TLS
🔑 Gabarito de Código & Solução Comentada
# nginx.conf
events { worker_connections 1024; }

http {
    upstream backend_cluster {
        server backend1.internal:8080 weight=3;
        server backend2.internal:8080 weight=1;
    }

    server {
        listen 80;
        server_name api.empresa.com;
        return 301 https://$host$request_uri;
    }

    server {
        listen 443 ssl http2;
        server_name api.empresa.com;

        ssl_certificate /etc/ssl/certs/bundle.crt;
        ssl_certificate_key /etc/ssl/private/app.key;

        location / {
            proxy_pass http://backend_cluster;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto https;
        }
    }
}

⚡ Nível 3: Integração

Problema 04.3 — Simulador de Cliente HTTP com Tratamento de Status Codes e Retries

Contexto: Simulador de Cliente HTTP com Tratamento de Status Codes e Retries aplicado ao domínio de Hospedagem, Deploy e Certificados SSL/TLS.

Requisitos de Execução:

  1. Implementar cliente HTTP em Python com requisições idempotentes e política de Exponential Backoff para erros 502/503/504.
  2. Validar tratamento de timeouts e cabeçalhos de segurança.

Resultado Esperado

Tentativa 1: 503 Service Unavailable (Aguardando 1s...)
Tentativa 2: 200 OK (Sucesso após retry)

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_04_3_SeuNome
  2. Envie na tarefa: Atividade Cap 04 - Hospedagem, Deploy e Certificados SSL/TLS
🔑 Gabarito de Código & Solução Comentada
# cliente_http_resiliente.py
import time

def requisicao_com_retry(url, max_tentativas=3):
    tentativa = 1
    delay = 1.0
    
    while tentativa <= max_tentativas:
        print(f"Tentativa {tentativa} de conexão para {url}...")
        # Simula resposta
        if tentativa < 2:
            status = 503
        else:
            status = 200
            
        if status == 200:
            print("✅ Conexão estabelecida com sucesso (200 OK)!")
            return True
        else:
            print(f"⚠️ Erro HTTP {status}. Aguardando {delay}s...")
            time.sleep(delay)
            delay *= 2
            tentativa += 1
            
    print("❌ Falha crítica: serviço indisponível após múltiplas tentativas.")
    return False

requisicao_com_retry("https://api.empresa.com/v1/health")

🏆 Nível 4: Desafio Corporativo

Problema 04.4 — Desafio Corporativo: Ferramenta de Diagnóstico de Rede e Latência (Ping, DNS, Socket Test)

Contexto: Desafio Corporativo: Ferramenta de Diagnóstico de Rede e Latência (Ping, DNS, Socket Test) aplicado ao domínio de Hospedagem, Deploy e Certificados SSL/TLS.

Requisitos de Execução:

  1. Desenvolver script completo de monitoramento que teste resolução DNS, abertura de porta TCP e latência média.
  2. Gerar relatório de conectividade em JSON para Prometheus/Grafana.

Resultado Esperado

=== DIAGNÓSTICO DE CONECTIVIDADE CORPORATIVA ===
DNS Resolve: 8.8.8.8 -> OK (12ms)
Porta TCP 443 (HTTPS): ABERTA
Score de Conectividade: 100%

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_04_4_SeuNome
  2. Envie na tarefa: Atividade Cap 04 - Hospedagem, Deploy e Certificados SSL/TLS
🔑 Gabarito de Código & Solução Comentada
# monitor_conectividade.py
import socket
import time
import json

def testar_host(host, porta=443, timeout=2.0):
    inicio = time.time()
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.settimeout(timeout)
    
    try:
        ip = socket.gethostbyname(host)
        s.connect((ip, porta))
        latencia = round((time.time() - inicio) * 1000, 2)
        s.close()
        return {"host": host, "ip": ip, "porta": porta, "aberta": True, "latencia_ms": latencia, "status": "UP"}
    except Exception as e:
        return {"host": host, "porta": porta, "aberta": False, "erro": str(e), "status": "DOWN"}

hosts = ["google.com", "github.com", "cloudflare.com"]
relatorio = [testar_host(h) for h in hosts]
print(json.dumps(relatorio, indent=2))