Add study notes: 22 areas documented by Diego IA
This commit is contained in:
@@ -0,0 +1,77 @@
|
||||
# Infra & Redes — Estudo
|
||||
|
||||
_Fonte: project-based-learning_
|
||||
|
||||
---
|
||||
|
||||
## 📚 Recursos Estudados
|
||||
|
||||
| Tutorial | Conceito |
|
||||
|----------|----------|
|
||||
| [TCP/IP Stack](http://www.saminiir.com/lets-code-tcp-ip-stack-1-ethernet-arp/) | Ethernet, ARP, IPv4, ICMP, TCP |
|
||||
| [Servidores Concorrentes](https://eli.thegreenplace.net/2017/concurrent-servers-part-1-introduction/) | Threads, Event-driven, libuv, Redis |
|
||||
| [MQTT Broker](https://codepr.github.io/posts/sol-mqtt-broker) | Protocolo MQTT, pub/sub |
|
||||
| [Linux Containers](https://blog.lizzie.io/linux-containers-in-500-loc.html) | Namespaces, cgroups, chroot |
|
||||
| [Key-Value Store](http://codecapsule.com/2012/11/07/ikvs-implementing-a-key-value-store-table-of-contents/) | Storage engine, indexing |
|
||||
| [Redis em C/C++](https://build-your-own.org/redis/) | Protocolo Redis, persistência |
|
||||
|
||||
## 🎯 Aplicações para Mundo Telecom
|
||||
|
||||
1. **Container customizado** para deploy isolado (entender o que o Docker faz)
|
||||
2. **Broker MQTT** para IoT/monitoramento de equipamentos
|
||||
3. **KV Store** para cache distribuído (substituto Redis em cenários simples)
|
||||
4. **Proxy reverso** customizado (entender como NPM funciona por baixo)
|
||||
|
||||
## 📝 Conceitos Aprendidos
|
||||
|
||||
### Pilha TCP/IP
|
||||
|
||||
| Camada | Protocolo | Função |
|
||||
|--------|-----------|--------|
|
||||
| 2 - Enlace | Ethernet, ARP | MAC addresses, frame delivery |
|
||||
| 3 - Rede | IPv4, ICMP | Roteamento, ping, TTL |
|
||||
| 4 - Transporte | TCP | Conexão, confiabilidade, controle de fluxo |
|
||||
| 4 - Transporte | UDP | Datagrama, sem conexão, baixa latência |
|
||||
| 7 - Aplicação | HTTP, MQTT, Redis | Protocolos de aplicação |
|
||||
|
||||
### TCP em Detalhe
|
||||
|
||||
- **Handshake**: SYN → SYN-ACK → ACK
|
||||
- **State Machine**: LISTEN, SYN_SENT, ESTABLISHED, CLOSE_WAIT, TIME_WAIT...
|
||||
- **Controle de Congestionamento**: Slow Start, Congestion Avoidance, Fast Retransmit
|
||||
- **Janela Deslizante**: Controle de fluxo (não enviar mais do que o receiver pode processar)
|
||||
|
||||
### Servidores Concorrentes
|
||||
|
||||
| Modelo | Prós | Contras |
|
||||
|--------|------|---------|
|
||||
| Threads (1 thread/cliente) | Simples, blocking I/O | Escalabilidade limitada, overhead |
|
||||
| Event-driven (select/poll/epoll) | Alta performance, single-thread | Complexidade, non-blocking I/O |
|
||||
| Híbrido (Redis, Nginx) | Balanceado | Complexidade média |
|
||||
|
||||
### Linux Containers
|
||||
|
||||
- **Namespaces**: isola recursos (PID, NET, MNT, UTS, IPC, USER)
|
||||
- **Cgroups**: limita recursos (CPU, memória, I/O)
|
||||
- **chroot**: isola sistema de arquivos
|
||||
- **Unshare + Clone**: syscalls para criar namespaces
|
||||
|
||||
### Nosso Setup vs Teoria
|
||||
|
||||
| Componente | O que usamos | Como funciona por baixo |
|
||||
|-----------|-------------|------------------------|
|
||||
| Containers | LXC no Proxmox | Namespaces + cgroups |
|
||||
| Proxy Reverso | NPM (nginx) | Event-driven, epoll |
|
||||
| DNS | Pi-hole (10.0.20.5) | DNS server interno |
|
||||
| Banco | SQLite, PostgreSQL | Páginas, índices B-tree |
|
||||
| Cache | (futuro Redis) | KV store in-memory |
|
||||
|
||||
## ✅ Progresso
|
||||
|
||||
- [x] Pilha TCP/IP (Ethernet, ARP, IP, TCP)
|
||||
- [x] Servidores Concorrentes (threads, event-driven)
|
||||
- [x] MQTT Broker
|
||||
- [x] Linux Containers (namespaces, cgroups)
|
||||
- [x] Key-Value Store / Redis
|
||||
- [ ] Projeto prático: servidor TCP simples em C/Python
|
||||
- [ ] Projeto prático: container customizado
|
||||
Reference in New Issue
Block a user