Enlace de Dados
Video da aula estara disponivel em breve
A camada de enlace
A camada de enlace e responsavel pela transferencia de dados entre nos adjacentes (diretamente conectados). Enquanto a camada de rede (IP) lida com roteamento entre redes diferentes, a camada de enlace lida com a comunicacao dentro de um unico segmento de rede.
Ethernet e quadros (frames)
Quadro Ethernet:
+-----------+----------+------+---------+---------+-----+
| Preambulo | SFD | Dest | Source | Type | ... |
| 7 bytes | 1 byte | MAC | MAC | 2 bytes | |
| | |6 bytes|6 bytes | | |
+-----------+----------+------+---------+---------+-----+
|
+---------------------------------------------------+---+----+
| Payload (46-1500 bytes) | FCS|
| (pacote IP encapsulado) |4 B |
+--------------------------------------------------------+----+
MAC address: 48 bits, notacao hexadecimal
Exemplo: AA:BB:CC:DD:EE:FF
Primeiros 3 octetos: OUI (fabricante)
Ultimos 3 octetos: ID unico do dispositivo
FCS (Frame Check Sequence): CRC-32 para deteccao de erros
MAC addresses
MAC (Media Access Control) addresses sao enderecos fisicos de 48 bits, atribuidos pelo fabricante e (em teoria) unicos globalmente. Diferente de enderecos IP (logicos, mutaveis), MACs sao fisicos e geralmente fixos.
import uuid
import subprocess
# Obter MAC address do host
mac = ':'.join([f'{(uuid.getnode() >> i) & 0xff:02x}'
for i in range(0, 48, 8)][::-1])
print(f"MAC address: {mac}")
# Ver tabela ARP (mapeamento IP -> MAC)
result = subprocess.run(["arp", "-a"], capture_output=True, text=True)
print(result.stdout)
Switches vs. Hubs
Hub (camada 1 - fisica):
Recebe quadro em uma porta -> replica para TODAS as outras portas
Nao olha MAC addresses. Colisoes frequentes. Obsoleto.
A --[frame]--> [HUB] --[frame]--> B
|---[frame]--> C (C recebe mesmo sem ser destino)
|---[frame]--> D (D tambem recebe)
Switch (camada 2 - enlace):
Mantém tabela MAC (MAC -> porta). Encaminha apenas para a porta correta.
Sem colisoes. Performance muito melhor.
A --[frame]--> [SWITCH] --[frame]--> B (apenas B recebe)
|
Tabela MAC:
AA:BB:CC:11 -> porta 1 (A)
AA:BB:CC:22 -> porta 2 (B)
AA:BB:CC:33 -> porta 3 (C)
ARP: Address Resolution Protocol
ARP resolve enderecos IP em enderecos MAC. Quando um host quer enviar um pacote para outro host na mesma rede, ele precisa saber o MAC address do destino.
Host A quer enviar para 192.168.1.5, mas so sabe o IP. Precisa do MAC.
1. A envia ARP Request (broadcast):
"Quem tem o IP 192.168.1.5? Me diga seu MAC."
Destino: FF:FF:FF:FF:FF:FF (broadcast - todos recebem)
2. Host B (192.168.1.5) responde com ARP Reply:
"Eu sou 192.168.1.5. Meu MAC e AA:BB:CC:DD:EE:55"
3. A guarda na ARP cache: 192.168.1.5 -> AA:BB:CC:DD:EE:55
4. A encapsula o pacote IP em um frame Ethernet com:
MAC destino: AA:BB:CC:DD:EE:55
MAC origem: (MAC do A)
Tipo: 0x0800 (IPv4)
Payload: pacote IP
VLANs
VLANs (Virtual LANs) permitem segmentar uma rede fisica em multiplas redes logicas isoladas. Hosts em VLANs diferentes nao podem se comunicar diretamente — precisam de um roteador.
Sem VLAN: Com VLANs:
Todos no mesmo dominio VLAN 10 (Eng): A, B
de broadcast VLAN 20 (RH): C, D
A, B, C, D <-> broadcast A <-> B (VLAN 10)
(todos veem tudo) C <-> D (VLAN 20)
A -/-> C (bloqueado, VLANs diferentes)
802.1Q: adiciona tag de 4 bytes ao frame Ethernet
indicando a qual VLAN o frame pertence
No harness.os
Entender a camada de enlace ajuda a debugar problemas de cloud networking:
Trace completo: MCP server -> Neon Postgres
Camada 7 (Aplicacao): MCP tool call (JSON-RPC)
Camada 7 (Aplicacao): PostgreSQL wire protocol (query SQL)
Camada 4 (Transporte): TCP segmento (porta 5432)
Camada 3 (Rede): IP pacote (IP do Fly.io -> IP do Neon)
Camada 2 (Enlace): Ethernet frame (MAC do gateway Fly.io)
Camada 1 (Fisica): Sinais eletricos/opticos no datacenter
Quando "a conexao com o banco falha", o problema pode estar
em QUALQUER uma dessas camadas:
- DNS nao resolve (camada 7)
- Firewall bloqueia porta 5432 (camada 3/4)
- Rede do datacenter com falha (camada 2/1)
- TLS certificate expired (entre camada 4 e 7)
Entender todas as camadas = debugar qualquer problema de rede.
Resumo
- Camada de enlace: comunicacao entre nos adjacentes
- Ethernet: protocolo dominante, quadros com MAC src/dst + payload + FCS
- MAC addresses: 48 bits, fisicos, atribuidos pelo fabricante
- Switch vs. Hub: switches usam tabela MAC para encaminhamento seletivo
- ARP: resolve IP -> MAC na mesma rede
- VLANs: segmentacao logica de redes fisicas
Exercicio pratico
Trace um pacote do MCP server (Fly.io) ao Neon Postgres por todas as camadas de rede.
- Comece na aplicacao: qual e a mensagem MCP? Qual query SQL?
- Desça: TCP (porta?), IP (IPs?), Ethernet (MACs?), fisico (fibra/eletrico?)
- Use
traceroutepara ver os saltos entre seu computador e Neon - Use
arp -apara ver o cache ARP local
Verifique seu entendimento
Qual protocolo e usado para descobrir o MAC address de um host conhecendo apenas seu IP?