Skip to content

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

| Dst MAC (6) | Src MAC (6) | [VLAN tag (4)] | EtherType (2) | Payload (46-1500) | FCS (4) |
  • MTU mặc định 1500 byte payload; jumbo frame thường 9000.
  • EtherType: 0x0800 IPv4, 0x86DD IPv6, 0x0806 ARP, 0x8100 VLAN, 0x88F7 PTP.
  • 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ặc arp_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, IPv6 fe80::/10): dùng khi không có DHCP.