< >
Linux 受歡迎的部分原因是,它擁有效率高且功能豐富的網路疊層。如果你想知道 Linux 如何利用 IP 協定把複雜的任務搞定,或者只想透過真實的案例來瞭解現代網路的功能,《Linux 網路原理》就是你不可或缺的指南。如同廣受歡迎的《Linux 核心詳解》,本書會詳細說明網路的基本概念,以及教你閱讀實際的 C 程式碼實作細節。雖然對 TCP/IP 協定有些經驗會有所助益,不過本書可讓你學到和這些協定有關的許多內容,以及它們的眾多用途。一旦完全瞭解這些連網工具後,你就可以透過本書所提到的程式碼,瞭解 Linux 核心中最複雜的部分是如何運作的。瞭解網路—以及實作它們—之所以困難,部分原因是連網任務廣佈四處,由不同的程式碼片段執行不同的次數。本書的優點之一,就是它整合了這些程式碼片段,讓讀者得以瞭解廣佈之函式和資料結構間的關係。本書不但做了大藍圖式的探討,也對 Linux 網路的細節做了合理的交代。 本書作者 Christian Benvenuti 是個作業系統設計師,也是個網路專家。書中,他不僅會說明 Linux 程式碼如何運作,也會交代主要網路功能的用途、討論選擇解決方案時應該所注意的面向;此外,他還提供了許多流程圖和其他圖表,以協助讀者掌握重點。本書範圍涵蓋:網路的關鍵問題 鄰接基礎架構和協定(ARP) 網路介面卡(NIC)裝置驅動程式 橋接(Bridging) 系統初始設定 選徑(Routing) L2(鏈路層)的任務和實作細節 ICMP L3(IPv4)的任務和實作細節
序第一部分 基礎背景第一章 簡介1.1 基本術語1.2 常見的撰碼模式1.3 用戶空間工具程式1.4 瀏覽原始碼 1.5 當功能以修補形式提供時第二章 關鍵資料結構2.1 socket 緩衝區:sk_buff 結構2.2 net_device 結構 2.3 本章所提及之檔案 第三章 用戶空間與核心的介面3.1 概述3.2 procfs 與 sysctl 的差異3.3 ioctl3.4 Netlink3.5 將組態之修改序列化第二部分 系統初始設定第四章 通知鏈4.1 使用通知鏈的理由4.2 概觀4.3 定義通知鏈4.4 向通知鏈註冊4.5 通知鏈上的事件4.6 網路子系統的通知鏈4.7 經由 /proc 檔案系統進行調整4.8 本章所提及之函式和變數4.9 本章所提及之檔案和目錄第五章 網路裝置初始設定5.1 系統初始設定概觀5.2 裝置的註冊和初始設定5.3 NIC 初始設定的基本目標5.4 裝置和核心間的互動5.5 初始設定選項5.6 模組選項 5.7 裝置處理層之初始設定:net_dev_init5.8 用戶空間輔助程式5.9 虛擬裝置5.10 經由 /proc 檔案系統進行調整5.11 本章所提及之函式和變數5.12 本章所提及之檔案和目錄第六章 PCI 層和網路介面卡6.1 本章所提及之資料結構6.2 PCI NIC 裝置驅動程式的註冊6.3 電力管理和網路喚醒6.4 PCI NIC 驅動程式註冊範例6.5 大藍圖6.6 經由 /proc 檔案系統進行調整6.7 本章所提及之函式和變數6.8 本章所提及之檔案和目錄第七章 元件初始設定的核心基礎架構7.1 開機期間核心選項7.2 模組初始設定程式碼7.3 經優化的巨集標記7.4 開機期間初始設定常式7.5 記憶體優化7.6 經由 /proc 檔案系統進行調整7.7 本章所提及之函式和變數7.8 本章所提及之檔案和目錄第八章 裝置之註冊和初始設定8.1 何時進行裝置之註冊8.2 何時進行裝置之除名8.3 分配 net_device 結構8.4 NIC 註冊和除名的架構8.5 裝置之初始設定8.6 net_device 結構的組織8.7 裝置狀態 8.8 裝置的註冊和除名8.9 裝置之註冊8.10 裝置之除名8.11 開啟和關閉網路裝置8.12 更新裝置佇列規則狀態8.13 從用戶空間來設定裝置相關資訊8.14 虛擬裝置8.15 上鎖8.16 經由 /proc 檔案系統進行調整8.17 本章所提及之函式和變數8.18 本章所提及之檔案和目錄第三部分 傳輸和接收第九章 中斷和網路驅動程式9.1 決策和流量方向9.2 接收到訊框時通知驅動程式9.3 中斷處理常式 9.4 softnet_data 結構第十章 訊框的接收10.1 和其他功能互動10.2 裝置的開啟和關閉10.3 佇列 10.4 通知核心已接收到訊框:NAPI 和 netif_rx10.5 裝置驅動程式和核心的舊介面:netif_rx 的第一部分10.6 擁塞管理 10.7 處理 NET_RX_SOFTIRQ:net_rx_action第十一章 訊框的傳輸11.1 傳輸之開啟和關閉第十二章 和中斷事件有關的一般參考資料12.1 統計資料12.2 經由 /proc 和 sysfs 檔案系統進行調整12.3 本書第三部分所提及之函式和變數 12.4 本書第三部分所提及之檔案和目錄第十三章 協定處理常式13.1 網路疊層概觀13.2 執行正確的協定處理常式13.3 協定處理常式的組織13.4 協定處理常式的註冊13.5 Ethernet 與 IEEE 802.3 的差異13.6 經由 /proc 檔案系統進行調整13.7 本章所提及之函式和變數13.8 本章所提及之檔案和目錄第四部分 橋接第十四章 橋接:概念14.1 中繼器、橋接器以及選徑器14.2 橋接器與交換器14.3 主機14.4 以橋接器來合併兩個 LAN14.5 橋接不同的 LAN 技術14.6 位址學習 14.7 多台橋接器第十五章 橋接:擴充樹協定15.1 基本術語15.2 階層交換式 L2 拓樸範例 15.3 擴充樹協定的基本元素15.4 橋接器和埠識別碼15.5 橋接器協定資料單元(BPDUs)15.6 定義活躍拓樸15.7 計時器15.8 拓樸變更15.9 BPDU 封裝15.10 傳送組態 BPDUs15.11 處理入境訊框15.12 收斂時間15.13 較新擴充樹協定概觀第十六章 橋接:Linux 實作細節16.1 橋接裝置抽象層16.2 重要的資料結構16.3 橋接程式碼的初始設定16.4 建立橋接裝置和橋接埠16.5 建立新的橋接裝置16.6 橋接裝置設立常式16.7 刪除橋接器16.8 把埠加到橋接器16.9 開啟和關閉橋接裝置16.10 開啟和關閉橋接埠16.11 改變橋接埠狀態16.12 大藍圖16.13 轉送資料庫16.14 處理入境流量16.15 橋接裝置上的傳輸16.16 擴充樹協定(STP)16.17 netdevice 通知鏈第十七章 橋接:其他主題17.1 用戶空間組態工具17.2 經由 /proc 檔案系統進行調整17.3 經由 /sys 檔案系統進行調整17.4 統計資料17.5 本書橋接部分所到提的資料結構17.6 本書橋接部分所提及之函式和變數 17.7 本書橋接部分所提及之檔案和目錄第五部分 網際網路協定第 4 版(IPv4)第十八章 網際網路協定第 4 版(IPv4):概念18.1 IP 協定:大藍圖 18.2 IP 標頭18.3 IP 選項18.4 封包的分段/重組 18.5 核對總值第十九章 網際網路協定第 4 版(IPv4):Linux 的基石和功能19.1 主要的 IPv4 資料結構19.2 封包的一般性處理 19.3 IP 選項第二十章 網際網路協定第 4 版(IPv4):轉送和本地傳遞20.1 轉送 20.2 本地傳遞第廿一章 網際網路協定第 4 版(IPv4):傳輸21.1 進行傳輸的重要函式 21.2 介接鄰接子系統第廿二章 網際網路協定第 4 版(IPv4):處理分段22.1 IP 分段 22.2 IP 重組第廿三章 網際網路協定第 4 版(IPv4):其他主題23.1 長壽的 IP 端點資訊23.2 選擇 IP 標頭的 ID 欄位23.3 IP 統計資料23.4 IP 組態23.5 IP-over-IP23.6 IPv4:問題出在哪裡?23.7 經由 /proc 檔案系統進行調整23.8 本書第五部分所提及之資料結構23.9 本書第五部分所提及之函式和變數23.10 本書第五部分所提及之檔案和目錄第廿四章 L4 協定以及 raw IP 的處理24.1 可用的 L4 協定24.2 L4 協定的註冊 24.3 L3 到 L4 的傳遞:ip_local_deliver_finish24.4 IPv4 vs. IPv624.5 經由 /proc 檔案系統進行調整24.6 本章所提及之函式和變數 24.7 本章所提及之檔案和目錄 第廿五章 網際網路控制訊息協定(ICMPv4)25.1 ICMP 標頭25.2 ICMP 承載資料25.3 ICMP 類型 25.4 ICMP 協定的應用程式25.5 大藍圖25.6 協定的初始設定25.7 本章所提及之資料結構25.8 傳輸 ICMP 訊息25.9 ICMP 統計資料25.10 把錯誤通知傳遞給傳輸層25.11 經由 /proc 檔案系統進行調整25.12 本章所提及之函式和變數25.13 本章所提及之檔案和目錄第六部分 鄰接子系統第廿六章 鄰接子系統:概念26.1 何謂鄰居?26.2 需要鄰接協定的原因26.3 Linux 實作細節 26.4 代理鄰接協定26.5 當邀請請求被傳輸及處理時 26.6 鄰居狀態以及網路不可達性偵測(NUD)第廿七章 鄰接子系統:基礎架構27.1 主要資料結構 27.2 L3 協定和鄰接協定的共同介面27.3 鄰接基礎架構的一般性任務 27.4 neighbour 結構的參照計數27.5 建立 neighbour 項目27.6 鄰居的刪除27.7 做為代理伺服器27.8 L2 標頭快取機制27.9 協定的初始設定和清理27.10 和其他子系統互動 27.11 鄰接協定和 L3 傳輸函式的互動 27.12 佇列機制第廿八章 鄰接子系統:位址解析協定(ARP)28.1 ARP 封包格式 28.2 ARP 的使用範例28.3 無償 ARP28.4 來自多個介面的回應28.5 可調整的 ARP 選項28.6 ARP 協定的初始設定28.7 neighbour 結構的初始設定28.8 傳輸和接收 ARP 封包28.9 處理入境 ARP 封包28.10 ARP 代理伺服器 28.11 範例28.12 外部事件28.13 arpd28.14 反向位址解析協定(RARP)28.15 ND(IPv6)比 ARP(IPv4)進步之處第廿九章 鄰接子系統:其他主題29.1 鄰居系統管理29.2 經由 /proc 檔案系統進行調整29.3 本書第六部分所提及之資料結構 29.4 本書第六部分所提及之檔案和目錄 第七部分 選徑第三十章 選徑:概念30.1 選徑器、路徑以及選徑表30.2 選徑基本要素30.3 選徑表30.4 查詢 30.5 封包接收 vs. 封包傳輸 第卅一章 選徑:進階31.1 方針選徑背後的概念31.2 多路選徑背後的概念 31.3 和其他核心子系統互動 31.4 選徑協定監控程式31.5 冗長監控 31.6 ICMP_REDIRECT 訊息 31.7 反向路徑過濾 第卅二章 選徑:Linux 實作細節32.1 核心選項32.2 主要資料結構32.3 路徑和位址範圍32.4 主要和次要 IP 位址32.5 通用的輔助常式和巨集32.6 全域鎖32.7 選徑子系統初始設定32.8 外部事件32.9 和其他子系統互動第卅三章 選徑:選徑快取區33.1 選徑快取區初始設定33.2 雜湊表的組織33.3 主要的快取區運算33.4 多路徑快取機制 33.5 DST 和呼叫協定的介面33.6 出清選徑快取區33.7 垃圾收集 33.8 出境 ICMP REDIRECT 的速率限制 第卅四章 選徑:選徑表34.1 選徑雜湊表的組織34.2 選徑表初始設定34.3 新增和移除路徑 34.4 方針選徑以及其對選徑表之定義的影響第卅五章 選徑:查詢35.1 鳥瞰查詢函式35.2 輔助常式 35.3 徑表查詢:fn_hash_lookup 35.4 fib_lookup 函式 35.5 設定接收和傳輸的函式35.6 輸入和輸出選徑常式的一般結構35.7 輸入選徑35.8 輸出選徑35.9 多路徑對 next hop 選擇的影響35.10 方針選徑35.11 來源地選徑 35.12 方針選徑以及選徑表分類器 第卅六章 選徑:其他主題36.1 用戶空間組態設定工具36.2 統計資料36.3 經由 /proc 檔案系統進行調整36.4 開啟和關閉轉送機制36.5 本書第七部分所提到的資料結構36.6 本書第七部分所提及之函式和變數36.7 本書第七部分所提到的檔案和目錄索引
Linux 系統管理 Linux 系統程式設計 Python的Unix.Linux系統管理應用
購買紙本書