章節概覽#
本章深入介紹 Linux 網路的運作原理與設定方式。從最基本的網路概念(host、router、LAN)開始,逐步講解網路分層架構(network layers)、IP 位址與子網路、路由表、IPv6、DNS、實體層與 Ethernet,再到進階主題如 DHCP、NAT、防火牆(iptables)、無線網路等。
核心問題有兩個:
- 傳送資料的電腦如何知道資料要送到哪裡(where)?
- 接收端如何知道收到的是什麼(what)?
網路透過多個**網路層(network layers)**堆疊來回答這些問題,每一層負責不同面向的傳送、接收與識別工作。
9.1 Network Basics#
一個典型的家庭或小型辦公室網路包含:
- 多台主機(host)連接到同一個區域網路(LAN, Local Area Network)
- 其中一台是 router(路由器),可以在不同網路之間傳遞資料
- Router 同時連接 LAN 和網際網路,透過 uplink(也稱 WAN 連線)存取外部網路
LAN 的連線可以是有線或無線,LAN 上的機器通常在物理上相近,並共享大部分的設定與存取權限。

Figure 9-1: A typical local area network with a router
9.2 Packets#
電腦透過網路傳送的資料被切分為小塊,稱為 packets(封包)。每個封包包含:
- Header:識別資訊,如來源與目的地主機、協定等
- Payload:實際要傳送的應用程式資料(如 HTML、圖片)
將訊息切成封包的好處:
- 允許多台主機「同時」通訊
- 更容易偵測與補償傳輸錯誤
9.3 Network Layers#
完整的網路系統包含一組稱為 network stack 的網路層,從上到下為:
Application Layer(應用層)#
- 應用程式溝通用的高階協定
- 常見協定:HTTP、TLS、FTP
- 處理發生在 user space
Transport Layer(傳輸層)#
- 定義資料傳輸特性,包含完整性檢查、port 號、將資料拆分與重組為封包
- 主要協定:TCP(Transmission Control Protocol)和 UDP(User Datagram Protocol)
- 也稱為 protocol layer
- 在 Linux 中,傳輸層及以下主要由 kernel 處理
Network Layer(網路層/Internet Layer)#
- 定義如何將封包從來源主機送到目的主機
- 使用 Internet Protocol (IP)
- 是一個純軟體網路,不依賴特定硬體或作業系統
Physical Layer(實體層)#
- 定義如何透過實體媒介傳送原始資料
- 如 Ethernet 或 modem
- 也稱為 link layer 或 host-to-network layer
你可能聽過 OSI 七層模型,但本書使用更實務的四層模型,因為這與 Linux 實際運作更貼近。
9.4 The Internet Layer#
Internet 基於 IPv4 和 IPv6 兩個版本。Internet layer 的重要特性是它是純軟體網路,不對硬體有特定要求。
網路的拓撲是去中心化的,由較小的網路(subnets,子網路)互相連接而成。一台主機如果能在不同 subnet 之間轉發資料,就稱為 router(也叫 gateway)。
每台 internet 主機至少有一個 IP address。IPv4 位址的格式為 a.b.c.d(如 10.23.2.37),稱為 dotted-quad 表示法。

Figure 9-2: Network with IP addresses
9.4.1 Viewing IP Addresses#
使用 ip 指令查看機器上的 IP 位址:
ip address show輸出會按 network interface 分組顯示,包含 IPv4 位址(以 inet 標示)和 subnet 資訊(如 /24)。
ip指令是目前標準的網路設定工具,取代了舊版的ifconfig、route和arp。
9.4.2 Subnets#
Subnet(子網路)是一組具有特定 IP 範圍的主機集合。定義 subnet 需要兩個部分:
- Network prefix(網路前綴,也叫 routing prefix):subnet 中所有位址共同的部分
- Subnet mask(子網路遮罩):標示哪些 bit 屬於網路前綴
例如:IP 位址 10.23.2.1 搭配 subnet mask 255.255.255.0,表示與任何以 10.23.2 開頭的位址在同一 subnet。
9.4.3 Common Subnet Masks and CIDR Notation#
CIDR(Classless Inter-Domain Routing)表示法是更簡潔的子網路寫法,用前綴長度取代完整的 subnet mask:
| Long form | CIDR form |
|---|---|
| 255.0.0.0 | /8 |
| 255.255.0.0 | /16 |
| 255.240.0.0 | /12 |
| 255.255.255.0 | /24 |
| 255.255.255.192 | /26 |
/24 是終端使用者網路最常見的 subnet mask。
9.5 Routes and the Kernel Routing Table#
Linux kernel 使用 routing table(路由表)來決定封包的傳送方式。查看路由表:
ip route show輸出的每一行都是一條路由規則:
- 目標 subnet 對應到特定 network interface(如
dev enp0s31f6)的規則,表示可直接到達 default規則表示預設路由,當沒有其他規則匹配時使用
9.6 The Default Gateway#
路由表中的 default 條目(CIDR 表示為 0.0.0.0/0)匹配任何位址,其設定的中介位址就是 default gateway(預設閘道)。
- 當沒有其他路由規則匹配時,封包會被送往 default gateway
- 在大多數 /24 網路中,router 通常位於 subnet 的位址 1(如 10.23.2.1)
Kernel 選擇路由時,會優先匹配最長前綴(longest prefix match)。例如 10.23.2.0/24(24 bits)優先於 0.0.0.0/0(0 bits)。
9.7 IPv6 Addresses and Networks#
IPv4 位址只有 32 bits(約 43 億個位址),已不足以應對現今網際網路規模。IPv6 使用 128 bits(32 bytes),分為 8 組各 4 bytes 的十六進位表示:
2001:0db8:0a0b:12f0:0000:0000:0000:8b6e可以省略前導零和連續的零組(用 :: 表示):
2001:db8:a0b:12f0::8b6e
Figure 9-3: Subnet and interface ID of a typical IPv6 address
IPv6 的關鍵概念:
- Interface ID:位址中主機獨有的部分(通常是後 64 bits)
- Global unicast address:全球有效的位址,前綴為 2000::/3
- Link-local address:本地網路用的位址,前綴為 fe80::/10
9.7.1 Viewing IPv6 Configuration on Your System#
ip -6 address show
ip -6 route showIPv6 路由表比 IPv4 更複雜,因為同時設定了 link-local 和 global subnets。Default route 在 IPv6 中以 ::/0 表示。
9.7.2 Configuring Dual-Stack Networks#
可以在同一台主機上同時執行 IPv4 和 IPv6,稱為 dual-stack network。IPv4 和 IPv6 協定彼此獨立,應用程式可選擇使用哪一個。大多數重要的應用程式和伺服器現在都支援 IPv6。
9.8 Basic ICMP and DNS Tools#
兩個重要的實用工具:
- ICMP(Internet Control Message Protocol):用於網路診斷與設定
- DNS(Domain Name Service):將人類可讀的名稱映射到 IP 位址
9.8.1 ping#
ping 是最基本的網路偵錯工具,傳送 ICMP echo request 封包並等待回應:
ping 10.23.2.1重要觀察指標:
- icmp_req:序號,若有間隔代表可能有連線問題
- time:往返時間(round-trip time),超過 1000 ms 表示極慢
- 有線 LAN 上應該幾乎沒有封包遺失
某些主機基於安全考量會停用 ICMP echo 回應,所以 ping 不通不一定代表主機不可達。
9.8.2 DNS and host#
使用 host 指令查詢 domain name 對應的 IP 位址:
host www.example.com也可以反向查詢(輸入 IP 查 hostname),但不一定可靠。
9.9 The Physical Layer and Ethernet#
Internet 是純軟體網路,但實際傳輸需要實體層。最常見的實體層是 Ethernet。
Ethernet 網路的共同特徵:
- 每個裝置都有一個 MAC address(Media Access Control address),也叫 hardware address,獨立於 IP 位址
- 裝置以 frames 傳送資料,frame 包含來源和目的 MAC 位址
Ethernet 不跨越實體網路邊界。Router 可以從一個 frame 取出資料、重新包裝,再送到另一個實體網路上。
9.10 Understanding Kernel Network Interfaces#
Linux kernel 透過 kernel network interface 連接實體層和 internet 層。設定 network interface 時,會把 IP 位址設定(internet 層)和硬體識別(physical device)連結起來。
- Interface 名稱通常反映底層硬體類型,如
enp0s31f6(PCI 槽的 Ethernet) - 這稱為 predictable network interface device name,重開機後不會改變
- 舊式名稱如
eth0、wlan0在大多數 systemd 系統上會被快速重新命名
每個 network interface 有一個編號,interface 1 幾乎總是 loopback(見 9.16 節)。ip 輸出中的 UP flag 表示 interface 正在運作。
若要深入查看硬體層資訊,可使用 ethtool 指令。
9.11 Introduction to Network Interface Configuration#
要將 Linux 機器連上網路,需要完成以下步驟:
- 連接硬體並確保 kernel 有對應的 driver
- 執行額外的實體層設定(如選擇無線網路名稱)
- 將 IP 位址和 subnet 指派給 kernel network interface
- 新增必要的路由(包括 default gateway)
9.11.1 Manually Configuring Interfaces#
使用 ip 指令手動設定 interface:
# ip address add address/subnet dev interface9.11.2 Manually Adding and Deleting Routes#
# ip route add default via gw-address dev interface
# ip route del default
# ip route add 192.168.45.0/24 via 10.23.2.44
# ip route del 192.168.45.0/24手動設定路由通常比想像中複雜。一般建議保持簡單,讓 router 負責 subnet 之間的路由工作。
9.12 Boot-Activated Network Configuration#
傳統上透過開機腳本執行 ip 指令來設定網路。Linux 中有多種開機時網路設定的標準化嘗試(如 ifup / ifdown),但不同發行版的實作差異很大。
Netplan 提供了不同的方式:它是統一的網路設定標準,使用 YAML 格式的設定檔(位於 /etc/netplan),並將設定轉換為現有網路管理工具(如 NetworkManager、systemd-networkd)能使用的格式。
9.13 Problems with Manual and Boot-Activated Network Configuration#
現代網路的動態性質帶來了挑戰:
- 大多數機器沒有靜態 IP 位址,需要在連接網路時動態取得設定
- DHCP(Dynamic Host Configuration Protocol)在 IPv4 中處理這項工作
- IPv6 的客戶端有一定程度的自我設定能力
無線網路更增加了複雜度:
- 需要掃描網路名稱、選擇認證方式、處理加密
- 需要在多個實體 interface 間選擇
- 需要處理 interface 斷線時的應變
這些問題超出了簡單開機腳本的處理能力,因此需要 network configuration manager。
9.14 Network Configuration Managers#
Linux 中有多種自動設定網路的方式:
- NetworkManager:桌面和筆電上最廣泛使用的選項
- systemd-networkd:systemd 的附加元件,適合不需太多彈性的伺服器
- 其他:OpenWRT 的
netifd、Android 的 ConnectivityManager、ConnMan、Wicd
9.14.1 NetworkManager Operation#
NetworkManager 是一個開機時啟動的 daemon,負責:
- 收集可用硬體裝置資訊(透過 udev 和 D-Bus)
- 維護 connections 清單(包含硬體裝置及網路層參數)
- 啟用連線時委派給專門工具(如
dhclient)
Ethernet interface 的連線優先順序:
- 有線連線可用則優先使用
- 掃描無線網路,優先連接曾經連過的
- 多個曾連過的無線網路可用時,選最近連過的
9.14.2 NetworkManager Interaction#
- 桌面環境提供圖形化 applet 管理連線
- 命令列工具:
nmcli(查詢和控制 NetworkManager) nm-online:檢查網路是否上線(exit code 0 表示上線)
9.14.3 NetworkManager Configuration#
- 主要設定目錄:
/etc/NetworkManager - 一般設定檔:
NetworkManager.conf(INI 格式) - 連線設定:
/etc/NetworkManager/system-connections
Unmanaged Interfaces(不受管理的 interface):
- 可以設定 NetworkManager 忽略某些 interface(如 localhost)
- 在
NetworkManager.conf中設定managed=false或在 keyfile 區段指定 MAC 位址
Dispatching:
- 網路狀態改變時,NetworkManager 執行
/etc/NetworkManager/dispatcher.d中的腳本
9.15 Resolving Hostnames#
DNS(Domain Name Service)將人類可讀的名稱(如 www.example.com ↗)轉換為 IP 位址。DNS 在應用層運作,完全在 user space 中處理。
主機名稱解析的典型流程:
- 應用程式呼叫共享函式庫中的查詢函式
- 函式根據
/etc/nsswitch.conf的規則決定查詢策略 - 可能先檢查
/etc/hosts,再查 DNS - 向 DNS name server 發送查詢請求
- Name server 回覆 IP 位址
9.15.1 /etc/hosts#
用來覆蓋 hostname 查詢的本地檔案:
127.0.0.1 localhost
10.23.2.3 atlantic.aem7.net atlantic
10.23.2.4 pacific.aem7.net pacific
::1 localhost ip6-localhost9.15.2 resolv.conf#
DNS 伺服器的傳統設定檔為 /etc/resolv.conf:
search mydomain.example.com example.com
nameserver 10.32.45.23
nameserver 10.3.2.3search行定義不完整 hostname 的補全規則- 現代系統中,DNS 設定已變得更複雜
9.15.3 Caching and Zero-Configuration DNS#
傳統 DNS 設定的兩個問題:
- 本機不快取 name server 回覆,導致重複查詢很慢
- 單一 name server 設定不夠彈性
解決方案:
- systemd-resolved:最常見的快取 daemon,能結合多個 name lookup 服務
- 其他選項:dnsmasq、nscd、BIND
- 使用
resolvectl status查看 DNS 設定
Zero-configuration DNS:
- mDNS(Multicast DNS)和 LLMNR(Link-Local Multicast Name Resolution)允許在區域網路中透過廣播查找主機名稱
- 不需要預先設定 DNS server
9.15.4 /etc/nsswitch.conf#
控制名稱查詢優先順序的設定檔。應包含類似這行:
hosts: files dnsfiles 在 dns 前面,表示先查 /etc/hosts 再查 DNS。
/etc/hosts應盡量保持簡短。如果某個主機已有 DNS 條目,就不該放在/etc/hosts中。
9.16 Localhost#
lo 是一個虛擬的 loopback interface,連接到 127.0.0.1(IPv4)或 ::1(IPv6)等同連接到本機。
ip address show
# 1: lo: <LOOPBACK,UP,LOWER_UP> ...
# inet 127.0.0.1/8 scope host lo
# inet6 ::1/128 scope host特性:
- Loopback 的 netmask 是 /8,任何以 127 開頭的位址都指向 loopback
- 這允許在不同 IPv4 位址上執行不同的伺服器(如 systemd-resolved 使用 127.0.0.53)
- IPv6 目前只定義一個 loopback 位址(::1)
9.17 The Transport Layer: TCP, UDP, and Services#
Transport layer 橋接 internet layer 的原始封包與應用程式的精細需求。兩個主要協定:
9.17.1 TCP Ports and Connections#
TCP(Transmission Control Protocol)透過 port(埠號)讓同一台機器上的多個應用程式同時使用網路。

Figure 9-4: Sending a message with TCP
- Connection(連線):本機某個 port 和遠端某個 port 之間的配對
- 查看目前的 TCP 連線:
netstat -nt - 查看 listening 的 port:
netstat -ntl
建立連線:
- Client 從本機選一個未使用的 port,連到 server 上的已知 port
- Ephemeral port(臨時 port):動態指派的 port 號
Port Numbers and /etc/services:
- Port 1-1023 為 privileged ports,只有 superuser 可使用
/etc/services檔案記錄已知 port 與服務名稱的對應- IANA(http://www.iana.org/)維護線上的 port 註冊表
TCP 的特性:
- 應用程式只需知道如何 open、read、write、close 連線
- TCP 在背後處理封包拆分、重組、排序、錯誤偵測和重傳
- Linux 的 TCP 實作主要在 kernel 中
9.17.2 UDP#
UDP(User Datagram Protocol)是更簡單的傳輸層協定:
- 只用於傳送單一訊息,沒有資料流概念
- 不修正遺失或亂序的封包
- 沒有連線概念,只有 port
- 有錯誤偵測但不做修正
- 適合重視速度的應用:NTP(網路時間協定)、視訊聊天等
TCP 像打電話,UDP 像寄明信片。TCP 提供可靠的雙向通訊,UDP 提供快速但不保證的單向訊息傳遞。
9.18 Revisiting a Simple Local Network#
回顧簡單的區域網路架構,本節涵蓋:
- 主機如何自動取得網路設定
- 如何設定路由
- Router 的真正角色
- 如何選擇 subnet IP 位址
- 如何設定防火牆過濾不要的流量
9.19 Understanding DHCP#
DHCP(Dynamic Host Configuration Protocol)讓網路主機自動取得:
- IP 位址
- Subnet mask
- Default gateway
- DNS servers
DHCP 使用 lease(租約)機制,客戶端在一段時間內使用某個 IP 位址,到期可續約。
初始 DHCP 請求時,主機不知道 DHCP server 的位址,因此會向所有主機廣播請求。
9.19.1 Linux DHCP Clients#
- dhclient:傳統的 ISC DHCP 客戶端程式
- PID 存放在
/var/run/dhclient.pid - Lease 資訊在
/var/lib/dhcp/dhclient.leases
- PID 存放在
- systemd-networkd 也內建 DHCP 客戶端
# dhclient enp0s31f69.19.2 Linux DHCP Servers#
- Linux 可以作為 DHCP server 使用
- 同一 subnet 上只應執行一個 DHCP server,避免 IP 衝突
9.20 Automatic IPv6 Network Configuration#
IPv6 有一種不需要中央 server 的設定方式,稱為 stateless configuration(無狀態設定):
- 從 link-local 網路(fe80::/64)開始,主機產生一個不太可能重複的位址
- 主機廣播確認該位址未被使用
- 監聽 Router Advertisement (RA) 訊息,取得 global network prefix 和 router IP 位址
- 結合 prefix 和 interface ID 產生 global 位址
RA 訊息屬於 ICMPv6 協定的一部分。
9.21 Configuring Linux as a Router#
Router 只是擁有多個 network interface 的電腦。將 Linux 設定為 router:

Figure 9-5: Two subnets joined with a router
- 設定多個 network interface 的 IP 位址
- 啟用 IP forwarding:
# sysctl -w net.ipv4.ip_forward=1- 永久生效需加入
/etc/sysctl.conf或/etc/sysctl.d中的檔案
預設情況下,Linux kernel 不會自動在 subnet 之間轉發封包,必須明確啟用 IP forwarding。
9.22 Private Networks (IPv4)#
建立自己的網路時,應使用 RFC 1918/6761 定義的 private network 位址:
| Network | Subnet mask | CIDR form |
|---|---|---|
| 10.0.0.0 | 255.0.0.0 | 10.0.0.0/8 |
| 192.168.0.0 | 255.255.0.0 | 192.168.0.0/16 |
| 172.16.0.0 | 255.240.0.0 | 172.16.0.0/12 |
- 除非主機超過 254 台,否則使用 /24 的小 subnet 即可
- Private subnet 上的主機無法直接與外部網路通訊,需要透過 NAT 解決
9.23 Network Address Translation (IP Masquerading)#
NAT 是讓 private network 共享單一公開 IP 位址存取網路的最常見方式。在 Linux 中稱為 IP masquerading。
NAT 的運作流程:
- 內部主機發送封包到 router
- Router 攔截封包,用自己的公開位址建立新的連線到目的地
- Router 偽造「連線已建立」的回應給內部主機
- Router 成為內部主機和外部目的地之間的中間人
NAT 需要超越 internet layer,深入 transport layer 取得 UDP/TCP port 資訊來區分多個連線。
在 Linux 上設定 NAT router:
# sysctl -w net.ipv4.ip_forward=1
# iptables -P FORWARD DROP
# iptables -t nat -A POSTROUTING -o enp0s31f6 -j MASQUERADE
# iptables -A FORWARD -i enp0s31f6 -o enp0s2 -m state --state ESTABLISHED,RELATED -j ACCEPT
# iptables -A FORWARD -i enp0s2 -o enp0s31f6 -j ACCEPTNAT 本質上是延長 IPv4 位址空間壽命的權宜之計。IPv6 由於有足夠大的位址空間,不需要 NAT。
9.24 Routers and Linux#
在寬頻網路的早期,Linux 使用者常把一台 Linux 機器設為 router 來分享網路連線。後來製造商推出專用的 router 硬體,許多使用 Linux 作為底層作業系統。
OpenWRT 等專門的 Linux 發行版可安裝在 router 上,提供:
- 比原廠韌體更穩定
- 更多功能(如無線橋接)
- 不限特定硬體型號
- 通常使用 BusyBox 提供精簡的 shell 功能
9.25 Firewalls#
Firewall(防火牆)是軟體或硬體設定,過濾進出網路的流量,通常根據以下條件判斷:
- 來源或目的 IP 位址/subnet
- 來源或目的 port(transport layer)
- 防火牆的 network interface
9.25.1 Linux Firewall Basics#
Linux 的防火牆規則以 chain(鏈)組成,chain 的集合稱為 table。Filter table 中有三個基本 chain:
- INPUT:進入封包
- OUTPUT:離開封包
- FORWARD:轉發封包
整個系統稱為 iptables,同名的使用者空間指令用於建立和管理規則。

Figure 9-6: Chain-processing sequence for incoming packets from a network

Figure 9-7: Chain-processing sequence for incoming packets from a local process
nftables 是設計來取代 iptables 的新系統,指令為
nft。還有iptables-translate可以轉換指令,以及更新的 bpfilter 系統。
9.25.2 Setting Firewall Rules#
# 查看目前規則
# iptables -L
# 設定 chain 的預設策略
# iptables -P FORWARD DROP
# 封鎖特定 IP
# iptables -A INPUT -s 192.168.34.63 -j DROP
# 封鎖特定 subnet 的特定 port
# iptables -A INPUT -s 192.168.34.0/24 -p tcp --destination-port 25 -j DROP
# 刪除規則
# iptables -D INPUT 3
# 在 chain 頂端插入規則
# iptables -I INPUT -s 192.168.34.37 -j ACCEPTKernel 從上到下讀取 chain,使用第一個匹配的規則。規則的順序非常重要。
9.25.3 Firewall Strategies#
兩種基本場景:
- 保護個別機器:在 INPUT chain 設定規則
- 保護整個網路:在 router 的 FORWARD chain 設定規則
正確的策略是只允許信任的流量,其餘全部拒絕:
# 預設拒絕所有進入流量
# iptables -P INPUT DROP
# 允許 ICMP(ping 等)
# iptables -A INPUT -p icmp -j ACCEPT
# 允許本機和 localhost 流量
# iptables -A INPUT -s 127.0.0.1 -j ACCEPT
# iptables -A INPUT -s my_addr -j ACCEPT
# 允許非 SYN 的 TCP 封包(已建立的連線)
# iptables -A INPUT -p tcp '!' --syn -j ACCEPT
# 允許 DNS 回應
# iptables -A INPUT -p udp --source-port 53 -s ns_addr -j ACCEPT
# 允許 SSH 連線
# iptables -A INPUT -p tcp --destination-port 22 -j ACCEPT在只有遠端存取的機器上,不要貿然執行
iptables -P INPUT DROP,這會立即切斷你的連線。
9.26 Ethernet, IP, ARP, and NDP#
當主機要發送 IP 封包時,需要知道目的地的 MAC 位址。在 IPv4 中,這透過 ARP(Address Resolution Protocol)完成。
ARP 的運作流程:
- Origin host 建立包含目標 IP 的 ARP request frame
- 廣播到整個實體網路
- 知道對應 MAC 位址的主機回覆
- Origin host 將 IP-MAC 對應加入 ARP cache
查看 ARP cache:
ip -4 neigh- REACHABLE:最近有通訊
- STALE:已一段時間沒通訊,需要刷新
ARP 只在本地 subnet 上運作。要到達外部目的地,封包會送到 router,再由 router 的 ARP 處理。
IPv6 使用 NDP(Neighbor Discovery Protocol)取代 ARP,包含:
- Neighbor solicitation:查詢 link-local 主機資訊
- Neighbor advertisement:回應查詢
ip 指令統一了 ARP(IPv4)和 NDP(IPv6)的操作介面。
9.27 Wireless Ethernet#
無線 Ethernet(Wi-Fi)在原理上與有線網路相似,使用 MAC 位址和 Ethernet frames。在 network layer 及以上完全相同,主要差異在 physical layer:
額外的元件:
- Transmission details:無線電頻率等實體特性
- Network identification:SSID(Service Set Identifier)是無線網路識別名稱
- Management:大多數無線網路由 access points 管理,access point 常橋接有線和無線網路
Linux 使用 iw 和 iwconfig 指令來管理無線網路設定,但大多數使用者透過 NetworkManager 來處理無線網路連接。
9.28 Summary#
本章涵蓋了理解 Linux 網路所需的核心知識:
- 網路分層架構:Application、Transport、Network(Internet)、Physical
- IP 位址與子網路:IPv4 的 dotted-quad 表示法、CIDR 表示法、subnet mask
- IPv6:128-bit 位址、link-local 和 global unicast 位址、stateless configuration
- 路由:kernel routing table、default gateway、longest prefix match
- DNS:hostname 解析流程、/etc/hosts、resolv.conf、nsswitch.conf
- 實體層:Ethernet、MAC 位址、frames、ARP/NDP
- 傳輸層:TCP(可靠的連線導向)、UDP(快速的無連線)
- 網路設定管理:NetworkManager、systemd-networkd、Netplan、DHCP
- 進階主題:private networks、NAT/IP masquerading、firewalls(iptables)、wireless Ethernet