1. How to use this document
You will not read this end-to-end. Use it like a dictionary with a learning path on top.
- Day 1 of your co-op: skim sections 2–4 (Prerequisites, Suggested Path, the Practical 20 list at the end of section 5). That alone puts you ahead of most interns.
- When you hit an unfamiliar term in code or a meeting:
Cmd-Fthe term in section 5. Each entry is self-contained. - When you want depth on a topic: follow the 📚 links at the bottom of the section. Those are the canonical, freely available resources — not random blog posts.
- When you're about to wire a part on your bench: jump to the sister Hardware Quick Reference (link in the navbar) and look up the exact part — it cross-links back to the concepts here.
2. Prerequisites
You don't need an EE degree, but the following mental model is assumed throughout this document. If you don't have it, the Practical 20 in section 4 will catch you up over a week.
Math (intuition, not proofs):
- Algebra: solve for an unknown. Why: every circuit calculation is solving V = IR for one of the three.
- Trig: sine, cosine, frequency, phase. Why: AC analysis, audio, filters, control loops.
- Logarithms. Why: decibels, RC time constants, RC filter cutoff math.
Programming (one of these is enough):
- Python — the default for MicroPython on the Pico and ESP32-S3. You should be comfortable with classes, decorators, async, and type hints.
- C / C++ — for ESP-IDF, Arduino, or any low-level work. Pointers, structs,
volatile,static, bit manipulation. - Shell —
cd,ls,grep,|,>,python -m venv,esptool.py.
Tools to install (do this on day 1):
# Thonny (the friendliest MicroPython IDE — recommended for first month)
sudo apt install thonny # or download from thonny.org
# mpremote — the official MicroPython command-line tool
pip install mpremote
# esptool — for flashing ESP32 / ESP32-S3 boards over USB
pip install esptool
# Arduino IDE 2.x — for Arduino C/C++ projects
# Download from arduino.cc
3. Suggested learning path (5 steps)
Do these in order. Each step is one evening on the bench (or on the laptop). By the end you will have a home or small-farm network that you actually understand.
Step 1 — Map your current network
Find your router’s IP (usually 192.168.1.1 or 192.168.0.1). From a laptop, run ip route to see the default gateway, ip a to see your own IP, and ping 8.8.8.8 to confirm you reach the internet. List every device on your network (router admin page, or an app like Fing). Goal: you can name every IP and what it does.
Step 2 — Configure DNS and DHCP
Set up Pi-hole or AdGuard Home on a Raspberry Pi. Point your router’s DHCP to hand out the Pi-hole as the network DNS. Verify that ads are blocked network-wide (visit a known ad-heavy site, check the Pi-hole dashboard). Goal: you have a single local service that every device on the network uses, and you can read its logs.
Step 3 — Segment the network (VLANs)
On a managed switch and a router that supports VLANs (UniFi, MikroTik, pfSense, OPNsense), create three VLANs: VLAN 10 = trusted devices (laptops, phones), VLAN 20 = IoT (smart bulbs, cameras, voice assistants), VLAN 30 = guest. Set up firewall rules so VLAN 20 and 30 can reach the internet but not each other or VLAN 10. Goal: a compromised smart bulb can’t reach your laptop.
Step 4 — Add a sensor network
Pick one wireless technology from section 5 that fits your use case: MQTT over Wi-Fi for a few indoor sensors, Zigbee or Thread for a home-automation mesh, LoRaWAN for a farm sensor a few hundred metres from the house. Buy a starter kit (a coordinator + 2–3 sensor modules), set up Home Assistant on a Pi or NAS, and make the data visible on a dashboard. Goal: a real network with real data flowing.
Step 5 — Add a remote-access story
Set up Tailscale (or ZeroTier) on the Pi, your laptop, and your phone. Verify you can reach the Pi-hole admin and the Home Assistant dashboard from a coffee shop over your phone’s cellular. If you want to do it without Tailscale: get a VPS, run WireGuard on it, and connect back to your home network through that. Goal: you can troubleshoot your network from anywhere with internet, without exposing any service to the public internet.
Optional but recommended: set up a local MQTT broker (Mosquitto) so devices can talk to each other without the cloud; explore IPv6 (ask your ISP for a prefix, enable SLAAC on your router) to future-proof against CGNAT.
4. The Practical 20 — read these first
If you only read 20 entries in this glossary, read these. They cover ~90% of what you'll see in your first month on a microcontroller project.
Each entry: a one-line definition, then a practical note in italics that says what it means on the bench. Entries marked 🔥 are the practical-20.
A
2 termsARP (Address Resolution Protocol)
#arp -a on Linux/macOS shows the table. ARP cache poisoning is a classic attack vector — switches with ARP inspection (most managed switches) defend against it. See also: MAC Address, IP Address (IPv4), Subnet / Subnetting.B
6 termsBandwidth (Network)
#Band Steering
#Bandwidth-Delay Product
#Bridge (Network)
#Broker (MQTT)
#Bluetooth (BLE / Classic)
#C
3 termsCIDR (Classless Inter-Domain Routing)
#192.168.1.0/24 means the first 24 bits are the network, the last 8 are host addresses. Practical: Three ranges to memorize for home/LAN: /24 = 254 usable hosts (most home networks), /16 = 65 534 hosts (large campus), /30 = 2 hosts (point-to-point link). IPv6 uses the same notation: fd00::/8 is the Unique Local Address range (like 192.168.0.0/16 in IPv4). See also: Subnet / Subnetting, IP Address (IPv4), IP Address (IPv6).CPE (Customer Premises Equipment)
#CGNAT (Carrier-Grade NAT)
#D
5 termsDHCP (Dynamic Host Configuration Protocol)
#ipconfig /all (Windows) or ip a (Linux) — if there's no IP under DHCP, the server is unreachable. See also: IP Address (IPv4), Router, MAC Address.DNS (Domain Name System)
#unmolai.com to 104.21.x.x. Hierarchical: root servers → TLD (.com) → authoritative servers for the domain. Practical: Three things to know for home: (1) recursive resolver — your ISP's, or 1.1.1.1 (Cloudflare), 8.8.8.8 (Google), 9.9.9.9 (Quad9). (2) Pi-hole / AdGuard Home — a local resolver that blocks ads network-wide. (3) local DNS — your router's DHCP hands out its own IP as DNS so the local resolver is used. Debug: nslookup unmolai.com or dig unmolai.com. See also: DDNS (Dynamic DNS), Pihole / AdGuard Home, Router.DDNS (Dynamic DNS)
#myhouse.duckdns.org pointing at whatever IP your router has today. Practical: For a farm or home with remote-access needs (security camera, Home Assistant, VPN back to your network), DDNS is the simplest way to find your network from the road. Free providers: DuckDNS, No-IP, afraid.org. Most home routers have a DDNS client built in. See also: DNS (Domain Name System), CGNAT (Carrier-Grade NAT), Port Forwarding.Default Gateway
#DMZ (Demilitarized Zone)
#E
2 termsESPHome
#Ethernet
#F
3 termsFirewall
#Failover
#Failover (Network)
#G
1 termGateway (Network)
#H
2 termsHTTP / HTTPS
#Home Assistant (HASS)
#I
3 termsIP Address (IPv4)
#IP Address (IPv6)
#2001:0db8:85a3:0000:0000:8a2e:0370:7334. Address space: ~3.4 × 10³⁸. Practical: Your ISP probably gives you a /64 prefix; your router assigns the rest via SLAAC or DHCPv6. Special addresses: ::1 is loopback, fe80::/10 is link-local (like 169.254.x.x in IPv4), fd00::/8 is ULA (private, like 10.0.0.0/8). Why care: every IoT device should support IPv6 — the world is running out of IPv4 and CGNAT makes things messy. See also: IP Address (IPv4), CGNAT (Carrier-Grade NAT), SLAAC (Stateless Address Autoconfiguration).ISP (Internet Service Provider)
#J
1 termJitter
#L
2 termsLatency
#Load Balancer
#M
7 termsMAC Address
#AA:BB:CC:DD:EE:FF. The first 3 bytes identify the manufacturer (OUI). Practical: MAC addresses live at Layer 2; IP addresses at Layer 3. A switch forwards by MAC; a router forwards by IP. Privacy: modern OSes randomize Wi-Fi MAC addresses per network (called MAC randomization) to defeat tracking. See also: ARP (Address Resolution Protocol), Ethernet.MTU (Maximum Transmission Unit)
#ping -M do -s 1472 example.com — if 1472 works but 1473 doesn't, your MTU is 1500. For WireGuard / VPN: tunnel MTU is usually 1420 to avoid fragmentation. See also: Ethernet, PPPoE (Point-to-Point Protocol over Ethernet), VPN (Virtual Private Network).Mesh Network
#MQTT (Message Queuing Telemetry Transport)
#home/garage/temperature. QoS levels: 0 (fire and forget), 1 (at least once), 2 (exactly once). Default port: 1883 (plain) or 8883 (TLS). See also: Broker (MQTT), Home Assistant (HASS), Modbus.Modbus
#request: 0x01 0x04 0x00 0x00 0x00 0x02 [CRC] (function code 04 = read input register, address 0, count 2). The simplymodbus.ca reference is canonical. See also: RS-485 / RS-422, Modbus TCP (port 502), Controller Area Network (CAN).mDNS / Bonjour
#myprinter.local to an IP without a real DNS server. Apple's Bonjour, Google Chrome's discovery, every IoT device that advertises itself. Practical: The reason ping raspberrypi.local works on your LAN. Watch for: mDNS is multicast and doesn't cross VLANs by default — to use mDNS across VLANs, your router needs an mDNS reflector (most do, but disabled by default for security). See also: DNS (Domain Name System), VLAN (Virtual LAN).MTU (Maximum Transmission Unit)
#ping -M do -s 1472 destination — if 1472 works and 1473 doesn't, your MTU is 1500. See also: WireGuard, MTU (Maximum Transmission Unit).N
4 termsNTP (Network Time Protocol)
#ntpq -p (Linux) shows the time sources. See also: DNS (Domain Name System), Router.NAT (Network Address Translation)
#NMEA 2000 / NMEA 0183
#Node-RED
#O
1 termOSI Model (7 Layers)
#P
6 termsPacket
#Port Number
#192.168.1.50:443 = the HTTPS server on 192.168.1.50. Practical: Memorize the common ones: 22 = SSH, 53 = DNS, 80 = HTTP, 443 = HTTPS, 1883 = MQTT, 8883 = MQTT over TLS, 502 = Modbus TCP, 5353 = mDNS, 8080 = alt-HTTP. Watch for: ports below 1024 are “privileged” on Linux — only root can bind them. See also: Port Forwarding, Firewall.Port Forwarding
#PoE (Power over Ethernet)
#Pihole / AdGuard Home
#curl -sSL https://install.pi-hole.net | bash. Configure your router's DHCP to hand out the Pi-hole's IP as DNS. Watch for: some sites break if you block the wrong domain — whitelist liberally. See also: DNS (Domain Name System), DHCP (Dynamic Host Configuration Protocol).PPPoE (Point-to-Point Protocol over Ethernet)
#Q
1 termQoS (Quality of Service)
#R
1 termRouter
#S
5 termsSwitch (Network)
#SSID (Service Set Identifier)
#Subnet / Subnetting
#192.168.1.0/24 is a subnet containing addresses 192.168.1.0 to 192.168.1.255. The /24 means the first 24 bits are the network, last 8 are hosts (254 usable). Practical: For a home network, one /24 is fine. For a farm: one /24 per building (192.168.1.0/24 = house, 192.168.2.0/24 = barn, etc.) with a router between. See also: CIDR (Classless Inter-Domain Routing), VLAN (Virtual LAN).SLAAC (Stateless Address Autoconfiguration)
#Stateful Inspection
#T
7 termsTCP/IP Model (4 Layers)
#telnet example.com 443 (Transport layer)? Does curl https://example.com work (Application layer)? See also: OSI Model (7 Layers), TCP (Transmission Control Protocol), UDP (User Datagram Protocol).TCP (Transmission Control Protocol)
#Throughput
#iperf3 -c server for LAN throughput. See also: Bandwidth (Network), Latency.Thread / Matter
#Tailscale / ZeroTier
#TLS / SSL
#Three-Way Handshake
#U
1 termUDP (User Datagram Protocol)
#V
2 termsVLAN (Virtual LAN)
#VPN (Virtual Private Network)
#W
3 termsWAN (Wide Area Network)
#Wi-Fi (802.11)
#WPA2 / WPA3
#Z
2 termsZigbee
#Z-Wave
#No matches
Try a different term, or press Esc to clear the search.
6. Quick reference tables
6.1 Port cheat sheet (memorize these)
| Port | Protocol | Notes |
|---|---|---|
| 22 | SSH | remote shell, encrypted |
| 53 | DNS | both UDP and TCP |
| 67/68 | DHCP | server / client (UDP) |
| 80 | HTTP | unencrypted — use 443 instead when possible |
| 123 | NTP | time sync (UDP) |
| 443 | HTTPS | HTTP over TLS |
| 502 | Modbus TCP | industrial control |
| 5353 | mDNS / Bonjour / Avahi | zero-config LAN discovery (UDP) |
| 5683 | CoAP | constrained IoT (UDP) |
| 5684 | CoAPs (DTLS) | encrypted CoAP |
| 1883 | MQTT | the default IoT pub/sub |
| 8883 | MQTT over TLS | MQTTS |
| 8884 | MQTT over QUIC | MQTT 5 over QUIC |
| 1900 | SSDP / UPnP | device discovery multicast (UDP) |
| 51820 | WireGuard | default VPN port (UDP) |
| 554 | RTSP | IP camera streaming |
6.2 Troubleshooting checklist (walk up the stack)
When something doesn’t work, walk the TCP/IP stack from the bottom. Most bugs are at L1, L2, or L3.
- Layer 1 (cable / radio): link light on the switch/AP? Replace the cable. Move closer to the AP. Check the SSID.
- Layer 2 (MAC / ARP): can you
arp -athe gateway? Can the switch see the MAC? - Layer 3 (IP / routing): can you
pingthe gateway? Can youping 8.8.8.8(public IP)? - Layer 4 (port): can you
telnet example.com 443ornc -zv example.com 443? If not, a firewall is blocking. - Layer 7 (app): can you
curl https://example.com? Does the service respond? Is the cert valid? - DNS: if
ping 8.8.8.8works butping example.comdoesn’t, it’s DNS. Trynslookup example.com 1.1.1.1to bypass your resolver.
6.3 Common home / farm subnet layouts
| Use case | Range | Notes |
|---|---|---|
| Home LAN (single subnet) | 192.168.1.0/24 | default for most home routers |
| Home + guest + IoT (3 VLANs) | 192.168.1.0/24, 192.168.2.0/24, 192.168.3.0/24 | router on a managed switch |
| Small farm (one building) | 192.168.10.0/24 | router + AP + sensors |
| Multi-building farm | 192.168.10.0/24 (house), 192.168.11.0/24 (barn), 192.168.12.0/24 (field), etc. | router in each building, WireGuard or fiber between |
| Site-to-site VPN | use non-overlapping ranges | e.g. house 10.0.1.0/24, barn 10.0.2.0/24 |
| IoT / lab sandbox | 10.10.10.0/24 | isolated from main LAN |
6.4 IPv4 vs IPv6 at a glance
| Concept | IPv4 | IPv6 |
|---|---|---|
| Address size | 32 bits | 128 bits |
| Address space | ~4.3 × 10⁹ | ~3.4 × 10³⁸ |
| Notation | 192.168.1.1 | 2001:db8::1 |
| Header size | 20–60 bytes | 40 bytes (fixed) |
| Private ranges | 10/8, 172.16/12, 192.168/16 | fc00::/7 (ULA) |
| Loopback | 127.0.0.1 | ::1 |
| Link-local | 169.254/16 | fe80::/10 |
| Configuration | DHCP or static | SLAAC, DHCPv6, or static |
| NAT | almost always needed (CGNAT) | not needed (end-to-end) |
| Multicast | 224.0.0.0/4 | ff00::/8 |
6.5 Which protocol for which job?
| Range | Bandwidth | Power | Best protocol |
|---|---|---|---|
| < 10 m (one room) | any | low | BLE, Zigbee, Thread, Wi-Fi |
| 10–100 m (one building) | low | low | Zigbee, Thread, Z-Wave, Wi-Fi |
| 100 m – 2 km (one farm) | low | low | LoRaWAN, NB-IoT, LTE-M |
| 2–20 km (rural) | low | low | LoRaWAN + outdoor gateway, cellular, satellite (Iridium) |
| Wired (any distance < 100 m) | high | low | Ethernet (Cat5e/6) |
| Backhaul (site to site) | high | any | Fiber, Point-to-Point radio (Ubiquiti airMAX, Mimosa) |
6.6 Default debugging tools (on a Linux/macOS box)
# Layer 1
ip link # list interfaces and link state
iw dev wlan0 link # Wi-Fi link state
ethtool eth0 # Ethernet link state, speed, duplex
# Layer 2
arp -a # ARP table
ip neigh # same on modern Linux
bridge link # bridge ports and their state
# Layer 3
ip a # interfaces + IPs
ip route # routing table
ping -c 4 8.8.8.8 # public IP reachability
traceroute unmolai.com # path to a host
# Layer 4
nc -zv example.com 443 # is a port open?
ss -tlnp # listening TCP sockets
ss -ulnp # listening UDP sockets
# Layer 7
dig unmolai.com @1.1.1.1 # DNS resolution
curl -v https://unmolai.com # full HTTP trace
mosquitto_sub -h broker.local -t 'home/#' -v # MQTT subscribe
# Wi-Fi
iw dev wlan0 scan # list nearby APs
iw dev wlan0 link # current association
# Bluetooth
bluetoothctl scan on # discover nearby BLE devices
bluetoothctl devices
7. Further reading
Start here (free, high quality):
- 🔥 Home Assistant docs — home-assistant.io
- 🔥 The Things Network LoRaWAN docs — thethingsnetwork.org
- 🔥 ChirpStack LoRaWAN server docs — chirpstack.io
- 🔥 Mosquitto MQTT broker docs — mosquitto.org
- 📚 Computer Networking: A Top-Down Approach (Kurose & Ross) — the canonical textbook
- 📚 Beej’s Guide to Network Programming — beej.us
Specifications (canonical, free):
- Wi-Fi — IEEE 802.11 — standards.ieee.org
- Bluetooth — Bluetooth SIG — bluetooth.com
- LoRaWAN — LoRa Alliance — lora-alliance.org
- Zigbee — Connectivity Standards Alliance — csa-iot.org
- Thread — Thread Group — threadgroup.org
- Matter — Connectivity Standards Alliance — csa-iot.org
- MQTT — OASIS — docs.oasis-open.org
- Modbus — Modbus Organization — modbus.org
- CAN — CAN in Automation (CiA) — can-cia.org
Stay current:
- Home Assistant newsletter — home-assistant.io/blog
- r/homeassistant, r/LoRa, r/IOT — Reddit
- Hackaday “home” tag — hackaday.com
- RTL-SDR blog (LoRa / ISM band reverse engineering) — rtl-sdr.com
Last updated: July 2026. Maintained as a living document — if a term on your co-op isn't here, add it.