我想知道關閉以太網後實際會發生什麼。作業系統在網路層做什麼?它會刷新路由表或類似的東西嗎?
答案1
Linux 核心通過struct net_device
(結構網路設備)。每個struct net_device
都有一組struct net_device_ops
應該由設備驅動程式實現的。其中最重要的是:
ndo_open()
。當您將乙太網路適配器設定為 ON (ip link set up dev <eth_dev>
) 時呼叫。ndo_start_xmit()
。當您開始透過介面傳輸資料時調用。ndo_stop()
。當您將乙太網路適配器設定為 OFF(ip link set down dev <eth_dev>
) 時呼叫。
那麼,當設備宕機時到底會發生什麼事?
大多數驅動程式都實作了一組例程:
- 停止與特定裝置相關的所有佇列。
- 清除與特定設備相關的 ARP 表條目。
- 將介面狀態標記為
DOWN
(ip link show dev <eth_dev>
)。 - 設備特定功能:清除一些結構、緩衝區、將乙太網路控制器晶片移至睡眠狀態...