Fundamentals¶
Ghi chú ngắn về các khái niệm mạng cần nắm khi làm việc với thiết bị nhúng.
Mô hình TCP/IP¶
| Tầng | Ví dụ | Trên Linux nhúng |
|---|---|---|
| Application | HTTP, MQTT, SSH, DHCP | Ứng dụng user space |
| Transport | TCP, UDP | Kernel (socket API) |
| Internet | IPv4, IPv6, ICMP | Kernel (routing, netfilter) |
| Link | Ethernet, Wi-Fi, CAN | Driver + MAC/PHY |
Mô hình OSI 7 tầng chủ yếu dùng làm từ vựng ("L2 switch", "L3 routing"); thực tế Linux triển khai theo 4 tầng ở trên.
Ethernet frame¶
- MTU mặc định 1500 byte payload; jumbo frame thường 9000.
EtherType:0x0800IPv4,0x86DDIPv6,0x0806ARP,0x8100VLAN,0x88F7PTP.- FCS do MAC phần cứng tính và kiểm tra, thường không lộ ra cho phần mềm.
ARP và routing¶
- ARP ánh xạ IPv4 sang MAC trong cùng subnet. Xem bảng:
ip neigh. - Quyết định đường đi dựa trên bảng route: gói tin khớp prefix dài nhất sẽ được dùng, không khớp thì đi qua default gateway. Xem bảng:
ip route. - Hai interface cùng subnet trên một thiết bị là nguồn lỗi hay gặp (ARP flux, trả lời sai interface); dùng routing policy (
ip rule) hoặcarp_ignore.
TCP và UDP¶
| TCP | UDP | |
|---|---|---|
| Kết nối | Có (3-way handshake) | Không |
| Tin cậy, đúng thứ tự | Có | Không |
| Phù hợp | Cấu hình, truyền file, REST | Telemetry, thời gian thực, PTP, DNS |
Socket API¶
int fd = socket(AF_INET, SOCK_STREAM, 0);
connect(fd, (struct sockaddr *)&addr, sizeof(addr));
send(fd, buf, len, 0);
recv(fd, buf, sizeof(buf), 0);
Với nhiều kết nối, dùng epoll thay vì một thread cho mỗi socket. Các mô hình I/O xem thêm Multi-threads.
Cấu hình địa chỉ¶
- DHCP: lấy IP động. Client phổ biến trên nhúng:
udhcpc(BusyBox),dhcpcd,systemd-networkd. - IP tĩnh: thường dùng cho thiết bị công nghiệp và management port.
- Link-local (
169.254.0.0/16, IPv6fe80::/10): dùng khi không có DHCP.