# Protocolos de Rede

```mermaid
graph TD
    A[Protocolos de Rede] --> B[Modelo TCP/IP]
    A --> C[Modelo OSI]
    B --> D[HTTP, FTP, DNS]
    B --> E[TCP, UDP]
    B --> F[IP, ICMP]
    B --> G[Ethernet, WiFi]
```

### **🔝 Top 10 Protocolos Mais Utilizados**

| Camada     | Protocolo  | Porta  | Uso                       | Exemplo Prático            |
| ---------- | ---------- | ------ | ------------------------- | -------------------------- |
| Aplicação  | HTTP/HTTPS | 80/443 | Navegação web             | `curl https://google.com`  |
|            | DNS        | 53     | Resolução de nomes        | `nslookup example.com`     |
|            | SMTP       | 25     | Envio de e-mails          | Enviar email via Outlook   |
|            | FTP        | 21     | Transferência de arquivos | `ftp ftp.example.com`      |
|            | SSH        | 22     | Acesso remoto seguro      | `ssh user@server`          |
| Transporte | TCP        | -      | Conexões confiáveis       | Navegador ←→ Servidor Web  |
|            | UDP        | -      | Comunicação rápida        | Vídeo ao vivo (Zoom)       |
| Rede       | IP         | -      | Roteamento básico         | Pacotes entre redes        |
|            | ICMP       | -      | Diagnóstico de rede       | `ping 8.8.8.8`             |
| Enlace     | Ethernet   | -      | Rede local (cabos)        | Conexão via cabo RJ45      |
|            | 802.11     | -      | WiFi                      | Conexão sem fio no celular |

***

### **⚙️ Como Funciona um Protocolo?**

#### **Estrutura Básica**

```plaintext
┌───────────────────────────────────┐
│ Cabeçalho (Header)                │ ← Metadados (ex: IP de origem/destino)
├───────────────────────────────────┤
│ Payload (Dados)                   │ ← Conteúdo real (ex: HTML de um site)
└───────────────────────────────────┘
```

**Exemplo TCP/IP:**

```mermaid
graph LR
    A[Dados Aplicação] --> B[+Header TCP]
    B --> C[+Header IP]
    C --> D[+Header Ethernet]
```

#### **Princípios Fundamentais**

1. **Formato de Mensagem**: Estrutura fixa de cabeçalho + payload
2. **Ordem de Operações**: Handshakes (ex: TCP 3-way)
3. **Tratamento de Erros**: Checksums, ACKs/NACKs

***

### **📡 Dataflow em uma Rede Hipotética**

**Cenário:** Usuário acessa `http://example.com` via WiFi

```mermaid
sequenceDiagram
    participant Usuário
    participant Roteador
    participant DNS
    participant Servidor

    Usuário->>DNS: Query DNS "example.com?"
    DNS-->>Usuário: Resposta: 93.184.216.34
    Usuário->>Servidor: SYN (TCP Port 80)
    Servidor-->>Usuário: SYN-ACK
    Usuário->>Servidor: ACK + HTTP GET /
    Servidor-->>Usuário: HTTP 200 OK + HTML
```

***

#### **Passo a Passo Físico:**

1. **Aplicação**: Browser monta requisição HTTP
2. **Transporte**: TCP divide em segmentos (SYN, ACK)
3. **Rede**: IP roteia até 93.184.216.34
4. **Enlace**: WiFi (802.11) converte para sinais de rádio
5. **Física**: Bits transmitidos como ondas eletromagnéticas

***

### **💡 Importância dos Protocolos**

#### **1. Padronização Global**

* Permite que dispositivos de diferentes fabricantes se comuniquem
* Ex: Um iPhone (Apple) consegue acessar um site em servidor Apache (Linux)

#### **2. Divisão de Responsabilidades**

```mermaid
pie
    title Camadas do TCP/IP
    "Aplicação (HTTP/FTP)" : 30
    "Transporte (TCP/UDP)" : 25
    "Rede (IP/ICMP)" : 25
    "Enlace/Física" : 20
```

#### **3. Controle de Erros e Eficiência**

* TCP garante entrega confiável com:
  * **ACKs**: Confirmação de recebimento
  * **Retransmissão**: Se perdido após timeout
  * **Controle de Fluxo**: Janela deslizante

#### **4. Segurança**

* HTTPS = HTTP + TLS (criptografia)
* SSH substitui Telnet (dados criptografados)

***

### **🔧 Troubleshooting com Protocolos**

**Problema Comum**: Site não carrega

1. **Teste Físico**: `ping 8.8.8.8` (ICMP)
2. **Teste DNS**: `nslookup example.com`
3. **Teste Porta**: `telnet example.com 80`
4. **Inspeção Profunda**:

   ```bash
   tcpdump -i wlan0 'host example.com' -w capture.pcap
   wireshark capture.pcap
   ```

***

### **📊 Comparação TCP vs UDP**

| Característica | TCP                         | UDP                           |
| -------------- | --------------------------- | ----------------------------- |
| **Conexão**    | Orientado a conexão (3-way) | Sem conexão                   |
| **Confiança**  | Entrega garantida           | Best-effort                   |
| **Ordem**      | Preserva ordem dos pacotes  | Não garante ordem             |
| **Velocidade** | Mais lento (overhead)       | Mais rápido                   |
| **Uso Típico** | Web, e-mail, SSH            | VoIP, streaming, jogos online |

***

### **🎯 Exemplo Prático: Envio de E-mail (SMTP)**

```python
import smtplib

# Estabelece conexão TCP na porta 25 (SMTP)
with smtplib.SMTP("smtp.example.com", 25) as server:
    server.ehlo()
    server.sendmail(
        "from@example.com", 
        "to@example.com", 
        "Subject: Olá\n\nCorpo do email"
    )
```

**Dataflow SMTP:**

1. Cliente inicia TCP para porta 25
2. Servidor responde `220 smtp.example.com ready`
3. Cliente envia comandos (`HELO`, `MAIL FROM`, `RCPT TO`)
4. Dados transmitidos após `DATA`
5. Conexão encerrada com `QUIT`

***

### **⚠️ Riscos sem Protocolos Padronizados**

* **Incompatibilidade**: Dispositivos não se comunicariam
* **Falta de Segurança**: Dados trafegariam em claro
* **Ineficiência**: Retrabalho para cada nova tecnologia
* **Exemplo Real**: Antigos sistemas industriais (SCADA) com protocolos proprietários são alvos fáceis para hackers

***

### **📚 Referência Rápida**

**Comandos para Analisar Protocolos:**

```bash
netstat -tuln          # Portas abertas (Linux)
Get-NetTCPConnection   # Equivalente PowerShell
tshark -i eth0 -Y http # Filtra tráfego HTTP
```

**Regra de Ouro:**\
\&#xNAN;*"Protocolos definem as regras do jogo da comunicação digital - sem eles, seria o caos!"* 🌐


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://0xmorte.gitbook.io/bibliadopentestbr/conceitos/redes/protocolos-de-rede.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
