UNIX網絡編程 卷1 套接字聯(lián)網API 第3版
定 價:169 元
本書是UNIX網絡編程的經典之作。書中全面深入地介紹了如何使用套接字API進行網絡編程。全書不但介紹了基本編程內容,還涵蓋了與套接字編程相關的高級主題,對于客戶 服務器程序的各種設計方法也作了完整的探討,*后還深入分析了流這種設備驅動機制。 本書內容詳盡且具權威性,幾乎每章都提供精選的習題,并提供了部分習題的答案,是網絡研究和開發(fā)人員理想的參考書。
1. UNIX網絡專家W. Richard Stevens的傳世之作。 2. 世界著名網絡專家Bill Fenner和Andrew M. Rudoff執(zhí)筆,根據(jù)網絡技術的發(fā)展,進行全面修訂。 這是一部傳世之作!網絡編程專家Bill Fenner和Andrew M.Rudoff 應邀執(zhí)筆,對W.RichardStevens 的作品進行修訂。書中吸納了近幾年網絡技術的發(fā)展,增添了IPv6、SCTP 協(xié)議和密鑰管理套接字等內容,深入討論了關鍵標準、實現(xiàn)和技術。 書中的所有示例都是在UNIX 系統(tǒng)上測試通過的真實的、可運行的代碼,繼承了Stevens 一直強調的理念:學習網絡編程的*好方法就是下載這些程序,對其進行修改和改進,只有這樣實際編寫代碼才能深入理解有關概念和方法。 本書為UNIX 網絡編程提供全面的指導,是網絡研究和開發(fā)人員公認的必不可少的參考書,無論網絡編程的初學者還是網絡專家都會大受裨益。
W. 理查德·史蒂文斯(W. Richard Stevens)(19511999) 國際知名的UNIX和網絡專家,備受贊譽的技術作家。生前著有《TCP IP詳解》(三卷)、《UNIX環(huán)境高級編程》和《UNIX網絡編程》(兩卷),均為不朽的經典著作。 比爾·芬納(Bill Fenner) AT&T實驗室主任研究員,專攻IP多播、網絡管理和測量,他是IETF路由的領域主管之一,是RFC標準文檔的批準人。 安德魯·M. 魯?shù)婪颍ˋndrew M.Rudoff) Sun公司資深軟件工程師,專攻網絡、操作系統(tǒng)內核、文件系統(tǒng)和高可用性軟件體系結構。
目 錄第 一部分 簡介和TCP IP第 1章 簡介 21.1 概述 21.2 一個簡單的時間獲取客戶程序 51.3 協(xié)議無關性 91.4 錯誤處理:包裹函數(shù) 101.5 一個簡單的時間獲取服務器程序 121.6 本書中客戶 服務器程序示例索引表 141.7 OSI模型 161.8 BSD網絡支持歷史 171.9 測試用網絡及主機 191.10 Unix標準 221.11 64位體系結構 241.12 小結 25習題 25第 2章 傳輸層:TCP、UDP和SCTP 272.1 概述 272.2 總圖 272.3 用戶數(shù)據(jù)報協(xié)議(UDP) 292.4 傳輸控制協(xié)議(TCP) 302.5 流控制傳輸協(xié)議(SCTP) 312.6 TCP連接的建立和終止 312.7 TIME_WAIT狀態(tài) 372.8 SCTP關聯(lián)的建立和終止 382.9 端口號 422.10 TCP端口號與并發(fā)服務器 432.11 緩沖區(qū)大小及限制 452.12 標準因特網服務 502.13 常見因特網應用的協(xié)議使用 512.14 小結 52習題 53第二部分 基本套接字編程第3章 套接字編程簡介 563.1 概述 563.2 套接字地址結構 563.3 值結果參數(shù) 613.4 字節(jié)排序函數(shù) 633.5 字節(jié)操縱函數(shù) 663.6 inet_aton、inet_addr和inet_ntoa函數(shù) 673.7 inet_pton和inet_ntop函數(shù) 683.8 sock_ntop和相關函數(shù) 703.9 readn、writen和readline函數(shù) 723.10 小結 76習題 76第4章 基本TCP套接字編程 774.1 概述 774.2 socket函數(shù) 774.3 connect函數(shù) 804.4 bind函數(shù) 814.5 listen函數(shù) 844.6 accept函數(shù) 884.7 fork和exec函數(shù) 904.8 并發(fā)服務器 914.9 close函數(shù) 934.10 getsockname和getpeername函數(shù) 944.11 小結 96習題 96第5章 TCP客戶 服務器程序示例 975.1 概述 975.2 TCP回射服務器程序:main函數(shù) 975.3 TCP回射服務器程序:str_echo函數(shù) 985.4 TCP回射客戶程序:main函數(shù) 995.5 TCP回射客戶程序:str_cli函數(shù) 1005.6 正常啟動 1015.7 正常終止 1025.8 POSIX信號處理 1035.9 處理SIGCHLD信號 1065.10 wait和waitpid函數(shù) 1085.11 accept返回前連接中止 1115.12 服務器進程終止 1125.13 SIGPIPE信號 1135.14 服務器主機崩潰 1145.15 服務器主機崩潰后重啟 1155.16 服務器主機關機 1165.17 TCP程序例子小結 1165.18 數(shù)據(jù)格式 1175.19 小結 120習題 120第6章 I O復用:select和poll函數(shù) 1226.1 概述 1226.2 I O模型 1226.3 select函數(shù) 1276.4 str_cli函數(shù)(修訂版) 1326.5 批量輸入 1336.6 shutdown函數(shù) 1366.7 str_cli函數(shù)(再修訂版) 1376.8 TCP回射服務器程序(修訂版) 1386.9 pselect函數(shù) 1426.10 poll函數(shù) 1446.11 TCP回射服務器程序(再修訂版) 1466.12 小結 148習題 149第7章 套接字選項 1507.1 概述 1507.2 getsockopt和setsockopt函數(shù) 1507.3 檢查選項是否受支持并獲取默認值 1527.4 套接字狀態(tài) 1567.5 通用套接字選項 1567.6 IPv4套接字選項 1687.7 ICMPv6套接字選項 1697.8 IPv6套接字選項 1697.9 TCP套接字選項 1717.10 SCTP套接字選項 1737.11 fcntl函數(shù) 1827.12 小結 184習題 184第8章 基本UDP套接字編程 1868.1 概述 1868.2 recvfrom和sendto函數(shù) 1878.3 UDP回射服務器程序:main函數(shù) 1878.4 UDP回射服務器程序:dg_echo函數(shù) 1888.5 UDP回射客戶程序:main函數(shù) 1908.6 UDP回射客戶程序:dg_cli函數(shù) 1908.7 數(shù)據(jù)報的丟失 1918.8 驗證接收到的響應 1918.9 服務器進程未運行 1938.10 UDP程序例子小結 1948.11 UDP的connect函數(shù) 1968.12 dg_cli函數(shù)(修訂版) 1998.13 UDP缺乏流量控制 2008.14 UDP中的外出接口的確定 2038.15 使用select函數(shù)的TCP和UDP回射服務器程序 2048.16 小結 206習題 207第9章 基本SCTP套接字編程 2089.1 概述 2089.2 接口模型 2089.3 sctp_bindx函數(shù) 2129.4 sctp_connectx函數(shù) 2139.5 sctp_getpaddrs函數(shù) 2139.6 sctp_freepaddrs函數(shù) 2139.7 sctp_getladdrs函數(shù) 2149.8 sctp_freeladdrs函數(shù) 2149.9 sctp_sendmsg函數(shù) 2149.10 sctp_recvmsg函數(shù) 2159.11 sctp_opt_info函數(shù) 2159.12 sctp_peeloff函數(shù) 2169.13 shutdown函數(shù) 2169.14 通知 2179.15 小結 221習題 222第 10章 SCTP客戶 服務器程序例子 22310.1 概述 22310.2 SCTP一到多式流分回射服務器程序:main函數(shù) 22310.3 SCTP一到多式流分回射客戶程序:main函數(shù) 22510.4 SCTP流分回射客戶程序:sctpstr_cli函數(shù) 22610.5 探究頭端阻塞 22810.6 控制流的數(shù)目 23310.7 控制終結 23310.8 小結 234習題 235第 11章 名字與地址轉換 23611.1 概述 23611.2 域名系統(tǒng) 23611.3 gethostbyname函數(shù) 23911.4 gethostbyaddr函數(shù) 24211.5 getservbyname和getservbyport函數(shù) 24211.6 getaddrinfo函數(shù) 24511.7 gai_strerror函數(shù) 25011.8 freeaddrinfo函數(shù) 25111.9 getaddrinfo函數(shù):IPv6 25111.10 getaddrinfo函數(shù):例子 25311.11 host_serv函數(shù) 25411.12 tcp_connect函數(shù) 25411.13 tcp_listen函數(shù) 25711.14 udp_client函數(shù) 26111.15 udp_connect函數(shù) 26311.16 udp_server函數(shù) 26411.17 getnameinfo函數(shù) 26611.18 可重入函數(shù) 26711.19 gethostbyname_r和gethostbyaddr_r函數(shù) 27011.20 作廢的IPv6地址解析函數(shù) 27111.21 其他網絡相關信息 27211.22 小結 273習題 274第三部分 高級套接字編程第 12章 IPv4與IPv6的互操作性 27812.1 概述 27812.2 IPv4客戶與IPv6服務器 27812.3 IPv6客戶與IPv4服務器 28112.4 IPv6地址測試宏 28312.5 源代碼可移植性 28412.6 小結 284習題 285第 13章 守護進程和inetd超級服務器 28613.1 概述 28613.2 syslogd守護進程 28613.3 syslog函數(shù) 28713.4 daemon_init函數(shù) 28913.5 inetd守護進程 29313.6 daemon_inetd函數(shù) 29713.7 小結 299習題 299第 14章 高級I O函數(shù) 30014.1 概述 30014.2 套接字超時 30014.3 recv和send函數(shù) 30514.4 readv和writev函數(shù) 30614.5 recvmsg和sendmsg函數(shù) 30714.6 輔助數(shù)據(jù) 31014.7 排隊的數(shù)據(jù)量 31314.8 套接字和標準I O 31314.9 高級輪詢技術 31614.10 T TCP:事務目的TCP 32014.11 小結 322習題 323第 15章 Unix域協(xié)議 32415.1 概述 32415.2 Unix域套接字地址結構 32415.3 socketpair函數(shù) 32615.4 套接字函數(shù) 32715.5 Unix域字節(jié)流客戶 服務器程序 32715.6 Unix域數(shù)據(jù)報客戶 服務器程序 32915.7 描述符傳遞 33015.8 接收發(fā)送者的憑證 33715.9 小結 340習題 340第 16章 非阻塞式I O 34116.1 概述 34116.2 非阻塞讀和寫:str_cli函數(shù)(修訂版) 34216.3 非阻塞connect 35116.4 非阻塞connect:時間獲取客戶程序 35216.5 非阻塞connect:Web客戶程序 35416.6 非阻塞accept 36216.7 小結 363習題 363第 17章 ioctl操作 36517.1 概述 36517.2 ioctl函數(shù) 36517.3 套接字操作 36617.4 文件操作 36717.5 接口配置 36717.6 get_ifi_info函數(shù) 36917.7 接口操作 37817.8 ARP高速緩存操作 37817.9 路由表操作 38017.10 小結 381習題 381第 18章 路由套接字 38218.1 概述 38218.2 數(shù)據(jù)鏈路套接字地址結構 38218.3 讀和寫 38318.4 sysctl操作 39018.5 get_ifi_info函數(shù) 39418.6 接口名字和索引函數(shù) 39718.7 小結 401習題 401第 19章 密鑰管理套接字 40219.1 概述 40219.2 讀和寫 40319.3 傾瀉安全關聯(lián)數(shù)據(jù)庫 40419.4 創(chuàng)建靜態(tài)安全關聯(lián) 40719.5 動態(tài)維護安全關聯(lián) 41219.6 小結 415習題 416第 20章 廣播 41720.1 概述 41720.2 廣播地址 41820.3 單播和廣播的比較 41920.4 使用廣播的dg_cli函數(shù) 42220.5 競爭狀態(tài) 42420.6 小結 431習題 432第 21章 多播 43321.1 概述 43321.2 多播地址 43321.3 局域網上多播和廣播的比較 43621.4 廣域網上的多播 43821.5 源特定多播 44021.6 多播套接字選項 44121.7 mcast_join和相關函數(shù) 44521.8 使用多播的dg_cli函數(shù) 45021.9 接收IP多播基礎設施會話聲明 45121.10 發(fā)送和接收 45421.11 SNTP:簡單網絡時間協(xié)議 45721.12 小結 461習題 461第 22章 高級UDP套接字編程 46222.1 概述 46222.2 接收標志、目的IP地址和接口索引 46222.3 數(shù)據(jù)報截斷 46722.4 何時用UDP代替TCP 46722.5 給UDP應用增加可靠性 46922.6 捆綁接口地址 47822.7 并發(fā)UDP服務器 48222.8 IPv6分組信息 48322.9 IPv6路徑MTU控制 48622.10 小結 487習題 488第 23章 高級SCTP套接字編程 48923.1 概述 48923.2 自動關閉的一到多式服務器程序 48923.3 部分遞送 49023.4 通知 49223.5 無序的數(shù)據(jù) 49523.6 捆綁地址子集 49623.7 確定對端和本端地址信息 49723.8 給定IP地址找出關聯(lián)ID 50023.9 心搏和地址不可達 50123.10 關聯(lián)剝離 50223.11 定時控制 50323.12 何時改用SCTP代替TCP 50523.13 小結 506習題 506第 24章 帶外數(shù)據(jù) 50724.1 概述 50724.2 TCP帶外數(shù)據(jù) 50724.3 sockatmark函數(shù) 51324.4 TCP帶外數(shù)據(jù)小結 51924.5 客戶 服務器心搏函數(shù) 52024.6 小結 524習題 524第 25章 信號驅動式I O 52525.1 概述 52525.2 套接字的信號驅動式I O 52525.3 使用SIGIO的UDP回射服務器程序 52725.4 小結 532習題 533第 26章 線程 53426.1 概述 53426.2 基本線程函數(shù):創(chuàng)建和終止 53526.3 使用線程的str_cli函數(shù) 53726.4 使用線程的TCP回射服務器程序 53826.5 線程特定數(shù)據(jù) 54226.6 Web客戶與同時連接 54926.7 互斥鎖 55226.8 條件變量 55526.9 Web客戶與同時連接(續(xù)) 55826.10 小結 560習題 560第 27章 IP選項 56127.1 概述 56127.2 IPv4選項 56127.3 IPv4源路徑選項 56227.4 IPv6擴展首部 56927.5 IPv6步跳選項和目的地選項 56927.6 IPv6路由首部 57327.7 IPv6粘附選項 57727.8 歷史性IPv6高級API 57827.9 小結 579習題 579第 28章 原始套接字 58028.1 概述 58028.2 原始套接字創(chuàng)建 58028.3 原始套接字輸出 58128.4 原始套接字輸入 58228.5 ping程序 58428.6 traceroute程序 59628.7 一個ICMP消息守護程序 60828.8 小結 622習題 622第 29章 數(shù)據(jù)鏈路訪問 62329.1 概述 62329.2 BPF:BSD分組過濾器 62329.3 DLPI:數(shù)據(jù)鏈路提供者接口 62529.4 Linux:SOCK_PACKET和PF_PACKET 62629.5 libpcap:分組捕獲函數(shù)庫 62729.6 libnet:分組構造與輸出函數(shù)庫 62729.7 檢查UDP的校驗和字段 62829.8 小結 645習題 645第30章 客戶 服務器程序設計范式 64630.1 概述 64630.2 TCP客戶程序設計范式 64830.3 TCP測試用客戶程序 64930.4 TCP迭代服務器程序 65030.5 TCP并發(fā)服務器程序,每個客戶一個子進程 65030.6 TCP預先派生子進程服務器程序,accept無上鎖保護 65330.7 TCP預先派生子進程服務器程序,accept使用文件上鎖保護 65930.8 TCP預先派生子進程服務器程序,accept使用線程上鎖保護 66230.9 TCP預先派生子進程服務器程序,傳遞描述符 66330.10 TCP并發(fā)服務器程序,每個客戶一個線程 66730.11 TCP預先創(chuàng)建線程服務器程序,每個線程各自accept 66930.12 TCP預先創(chuàng)建線程服務器程序,主線程統(tǒng)一accept 67130.13 小結 673習題 674第31章 流 67531.1 概述 67531.2 概貌 67531.3 getmsg和putmsg函數(shù) 67831.4 getpmsg和putpmsg函數(shù) 67931.5 ioctl函數(shù) 68031.6 TPI:傳輸提供者接口 68031.7 小結 689習題 689附錄A IPv4、IPv6、ICMPv4和ICMPv6 690附錄B 虛擬網絡 704附錄C 調試技術 708附錄D 雜湊的源代碼 714附錄E 精選習題答案 726參考文獻 756索引 763