廢棄 inet_addr()/inet_ntoa(),統一使用雙棧函數:
inet_pton()struct sockaddr_in sa4;
struct sockaddr_in6 sa6;
inet_pton(AF_INET, "192.0.2.1", &(sa4.sin_addr)); // IPv4
inet_pton(AF_INET6, "2001:db8:63b3:1::3490", &(sa6.sin6_addr)); // IPv6
errno)inet_ntop()char ip4[INET_ADDRSTRLEN];
char ip6[INET6_ADDRSTRLEN];
inet_ntop(AF_INET, &(sa4.sin_addr), ip4, INET_ADDRSTRLEN);
inet_ntop(AF_INET6, &(sa6.sin6_addr), ip6, INET6_ADDRSTRLEN);
INET_ADDRSTRLEN (16) / INET6_ADDRSTRLEN (46) 給出最大長度RFC 1918 定義三塊私有地址塊:
| 類別 | 範圍 | 掩碼 |
|---|---|---|
| A | 10.0.0.0 – 10.255.255.255 | 255.0.0.0 |
| B | 172.16.0.0 – 172.31.255.255 | 255.255.0.0 |
| C | 192.168.0.0 – 192.168.255.255 | 255.255.255.0 |
NAT 將私有 IP 映射為公網 IP,應用層無感知。防火牆後的多設備共享少量公網 IP 即依賴此機制。
AND 運算得網絡地址摘自 xiaobin_HLJ80 的專欄