2026年9月金石堂強力推薦
PUGO噗果聰明書包開學季預購優惠
閱讀漫遊錄-2026上半年暢銷榜

一定要懂的基礎 - 全圖解 Linux 網路原理實戰開發

  • 79 774
    980
  • 分類:
    中文書電腦資訊作業系統Linux
    追蹤
    ? 追蹤分類後,您會在第一時間收到分類新品通知。
  • 作者: 袁菘華 追蹤 ? 追蹤作者後,您會在第一時間收到作者新書通知。
  • 出版社: 深智數位 追蹤 ? 追蹤出版社後,您會在第一時間收到出版社新書通知。
  • 出版日:2026/09/19

活動訊息

閱讀漫遊錄-2026上半年暢銷榜

內容簡介

https://youtu.be/htA-zD1DQHY
網路程式設計真正的門檻,不只是會呼叫Socket API,而是理解一筆資料如何從應用程式進入Linux核心,經過TCP/IP協定堆疊、網路卡,再傳送到另一台主機。
本書從OSI參考模型、TCP/IP、ARP、IP、交換器與跨網段通訊出發,逐步深入Linux核心的網路封包收發流程,再延伸到TCP、UDP、I/O模型、select、poll、epoll、Raw Socket、Unix Domain Socket、群播、廣播、零複製與百萬連線。
書中涵蓋網路位元組序、Socket位址、TCP狀態機、TFO、SYN Cookies、UDP可靠性、io_uring、Socket選項、檔案描述元傳遞,以及Reactor架構等實務技術,將網路協定、系統呼叫、Linux核心機制與伺服器架構串成完整脈絡。
對想從一般Socket程式設計進一步理解Linux網路底層、高效能I/O與高併發伺服器設計的開發者而言,這是一本兼具底層原理與實作細節的網路程式設計參考書。
本書共分14章
◼第1章介紹OSI參考模型、TCP/IP、ARP、交換器與跨網段通訊
◼第2章介紹Socket概念及Linux核心的網路封包收發流程
◼第3章介紹網路位元組序、Socket位址、IP與網域名稱轉換及Socket核心函式
◼第4章介紹TCP狀態機、TCP程式設計、TFO與SYN Flood
◼第5章介紹UDP程式設計、掉封包、順序錯亂與可靠性處理
◼第6章介紹循環式伺服器、並行伺服器與I/O多工伺服器
◼第7章介紹阻塞、非阻塞、訊號驅動、非同步I/O與io_uring
◼第8章介紹select、poll與epoll
◼第9章介紹Socket選項與sysctl
◼第10章介紹網路層與資料連結層Raw Socket,以及使用者空間TCP/IP實作
◼第11章介紹Unix Domain Socket與檔案描述元傳遞
◼第12章介紹群播、IGMP與廣播
◼第13章介紹mmap、DMA、sendfile與splice等零複製技術
◼第14章介紹單機百萬連線、系統限制調整與Reactor架構

作者

袁菘華
具有十餘年Linux研發經驗,曾就職於世界500強企業和中國某通訊公司。擅長以圖文的形式寫作技術文章,將複雜的技術知識講得通俗易懂。個人微信公眾號「物聯網心球」深受廣大讀者的喜歡。

目錄

▍第1 章 電腦網路基礎
1.1  OSI 參考模型
1.2  TCP/IP
1.3  兩台主機直連
1.4  區域網路通訊
1.5  跨網段通訊
▍第2 章 認識通訊端
2.1  從不同角度看 Socket
2.2  從核心看Linux 接收資料
2.3  從核心看Linux 傳送資料
2.4  常見 Socket 介紹
▍第3 章 Socket 程式設計基礎
3.1  位元組序
3.2  Socket 位址
3.3  IP 位址轉換
3.4  網域名稱與 IP 位址的轉換
3.5  Socket核心函式
3.6  Socket 發送函式
3.7  Socket 接收函式
▍第4 章 TCP Socket 程式設計
4.1  TCP 程式設計基礎
4.2  TCP Socket 程式設計基礎
4.3  優雅關閉 Socket
4.4  TCP 連線快速開啟
4.5  SYN Flood 攻擊
▍第5 章 UDP Socket 程式設計
5.1  UDP 程式設計基礎
5.2  UDP 通訊端程式設計基礎
5.3  UDP 可靠性程式設計
▍第6 章 伺服器模型
6.1  迴圈伺服器
6.2  並行伺服器
6.3  I/O 多工伺服器
6.4  本章小結
▍第7 章 I/O 模型
7.1  同步I/O 和非同步I/O 的區別
7.2  阻塞I/O
7.3  非阻塞I/O
7.4  I/O 多工
7.5  訊號驅動I/O
7.6  非同步I/O
▍第8 章 I/O 多工
8.1  從核心看select
8.2  select 程式設計實戰
8.3  select 小結
8.4  從核心看poll
8.5  poll 程式實戰
8.6  poll 小結
8.7  從核心看epoll
8.8  epoll 程式設計實戰
8.9  epoll 小結
▍第9 章 通訊端選項
9.1  通訊端選項簡介
9.2  setsockopt 和getsockopt 函式
9.3  sysctl 相關知識
9.4  常用的通訊端選項
▍第10 章 原始通訊端
10.1  從核心看原始通訊端
10.2  網路層原始通訊端
10.3  鏈結層原始通訊端
10.4  使用者層TCP/IP 程式設計
▍第11 章 網域通訊端
11.1  網域通訊端基礎
11.2  SOCK_STREAM 網域通訊端
11.3  SOCK_DGRAM 網域通訊端
11.4  socketpair 網域通訊端
11.5  傳遞檔案描述子
▍第12 章 群播和廣播
12.1  群播
12.2  群播程式設計
12.3  廣播
12.4  廣播程式設計
▍第13 章 零複製
13.1  傳統檔案傳輸
13.2  零複製技術
13.3  零複製網路程式設計
▍第14 章 百萬高併發
14.1  開啟百萬個通訊端檔案
14.2  建立上百萬個網路連線
14.3  百萬高併發常見問題
14.4  Reactor 模型

序/導讀

前言
網路程式設計的應用領域非常廣泛,幾乎涵蓋所有與電腦和網際網路相關的產業,是每位開發者必備的技能。如果你對網路程式設計還不瞭解,那麼本書一定能幫你打開網路程式設計世界的大門。
寫作背景
網路程式設計技術是一項偏應用的技術。偏應用的技術有一個特點,就是需要學習的知識點特別多。然而,筆者認為,之所以要學習這麼多知識點,是因為開發者對技術的理解浮於表面,不懂得技術實現的底層原理。例如,當我們學習Linux 系統中的管道(用於行程間通訊)和sendfile(零拷貝技術,用於提高網路傳輸效率)兩個知識點時,需要花費一定的時間。如果你對底層技術很了解(核心原始碼),就會發現它們都是基於管道(環形緩衝區)實現的,這兩個看似毫無關係的知識點,底層實現原理居然是一樣的。理解了底層實現原理,再去學習這兩個知識點,就可以大大地提高學習效率。
對於Linux 開發者來說,最有價值的內容藏在Linux 的核心原始碼中。我們碰到的絕大部分Linux 技術問題能從Linux 核心原始碼中找到本質原因。然而,實際情況是,大部分Linux 開發者看不懂Linux 核心原始碼,並且認為學習Linux 核心原始碼的難度非常高。於是,筆者萌生了一個想法:結合Linux 核心原始碼分析,把技術知識的本質講解清楚。目前,市面上的大多數教材偏向於教你如何用,如函式介面如何使用、針對用戶端和伺服端如何程式設計等。如果只停留在使用層面,那麼當遇到問題或者需要對軟體架構進行最佳化時,往往無能為力。
我們再來聊聊為什麼選網路程式設計這個主題?主要有以下幾個原因:網路程式設計這項技術很重要,每位開發者都需要掌握;很多開發者的網路程式設計基礎比較薄弱,只會照搬別人的程式碼;筆者一直從事Linux 網路開發工作,對網路程式設計和Linux 核心網路協定堆疊的工作原理非常了解。
圖書定位
開始寫這本書之前,我對這本書就有了明確的定位。
首先,這本書必須具有稀缺性。市面上已經有了很多關於網路程式設計的書,為什麼還要寫一本呢?因為市面上還沒有一本「有趣」的網路程式設計書。這種趣味性主要體現在圖文並茂的表達方式,本書共有200 多張配圖,盡量做到每個重要的知識點都配一張圖。底層的技術往往是枯燥並且難以理解的,透過圖文方式講解可以降低大家的學習門檻,讓大家在輕鬆愉悅的氛圍中學會技術知識。另外,讀者的技術水準是參差不齊的,有些問題對於一些讀者很簡單,但是對於另一些讀者來說很難,以圖文方式講解能夠最大程度顧及所有的讀者。
其次,這本書的內容要過硬。沒有硬核的內容,再漂亮的圖文也只是花瓶。我希望讀者學完本書後,能夠真正理解網路程式設計,所以在圖書內容的選擇上一直要求很高。這種高要求體現在以下兩個方面。
• 內容全面:本書共14 章,覆蓋網路程式設計各個方面的知識點,內容由淺入深,層層遞進。全面的內容能夠幫助讀者建立完整的知識體系並加強系統性思維。相反,碎片化的知識並不會給讀者帶來多大的提升。
• 內容有深度:這種深度體現在把知識點講解透徹,把問題的本質呈現出來。如果筆者的資訊來源和讀者一樣,都是網路上的各種貼文、文章,或者是AI 給出的答案,那麼筆者輸出的內容只能是大眾化的,價值一定非常有限。筆者的資訊主要來自Linux 核心原始碼,這樣能夠最大程度保證資訊的準確性。同時,直接閱讀核心原始碼,能夠遮蔽垃圾資訊的干擾,直接揭露問題的本質。
本書能夠解決實際問題,每個知識點都配備範例(如範例程式碼、設定指令、完整解決方案等),這些範例都是完整的,可以直接拿來使用,以便於讀者進行除錯,透過實作加深對理論知識的理解。
最後,我希望本書能夠成為讀者的朋友,希望讀者能夠把這本書擺在書桌上最顯眼的位置,當碰到問題或者有空閒時,隨手拿起來翻一翻。
這本書能給你帶來什麼
學完這本書,讀者的網路程式設計水準一定會有很大程度的提升。這不僅能夠幫你解決實際問題,也會影響你的職業生涯。對於技術人員來說,技術水準不僅直接決定了薪資待遇,還是職位晉升的重要條件,學好網路程式設計會增加你求職成功的機率。
除了上述實際價值,這本書也會改變你對技術的看法。透過本書,你會發現,技術知識不是一堆難以理解的「八股文」,而是一個個鮮活的生命。學習技術知識就像學習藝術一樣,能夠讓我們的精神愉悅。
最後,我想對讀者說,從現在開始,一定要學會做內容輸出。我們可以嘗試輸出一些筆記、文章、影片等,輸出的過程其實也是學習的過程,這個過程會讓你看到自己的不足,倒逼自己進步。另外,持續輸出內容,也會讓你慢慢累積自己的影響力,讓你變得越來越有價值。

配送方式

  • 台灣
    • 國內宅配:本島、離島
    • 到店取貨:
      金石堂門市 不限金額免運費
      7-11便利商店 萊爾富便利商店 全家便利商店
  • 海外
    • 國際快遞:全球
    • 港澳店取:
      ok便利商店 順豐 7-11便利商店

詳細資料

詳細資料

    • 語言
    • 中文繁體
    • 裝訂
    • 紙本平裝
    • ISBN
    • 9786267889770
    • 分級
    • 普通級
    • 頁數
    • 560
    • 商品規格
    • 23*17*2.74
    • 出版地
    • 台灣
    • 適讀年齡
    • 全齡適讀
    • 注音
    • 級別

商品評價

訂購/退換貨須知

加入金石堂 LINE 官方帳號『完成綁定』,隨時掌握出貨動態:

加入金石堂LINE官方帳號『完成綁定』,隨時掌握出貨動態
金石堂LINE官方帳號綁定教學

提醒您!!
金石堂及銀行均不會請您操作ATM! 如接獲電話要求您前往ATM提款機,請不要聽從指示,以免受騙上當!

退換貨須知:

**提醒您,鑑賞期不等於試用期,退回商品須為全新狀態**

  • 依據「消費者保護法」第19條及行政院消費者保護處公告之「通訊交易解除權合理例外情事適用準則」,以下商品購買後,除商品本身有瑕疵外,將不提供7天的猶豫期:
    1. 易於腐敗、保存期限較短或解約時即將逾期。(如:生鮮食品)
    2. 依消費者要求所為之客製化給付。(客製化商品)
    3. 報紙、期刊或雜誌。(含MOOK、外文雜誌)
    4. 經消費者拆封之影音商品或電腦軟體。
    5. 非以有形媒介提供之數位內容或一經提供即為完成之線上服務,經消費者事先同意始提供。(如:電子書、電子雜誌、下載版軟體、虛擬商品…等)
    6. 已拆封之個人衛生用品。(如:內衣褲、刮鬍刀、除毛刀…等)
  • 若非上列種類商品,均享有到貨7天的猶豫期(含例假日)。
  • 辦理退換貨時,商品(組合商品恕無法接受單獨退貨)必須是您收到商品時的原始狀態(包含商品本體、配件、贈品、保證書、所有附隨資料文件及原廠內外包裝…等),請勿直接使用原廠包裝寄送,或於原廠包裝上黏貼紙張或書寫文字。
  • 退回商品若無法回復原狀,將請您負擔回復原狀所需費用,嚴重時將影響您的退貨權益。
金石堂門市 全家便利商店 萊爾富便利商店 7-11便利商店
World wide
活動ing