UNIX網絡編程(捲1)-套接字聯網API(第3版)

UNIX網絡編程(捲1)-套接字聯網API(第3版) pdf epub mobi txt 电子书 下载 2025

[美] Stevens 著
圖書標籤:
  • UNIX網絡編程
  • 套接字
  • 網絡編程
  • API
  • C語言
  • 網絡協議
  • BSD
  • Linux
  • 係統編程
  • 網絡通信
想要找书就要到 求知書站
立刻按 ctrl+D收藏本页
你会得到大惊喜!!
店铺: 淮安区新华书店图书专营店
出版社: 人民邮电出版社
ISBN:9787115367198
商品编码:26989786228
包装:平装
开本:16
出版时间:2015-08-01

具体描述


內容介紹
基本信息
書名: UNIX網絡編程(捲1)-套接字聯網API(D3版)
作者: (美)Stevens 開本:
YJ: 129
頁數:
現價: 見1;CY =CY部 齣版時間 2015-08
書號: 9787115367198 印刷時間:
齣版社: 人民郵電齣版社 版次:
商品類型: 正版圖書 印次:
內容提要 作者簡介

  W. Richard Stevens(1951—1999) GJ知名的UNIX和網絡專傢,備受贊譽的技術作傢。生前著有《TCP/IP詳解》(三捲)、《UNIX環境GJ編程》和《UNIX網絡編程》(兩捲),均為不朽的經典著作。

  Bill Fenner AT&T;實驗室主任研究員,專攻IP多播、網絡管理和測量,他是IETF路由的領域主管之一,是RFC標準文檔的批準人。

  Andrew M. Rudoff Sun公司ZS軟件工程師,專攻網絡、操作係統內核、文件係統和高可用性軟件體係結構。

精彩導讀 目錄

D一部分 簡介和TCP/IP
D1章 簡介 
1.1 概述 
1.2 一個簡單的時間獲取客戶程序 
1.3 協議無關性 
1.4 錯誤處理:包裹函數 
1.5 一個簡單的時間獲取服務器程序 
1.6 本書中客戶/服務器程序示例索引錶 
1.7 OSI模型 
1.8 BSD網絡支持曆史 
1.9 測試用網絡及主機 
1.10 Unix標準 
1.11 64位體係結構 
1.12 小結 
習題 
D2章 傳輸層:TCP、UDP和SCTP 
2.1 概述 
2.2 總圖 
2.3 用戶數據報協議(UDP) 
2.4 傳輸控製協議(TCP) 
2.5 流控製傳輸協議(SCTP) 
2.6 TCP連接的建立和終止 
2.7 TIME_WAIT狀態 
2.8 SCTP關聯的建立和終止 
2.9 端口號 
2.10 TCP端口號與並發服務器 
2.11 緩衝區大小及限製 
2.12 標準因特網服務 
2.13 常見因特網應用的協議使用 
2.14 小結 
習題 
D二部分 基本套接字編程
D3章 套接字編程簡介 
3.1 概述 
3.2 套接字地址結構 
3.3 值—結果參數 
3.4 字節排序函數 
3.5 字節操縱函數 
3.6 inet_aton、inet_addr和inet_ntoa函數 
3.7 inet_pton和inet_ntop函數 
3.8 sock_ntop和相關函數 
3.9 readn、writen和readline函數 
3.10 小結 
習題 
D4章 基本TCP套接字編程 
4.1 概述 
4.2 socket函數 
4.3 connect函數 
4.4 bind函數 
4.5 listen函數 
4.6 accept函數 
4.7 fork和exec函數 
4.8 並發服務器 
4.9 close函數 
4.10 getsockname和getpeername函數 
4.11 小結 
習題 
D5章 TCP客戶/服務器程序示例 
5.1 概述 
5.2 TCP迴射服務器程序:main函數 
5.3 TCP迴射服務器程序:str_echo函數 
5.4 TCP迴射客戶程序:main函數 
5.5 TCP迴射客戶程序:str_cli函數 
5.6 正常啓動 
5.7 正常終止 
5.8 POSIX信號處理 
5.9 處理SIGCHLD信號 
5.10 wait和waitpid函數 
5.11 accept返迴前連接中止 
5.12 服務器進程終止 
5.13 SIGPIPE信號 
5.14 服務器主機崩潰 
5.15 服務器主機崩潰後重啓 
5.16 服務器主機關機 
5.17 TCP程序例子小結 
5.18 數據格式 
5.19 小結 
習題 
D6章 I/O復用:select和poll函數 
6.1 概述 
6.2 I/O模型 
6.3 select函數 
6.4 str_cli函數(修訂版) 
6.5 批量輸入 
6.6 shutdown函數 
6.7 str_cli函數(再修訂版) 
6.8 TCP迴射服務器程序(修訂版) 
6.9 pselect函數 
6.10 poll函數 
6.11 TCP迴射服務器程序(再修訂版) 
6.12 小結 
習題 
D7章 套接字選項 
7.1 概述 
7.2 getsockopt和setsockopt函數 
7.3 檢查選項是否受支持並獲取默認值 
7.4 套接字狀態 
7.5 通用套接字選項 
7.6 IPv4套接字選項 
7.7 ICMPv6套接字選項 
7.8 IPv6套接字選項 
7.9 TCP套接字選項 
7.10 SCTP套接字選項 
7.11 fcntl函數 
7.12 小結 
習題 
D8章 基本UDP套接字編程 
8.1 概述 
8.2 recvfrom和sendto函數 
8.3 UDP迴射服務器程序:main函數 
8.4 UDP迴射服務器程序:dg_echo函數 
8.5 UDP迴射客戶程序:main函數 
8.6 UDP迴射客戶程序:dg_cli函數 
8.7 數據報的丟失 
8.8 驗證接收到的響應 
8.9 服務器進程未運行 
8.10 UDP程序例子小結 
8.11 UDP的connect函數 
8.12 dg_cli函數(修訂版) 
8.13 UDP缺乏流量控製 
8.14 UDP中的外齣接口的確定 
8.15 使用select函數的TCP和UDP迴射服務器程序 
8.16 小結 
習題 
D9章 基本SCTP套接字編程 
9.1 概述 
9.2 接口模型 
9.3 sctp_bindx函數 
9.4 sctp_connectx函數 
9.5 sctp_getpaddrs函數 
9.6 sctp_freepaddrs函數 
9.7 sctp_getladdrs函數 
9.8 sctp_freeladdrs函數 
9.9 sctp_sendmsg函數 
9.10 sctp_recvmsg函數 
9.11 sctp_opt_info函數 
9.12 sctp_peeloff函數 
9.13 shutdown函數 
9.14 通知 
9.15 小結 
習題 
D10章 SCTP客戶/服務器程序例子 
10.1 概述 
10.2 SCTP一到多式流分迴射服務器程序:main函數 
10.3 SCTP一到多式流分迴射客戶程序:main函數 
10.4 SCTP流分迴射客戶程序:sctpstr_cli函數 
10.5 探究頭端阻塞 
10.6 控製流的數目 
10.7 控製終結 
10.8 小結 
習題 
D11章 名字與地址轉換 
11.1 概述 
11.2 域名係統 
11.3 gethostbyname函數 
11.4 gethostbyaddr函數 
11.5 getservbyname和getservbyport函數 
11.6 getaddrinfo函數 
11.7 gai_strerror函數 
11.8 freeaddrinfo函數 
11.9 getaddrinfo函數:IPv6 
11.10 getaddrinfo函數:例子 
11.11 host_serv函數 
11.12 tcp_connect函數 
11.13 tcp_listen函數 
11.14 udp_client函數 
11.15 udp_connect函數 
11.16 udp_server函數 
11.17 getnameinfo函數 
11.18 可重入函數 
11.19 gethostbyname_r和gethostbyaddr_r函數 
11.20 作廢的IPv6地址解析函數 
11.21 其他網絡相關信息 
11.22 小結 
習題 
D三部分 GJ套接字編程
D12章 IPv4與IPv6的互操作性 
12.1 概述 
12.2 IPv4客戶與IPv6服務器 
12.3 IPv6客戶與IPv4服務器 
12.4 IPv6地址測試宏 
12.5 源代碼可移植性 
12.6 小結 
習題 
D13章 守護進程和inetdCJ服務器 
13.1 概述 
13.2 syslogd守護進程 
13.3 syslog函數 
13.4 daemon_init函數 
13.5 inetd守護進程 
13.6 daemon_inetd函數 
13.7 小結 
習題 
D14章 GJI/O函數 
14.1 概述 
14.2 套接字超時 
14.3 recv和send函數 
14.4 readv和writev函數 
14.5 recvmsg和sendmsg函數 
14.6 輔助數據 
14.7 排隊的數據量 
14.8 套接字和標準I/O 
14.9 GJ輪詢技術 
14.10 T/TCP:事務目的TCP 
14.11 小結 
習題 
D15章 Unix域協議 
15.1 概述 
15.2 Unix域套接字地址結構 
15.3 socketpair函數 
15.4 套接字函數 
15.5 Unix域字節流客戶/服務器程序 
15.6 Unix域數據報客戶/服務器程序 
15.7 描述符傳遞 
15.8 接收發送者的憑證 
15.9 小結 
習題 
D16章 非阻塞式I/O 
16.1 概述 
16.2 非阻塞讀和寫:str_cli函數(修訂版) 
16.3 非阻塞connect 
16.4 非阻塞connect:時間獲取客戶程序 
16.5 非阻塞connect:Web客戶程序 
16.6 非阻塞accept 
16.7 小結 
習題 
D17章 ioctl操作 
17.1 概述 
17.2 ioctl函數 
17.3 套接字操作 
17.4 文件操作 
17.5 接口配置 
17.6 get_ifi_info函數 
17.7 接口操作 
17.8 ARP高速緩存操作 
17.9 路由錶操作 
17.10 小結 
習題 
D18章 路由套接字 
18.1 概述 
18.2 數據鏈路套接字地址結構 
18.3 讀和寫 
18.4 sysctl操作 
18.5 get_ifi_info函數 
18.6 接口名字和索引函數 
18.7 小結 
習題 
D19章 密鑰管理套接字 
19.1 概述 
19.2 讀和寫 
19.3 傾瀉安全關聯數據庫 
19.4 創建靜態安全關聯 
19.5 動態維護安全關聯 
19.6 小結 
習題 
D20章 廣播 
20.1 概述 
20.2 廣播地址 
20.3 單播和廣播的比較 
20.4 使用廣播的dg_cli函數 
20.5 競爭狀態 
20.6 小結 
習題 
D21章 多播 
21.1 概述 
21.2 多播地址 
21.3 局域網上多播和廣播的比較 
21.4 廣域網上的多播 
21.5 源特定多播 
21.6 多播套接字選項 
21.7 mcast_join和相關函數 
21.8 使用多播的dg_cli函數 
21.9 接收IP多播基礎設施會話聲明 
21.10 發送和接收 
21.11 SNTP:簡單網絡時間協議 
21.12 小結 
習題 
D22章 GJUDP套接字編程 
22.1 概述 
22.2 接收標誌、目的IP地址和接口索引 
22.3 數據報截斷 
22.4 何時用UDP代替TCP 
22.5 給UDP應用增加可靠性 
22.6 捆綁接口地址 
22.7 並發UDP服務器 
22.8 IPv6分組信息 
22.9 IPv6路徑MTU控製 
22.10 小結 
習題 
D23章 GJSCTP套接字編程 
23.1 概述 
23.2 自動關閉的一到多式服務器程序 
 ……
D31章 流
附錄
參考文獻
索引


暫時沒有目錄,請見諒!

穿越代碼的迷宮,掌握網絡世界的語言 在信息爆炸的數字時代,網絡如同一個龐大而復雜的生態係統,而驅動這一切運轉的,正是那些看不見的連接、流淌的數據以及支撐它們運行的精巧 API。如果你渴望深入理解這個世界的運作機製,不僅能熟練使用網絡工具,更能親手構建、優化和管理網絡應用,那麼,一本能夠為你揭示網絡編程核心奧秘的寶典將是你不可或缺的夥伴。 本書並非對某個特定領域的淺嘗輒止,而是為你打開一扇通往網絡編程核心領域的大門,讓你窺探那些構成現代互聯網基石的底層技術。它將帶領你走齣概念的雲霧,走進代碼的殿堂,用最直觀、最實用的方式,讓你理解網絡是如何工作的,以及你如何能夠駕馭這種力量。 從零開始,構建你的網絡認知體係 想象一下,你不再是僅僅依賴瀏覽器、終端或其他應用程序來“上網”,而是能夠理解數據包如何穿越茫茫網絡,如何被路由,如何被解析。本書將從最基礎的概念講起,循序漸進地為你構建起一個堅實的網絡認知體係。 通信的基石:協議的世界 首先,我們將深入探討網絡通信的語言——協議。你將瞭解 TCP/IP 協議族,這個現代互聯網的基石。從 IP 地址和端口號的含義,到 TCP 的三次握手和四次揮手是如何確保可靠連接的,再到 UDP 如何以其速度和簡潔性在特定場景下發揮作用,我們將一一剖析。你將理解這些協議在數據傳輸過程中扮演的關鍵角色,以及它們如何協同工作,將你的指令轉化為可執行的網絡操作。 API 的力量:連接的橋梁 然而,理解協議隻是第一步。真正讓你能夠“編程”網絡的,是那些隱藏在係統深處的應用程序接口(API)。本書將聚焦於核心的網絡編程 API,讓你掌握構建網絡應用程序所必需的工具。你將學習到如何使用套接字(sockets),這是網絡通信的基本抽象。從創建套接字,到綁定地址,到監聽連接,到建立連接,再到發送和接收數據,每一個步驟都將通過詳實的解釋和精煉的代碼示例來闡述。 麵嚮連接的嚴謹:TCP 套接字編程 TCP,以其可靠性和麵嚮連接的特性,是構建大多數網絡應用的基礎。本書將花費大量篇幅來講解 TCP 套接字編程。你將學習如何使用 `socket()`、`bind()`、`listen()`、`accept()`、`connect()`、`send()`、`recv()` 等函數,構建一個完整的客戶端-服務器模型。無論是簡單的迴顯服務器,還是更復雜的聊天應用,你都將能夠通過本書的指導,親手實現。我們將探討如何處理阻塞和非阻塞 I/O,如何管理套接字選項,以及如何確保數據的有序和可靠傳輸。 麵嚮無連接的效率:UDP 套接字編程 與 TCP 的嚴謹不同,UDP 則以其速度和簡便性吸引著特定的應用場景。本書也將帶你領略 UDP 套接字編程的魅力。你將學習如何使用 `sendto()` 和 `recvfrom()` 函數,在無需建立持久連接的情況下進行數據傳輸。你將理解 UDP 的“盡力而為”的特性,以及在何時選擇 UDP 而非 TCP 的考量。 實戰為王:從基礎到進階的深度探索 本書的價值不僅在於理論的闡述,更在於它對實踐的強調。每一個概念的引入,都伴隨著清晰、可執行的代碼示例。這些示例並非孤立存在,而是相互關聯,逐漸構建起一個完整的網絡應用開發框架。 構建你的第一個服務器 你將從構建一個簡單的 TCP 迴顯服務器開始,理解客戶端如何連接到服務器,以及服務器如何接收並原樣返迴客戶端發送的數據。這將是你邁齣的第一步,也是最重要的一步,讓你親身感受到網絡編程的直觀性。 多用戶協作:並發服務器的挑戰 當一個服務器需要同時服務多個客戶端時,並發問題便浮齣水麵。本書將深入探討如何實現並發服務器。你將學習到多種並發模型,包括: 多進程模型: 為每個客戶端創建一個獨立的進程,理解進程間通信和資源管理的挑戰。 多綫程模型: 為每個客戶端創建一個獨立的綫程,掌握綫程同步和共享資源訪問的注意事項。 事件驅動模型(Select/Poll/Epoll): 學習如何使用 I/O 多路復用技術,用一個進程或綫程高效地處理大量並發連接,理解其在性能優化上的優勢。 網絡中的數據安全與優化 在網絡通信中,安全性是不可忽視的因素。本書將涉及一些基礎的安全概念,以及如何通過 API 的閤理使用來增強程序的健壯性。同時,你還將學習到如何優化你的網絡應用,提高其性能和效率,例如: 緩衝區的管理: 理解發送和接收緩衝區的作用,以及如何有效利用它們。 套接字選項的調優: 探索各種套接字選項,如 `SO_REUSEADDR`、`SO_KEEPALIVE` 等,瞭解它們對網絡性能的影響。 優雅地關閉連接: 學習如何正確地關閉套接字連接,避免資源泄露。 超越 API:理解底層原理的視角 本書的另一個重要亮點在於,它不僅僅局限於 API 的使用,更會帶你深入理解這些 API 背後的工作原理。你將接觸到: 內核的角色: 理解操作係統內核在網絡通信中的作用,以及套接字 API 如何與內核進行交互。 數據流的軌跡: 追蹤數據在用戶空間和內核空間之間的流動,理解係統調用的開銷。 網絡協議棧的剖析: 對 TCP/IP 協議棧進行更深入的分析,理解分層模型是如何工作的。 為你的技術生涯增添一份堅實的力量 掌握瞭本書的內容,你將獲得不僅僅是一份技能,更是一種解決問題的能力,一種構建復雜係統的信心。無論你是想成為一名專業的網絡工程師、後端開發者,還是對操作係統底層原理充滿好奇的研究者,本書都將為你提供一條清晰的學習路徑。 它將幫助你: 編寫更高效、更可靠的網絡應用程序。 深入理解現有網絡服務的運作機製。 診斷和解決復雜的網絡問題。 為你的技術簡曆增添一份極具競爭力的內容。 這本書是你通往網絡編程世界的鑰匙。它將用最嚴謹的知識,最貼近實戰的方式,點燃你對網絡世界的探索熱情,讓你從一個網絡的“使用者”蛻變為一個網絡的“創造者”。現在,就讓我們一起踏上這段激動人心的旅程,用代碼編織齣屬於你的網絡未來。

用户评价

评分

這本書的內容比我想象的要更加深入和全麵。它不僅僅是關於套接字API的“怎麼用”,更是關於“為什麼這麼用”的哲學思考。我特彆欣賞作者在講解一些復雜概念時,會引經據典,參考大量的RFC文檔和實際的操作係統內核行為,這使得書中介紹的知識點都非常有說服力,並且能夠觸及到更底層的細節。例如,關於TCP的擁塞控製算法,以及TCP的可靠性是如何通過確認、重傳和排序等機製來實現的,這些內容對我來說是全新的,也讓我對網絡的健壯性有瞭更深的理解。還有書中關於信號處理在網絡編程中的應用,以及如何處理EINTR錯誤,這些都是在實際開發中經常會遇到的問題,但往往在初學者看來很棘手。這本書把這些難點都一一化解瞭,並且提供瞭非常清晰的解決方案。我甚至覺得,這本書不僅僅是寫給程序員看的,也適閤網絡協議的研究者,或者任何對網絡通信底層原理感興趣的人。我曾經花瞭很多時間在網上搜索類似的內容,但始終沒有找到像這本書這樣係統、權威的講解。

评分

這本書真的是一次令人興奮的學習體驗。它不僅僅是關於API的介紹,更像是一本網絡編程的“武功秘籍”,教會瞭我如何運用強大的力量來構建復雜的網絡應用。我特彆喜歡書中的一些“陷阱”和“誤區”的討論,作者會指齣許多初學者容易犯的錯誤,並給齣避免這些錯誤的方法,這大大節省瞭我試錯的時間。例如,關於send()和write()的區彆,以及recv()和read()的細微差彆,這些細節看似微小,但在實際的並發編程中卻可能引發難以預料的問題。書中對網絡地址結構體的講解也十分細緻,包括IPv4和IPv6的轉換,以及一些特殊的地址類型,都為我理解網絡通信的地址錶示提供瞭清晰的框架。我尤其贊賞作者對於TCP數據流和UDP數據報的區分講解,這對於理解兩種協議的不同行為模式至關重要。這本書讓我明白,網絡編程並非簡單的函數調用,而是一門需要深入理解協議、操作係統以及並發模型纔能掌握的藝術。

评分

讀這本書的過程,充滿瞭“原來如此”的頓悟時刻。它把我曾經模糊的網絡概念一一梳理清楚,並且給予瞭我解決實際問題的有力武器。我特彆喜歡作者對於網絡錯誤處理的講解,書中列舉瞭大量可能齣現的錯誤碼,並且解釋瞭它們産生的原因以及相應的處理策略,這讓我在麵對復雜的網絡故障時,能夠更加從容地定位問題。例如,關於連接被拒絕、連接超時、文件描述符溢齣等等,這些都是開發中常見的難題,但這本書都給齣瞭非常實用的解決方案。而且,書中還涉及到瞭一些與網絡相關的係統調用,比如ioctl(),以及如何使用select()、poll()來處理多個文件描述符,這些都極大地拓展瞭我的編程能力。我感覺這本書的價值遠不止於套接字API本身,它更是為我打開瞭一扇通往更廣闊的係統編程和並發編程世界的大門,讓我對如何構建高效、可靠的網絡服務有瞭全新的認識和信心。

评分

這本書的寫作風格非常獨特,它以一種非常沉浸式的方式帶領讀者進入到網絡編程的世界。我感覺自己就像是跟著一位經驗豐富的工程師在一步步構建和調試網絡程序。書中對每一個API的講解都配有大量的圖示和流程圖,這對於理解抽象的網絡概念非常有幫助。例如,在講解TCP服務器的並發模型時,作者詳細對比瞭多進程、多綫程以及基於事件驅動的模型,並對它們各自的優缺點進行瞭深入的分析,甚至還討論瞭如何通過一些高級技術來進一步優化性能。我印象特彆深刻的是關於域名解析和DNS的工作原理的章節,作者沒有停留在僅僅調用gethostbyname()這個函數,而是詳細地闡述瞭DNS查詢的過程,包括遞歸查詢和迭代查詢,以及緩存的作用,這讓我對整個互聯網的通信流程有瞭更宏觀的認識。而且,書中還涉及瞭許多關於網絡安全的基礎知識,雖然不是本書的重點,但作者也給齣瞭重要的提醒,這對於我們編寫健壯的網絡程序至關重要。

评分

剛拿到這本書,翻開目錄就被深深吸引住瞭。感覺就像是進入瞭一個全新的領域,原本我對網絡編程的理解還停留在一些很基礎的協議層麵,但這本書一下子把我的視野打開瞭。裏麵關於套接字API的介紹,從最基本的socket()、bind()、listen()、accept(),到connect(),每一個函數都講解得非常透徹。不僅僅是API的調用方法,作者還深入剖析瞭它們在TCP和UDP協議下的具體實現機製,比如TCP的連接建立過程,三次握閤四次揮手的細節,以及UDP的無連接特性帶來的優勢和劣勢。讀到關於阻塞和非阻塞I/O的部分,更是讓我醍醐灌頂,原來之前很多網絡程序效率不高的原因就在於此。書中的例子代碼也很實用,跟著敲一遍,再稍微修改一下,就能跑齣符閤自己設想的網絡通信程序,這種成就感是無與倫比的。特彆是對epoll這種高效的I/O多路復用機製的講解,簡直是為我打開瞭一扇新世界的大門,感覺以後寫高性能的網絡服務程序有瞭堅實的基礎。而且,作者的語言風格雖然嚴謹,但並不枯燥,很多地方都能感受到他對技術的熱情和思考,讀起來非常有啓發性。

相关图书

本站所有內容均為互聯網搜索引擎提供的公開搜索信息,本站不存儲任何數據與內容,任何內容與數據均與本站無關,如有需要請聯繫相關搜索引擎包括但不限於百度google,bing,sogou

© 2025 tushu.tinynews.org All Rights Reserved. 求知書站 版权所有