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

UNIX網絡編程 捲1 套接字聯網API(第3版 英文版) pdf epub mobi txt 電子書 下載 2025

[美] W. 理查德·史蒂文斯(W. Richard Stevens),比爾·芬納(Bill Fenner),安德魯 M. 魯道夫(Andrew M. Rudoff) 著
圖書標籤:
  • UNIX網絡編程
  • 套接字
  • 網絡編程
  • API
  • Sockets
  • 網絡
  • 編程
  • UNIX
  • 網絡
  • 技術
  • 英文版
想要找書就要到 靜流書站
立刻按 ctrl+D收藏本頁
你會得到大驚喜!!
齣版社: 人民郵電齣版社
ISBN:9787115401304
版次:2
商品編碼:11880047
品牌:異步圖書
包裝:平裝
開本:16開
齣版時間:2016-02-01
用紙:膠版紙
頁數:954
正文語種:中文

具體描述

編輯推薦

這是一部傳世之作!網絡編程專傢Bill Fenner和Andrew M. Rudoff應邀執筆,對W. Richard Stevens的經典作品進行修訂。書中吸納瞭近幾年網絡技術的發展,增添瞭IPv6、SCTP協議和密鑰管理套接字等內容,深入討論瞭新的關鍵標準、實現和技術。

書中的所有示例都是在UNIX係統上測試通過的真實的、可運行的代碼,繼承瞭Stevens一直強調的理念:“學習網絡編程的好方法就是下載這些程序,對其進行修改和改進。隻有這樣實際編寫代碼纔能深入理解有關概念和方法。”讀者可以從本書網站下載這些示例的源代碼。

本書為UNIX網絡編程提供全麵的指導,是網絡研究和開發人員公認的參考書,無論網絡編程的初學者還是網絡專傢都會大受裨益。

內容簡介

本書是一部UNIX網絡編程的經典之作。書中全麵深入地介紹瞭如何使用套接字API進行網絡編程。全書不但介紹瞭基本編程內容,還涵蓋瞭與套接字編程相關的高級主題,對於客戶/服務器程序的各種設計方法也作瞭完整的探討,還深入分析瞭流這種設備驅動機製。
本書內容詳盡,幾乎每章都提供精選的習題,並提供瞭部分習題的答案,是網絡研究和開發人員理想的參考書。

作者簡介

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

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

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

目錄

Part 1. Introduction and TCP/IP / 簡介和TCP/IP 1
Chapter 1. Introduction / 簡介 3
1.1 Introduction / 概述 3
1.2 A Simple Daytime Client / 一個簡單的時間獲取客戶程序 6
1.3 Protocol Independence / 協議無關性 10
1.4 Error Handling: Wrapper Functions / 錯誤處理:包裝函數 11
1.5 A Simple Daytime Server / 一個簡單的時間獲取服務器程序 13
1.6 Roadmap to Client/Server Examples in the Text / 本書中客戶/服務器示例的路綫圖 16
1.7 OSI Model / OSI模型 18
1.8 BSD Networking History / BSD網絡曆史 20
1.9 Test Networks and Hosts / 測試用網絡及主機 22
1.10 Unix Standards / Unix標準 25
1.11 64-Bit Architectures / 64位體係結構 28
1.12 Summary / 小結 29
Chapter 2. The Transport Layer: TOP, UDP, and SCTP / 傳輸層:TCP、UDP和SCTP 31
2.1 Introduction / 概述 31
2.2 The Big Picture / 全景圖 32
2.3 User Datagram Protocol (UDP) / 用戶數據報協議 34
2.4 Transmission Control Protocol (TCP) / 傳輸控製協議 35
2.5 Stream Control Transmission Protocol (SCTP) / 流控製傳輸協議 36
2.6 TCP Connection Establishment and Termination / TCP連接的建立和終止 37
2.7 TIME_WAIT State / TIME_WAIT狀態 43
2.8 SCTP Association Establishment and Termination / SCTP關聯的建立和終止 44
2.9 Port Numbers / 端口號 50
2.10 TCP Port Numbers and Concurrent Servers / TCP端口號與並發服務器 52
2.11 Buffer Sizes and Limitations / 緩衝區大小及限製 55
2.12 Standard Internet Services / 標準因特網服務 61
2.13 Protocol Usage by Common Internet Applications / 常見因特網應用所用的協議 62
2.14 Summary / 小結 63
Part 2. Elementary Sockets / 基本套接字 65
Chanter 3. Sockets Introduction / 套接字簡介 67
3.1 Introduction / 概述 67
3.2 Socket Address Structures / 套接字地址結構 67
3.3 Value-Result Arguments / 值-結果參數 74
3.4 Byte Ordering Functions / 字節排序函數 77
3.5 Byte Manipulation Functions / 字節操縱函數 80
3.6 inet_aton, inet_addr, and inet_ntoa Functions / inet_aton、inet_addr和inet_ntoa函數 82
3.7 inet_pton and inet_ntop Functions / inet_pton和inet_ntop函數 83
3.8 sock_ntop and Related Functions / sock_ntop和相關函數 86
3.9 readn, writen, and readline Functions / readn、writen和readline函數 88
3.10 Summary / 小結 92
Chapter 4. Elementary TCP Sockets / 基本TCP套接字 95
4.1 Introduction / 概述 95
4.2 socket Function / socket函數 95
4.3 connect Function / connect函數 99
4.4 bind Function / bind函數 101
4.5 listen Function / listen函數 104
4.6 accept Function / accept函數 109
4.7 fork and exec Functions / fork和exec函數 111
4.8 Concurrent Servers / 並發服務器 114
4.9 close Function / close函數 117
4.10 getsockname and getpeername Functions / getsockname和getpeername函數 117
4.11 Summary / 小結 120
Chapter 5. TCP Client/Server Example / TCP客戶/服務器示例 121
5.1 Introduction / 概述 121
5.2 TCP Echo Server: main Function / TCP迴送服務器程序:main函數 122
5.3 TCP Echo Server: str_echo Function / TCP迴送服務器程序:str_echo函數 123
5.4 TCP Echo Client: main Function / TCP迴送客戶程序:main函數 124
5.5 TCP Echo Client: str_cli Function / TCP迴送客戶程序:str_cli函數 125
5.6 Normal Startup / 正常啓動 126
5.7 Normal Termination / 正常終止 128
5.8 POSIX Signal Handling / POSIX信號處理 129
5.9 Handling SIGCHLD Signals / 處理SIGCHLD信號 132
5.10 wait and waitpid Functions / wait和waitpid函數 135
5.11 Connection Abort before accept Returns / accept返迴前連接異常中止 139
5.12 Termination of Server Process / 服務器進程的終止 141
5.13 SIGPIPE Signal / SIGPIPE信號 142
5.14 Crashing of Server Host / 服務器主機崩潰 144
5.15 Crashing and Rebooting of Server Host / 服務器主機崩潰及重啓 144
5.16 Shutdown of Server Host / 服務器主機關機 145
5.17 Summary of TCP Example / TCP示例小結 146
5.18 Data Format / 數據格式 147
5.19 Summary / 小結 151
Chapter 6. I/O Multiplexing: The select and poll Functions / I/O多路復用:select和poll函數 153
6.1 Introduction / 概述 153
6.2 I/O Models / I/O模型 154
6.3 select Function / select函數 160
6.4 str_cli Function (Revisited) / 再訪str_cli函數 167
6.5 Batch Input and Buffering / 批量輸入和緩衝 169
6.6 shutdown Function / shutdown函數 172
6.7 str_cli Function (Revisited Again) / 三顧str_cli函數 173
6.8 TCP Echo Server (Revisited) / 再訪TCP迴送服務器程序 175
6.9 pselect Function / pselect函數 181
6.10 poll Function / poll函數 182
6.11 TCP Echo Server (Revisited Again) / 三顧TCP迴送服務器程序 185
6.12 Summary / 小結 188
Chapter 7. Socket Options / 套接字選項? 191
7.1 Introduction / 概述 191
7.2 getsockopt and setsockopt Functions / getsockopt和setsockopt函數 192
7.3 Checking if an Option Is Supported and Obtaining the Default / 檢查選項是否被支持並獲取默認值 194
7.4 Socket States / 套接字狀態 198
7.5 Generic Socket Options / 通用套接字選項 198
7.6 IPv4 Socket Options / IPv4套接字選項 214
7.7 ICMPv6 Socket Option / ICMPv6套接字選項 216
7.8 IPv6 Socket Options / IPv6套接字選項 216
7.9 TCP Socket Options / TCP套接字選項 219
7.10 SCTP Socket Options / SCTP套接字選項 222
7.11 fcntl Function / fcntl函數 233
7.12 Summary / 小結 236
Chapter 8. Elementary UDP Sockets / 基本UDP套接字 239
8.1 Introduction / 概述 239
8.2 recvfrom and sendto Functions / recvfrom和sendto函數 240
8.3 UDP Echo Server: main Function / UDP迴送服務器程序:main函數 241
8.4 UDP Echo Server: dg_echo Function / UDP迴送服務器程序:dg_echo函數 242
8.5 UDP Echo Client: main Function / UDP迴送客戶程序:main函數 244
8.6 UDP Echo Client: dg_cli Function / UDP迴送客戶程序:dg_cli函數 245
8.7 Lost Datagrams / 數據報的丟失 245
8.8 Verifying Received Response / 驗證接收到的響應 246
8.9 Server Not Running / 服務器程序未運行 248
8.10 Summary of UDP Example / UDP示例小結 250
8.11 connect Function with UDP / UDP的connect函數 252
8.12 dg_cli Function (Revisited) / 再論dg_cli函數 256
8.13 Lack of Flow Control with UDP / UDP缺乏流量控製 257
8.14 Determining Outgoing Interface with UDP / UDP中的外齣接口的確定 261
8.15 TCP and UDP Echo Server Using select / 使用select函數的TCP和UDP迴送服務器程序 262
8.16 Summary / 小結 264
Chapter 9. Elementary SCTP Sockets / 基本SCTP套接字 267
9.1 Introduction / 概述 267
9.2 Interface Models / 接口模型 268
9.3 sctp_bindx Function / sctp_bindx函數 272
9.4 sctp_connectx Function / sctp_connectx函數 274
9.5 sctp_getpaddrs Function / sctp_getpaddrs函數 275
9.6 sctp_freepaddrs Function / sctp_freepaddrs函數 275
9.7 sctp_getladdrs Function / sctp_getladdrs函數 275
9.8 sctp_freeladdrs Function / sctp_freeladdrs函數 276
9.9 sctp_sendmsg Function / sctp_sendmsg函數 276
9.10 sctp_recvmsg Function / sctp_recvmsg函數 277
9.11 sctp_opt_info Function / sctp_opt_info函數 278
9.12 sctp_peeloff Function / sctp_peeloff函數 278
9.13 shutdown Function / shutdown函數 278
9.14 Notifications / 通知 280
9.15 Summary / 小結 286
Chapter 10. SCTP Client/Server Example / SCTP客戶/服務器示例 287
10.1 Introduction / 概述 287
10.2 SCTP One-to-Many-Style Streaming Echo Server: main Function / SCTP一到多式流分迴送服務器程序:main函數 288
10.3 SCTP One-to-Many-Style Streaming Echo Client: main Function / SCTP一到多式流分迴送客戶程序:main函數 290
10.4 SCTP Streaming Echo Client: str_cli Function / SCTP流分迴送客戶程序:str_cli函數 292
10.5 Exploring Head-of-Line Blocking / 探究頭端阻塞 293
10.6 Controlling the Number of Streams / 控製流的數目 299
10.7 Controlling Termination / 控製終止 300
10.8 Summary / 小結 301
Chapter 11. Name and Address Conversions / 名字與地址轉換 303
11.1 Introduction / 概述 303
11.2 Domain Name System (DNS) / 域名係統 303
11.3 gethostbyname Function / gethostbyname函數 307
11.4 gethostbyaddr Function / gethostbyaddr函數 310
11.5 getservbyname and getservbyport Functions / getservbyname和getservbyport函數 311
11.6 getaddrinfo Function / getaddrinfo函數 315
11.7 gai_strerror Function / gai_strerror函數 320
11.8 freeaddrinfo Function / freeaddrinfo函數 321
11.9 getaddrinfo Function: IPv6 / getaddrinfo函數:IPv6 322
11.10 getaddrinfo Function: Examples / getaddrinfo函數:示例 324
11.11 host_serv Function / host_serv函數 325
11.12 tcp_connect Function / tcp_connect函數 326
11.13 tcp_listen Function / tcp_listen函數 330
11.14 udp_client Function / udp_client函數 334
11.15 udp_connect Function / udp_connect函數 337
11.16 udp_server Function / udp_server函數 338
11.17 getnameinfo Function / getnameinfo函數 340
11.18 Re-entrant Functions / 可重入函數 341
11.19 gethostbyname_r and gethostbyaddr_r Functions / gethostbyname_r和gethostbyaddr_r函數 344
11.20 Obsolete IPv6 Address Lookup Functions / 廢棄的IPv6地址解析函數 346
11.21 Other Networking Information / 其他聯網信息 348
11.22 Summary / 小結 349
Part 3. Advanced Sockets / 高級套接字 351
Chapter 12. IPv4 and IPv6 Interoperability / IPv4與IPv6的互操作性 353
12.1 Introduction / 概述 353
12.2 IPv4 Client, IPv6 Server / IPv4客戶與IPv6服務器 354
12.3 IPv6 Client, IPv4 Server / IPv6客戶與IPv4服務器 357
12.4 IPv6 Address-Testing Macros / IPv6地址測試宏 360
12.5 Source Code Portability / 源代碼可移植性 361
12.6 Summary / 小結 362
Chapter 13. Daemon Processes and the inetd Superserver / 守護進程和inetd超級服務器程序 363
13.1 Introduction / 概述 363
13.2 syslogd Daemon / syslogd守護進程 364
13.3 syslog Function / syslog函數 365
13.4 daemon_init Function / daemon_init函數 367
13.5 inetd Daemon / inetd守護進程 371
13.6 daemon_inetd Function / daemon_inetd函數 377
13.7 Summary / 小結 379
Chapter 14. Advanced I/O Functions / 高級I/O函數 381
14.1 Introduction / 概述 381
14.2 Socket Timeouts / 套接字超時 381
14.3 recv and send Functions / recv和send函數 387
14.4 readv and writev Functions / readv和writev函數 389
14.5 recvmsg and sendmsg Functions / recvmsg和sendmsg函數 390
14.6 Ancillary Data / 輔助數據 395
14.7 How Much Data Is Queued? / 排隊的數據量 398
14.8 Sockets and Standard I/O / 套接字和標準I/O 399
14.9 Advanced Polling / 高級輪詢技術 402
14.10 Summary / 小結 408
Chapter 15. Unix Domain Protocols / Unix域協議 411
15.1 Introduction / 概述 411
15.2 Unix Domain Socket Address Structure / Unix域套接字地址結構 412
15.3 socketpair Function / socketpair函數 414
15.4 Socket Functions / 套接字函數 415
15.5 Unix Domain Stream Client/Server / Unix域流客戶/服務器 416
15.6 Unix Domain Datagram Client/Server / Unix域數據報客戶/服務器 418
15.7 Passing Descriptors / 描述符傳遞 420
15.8 Receiving Sender Credentials / 接收發送者的憑證 429
15.9 Summary / 小結 432
Chapter 16. Nonblocking I/O / 非阻塞I/O 435
16.1 Introduction / 概述 435
16.2 Nonblocking Reads and Writes: str_cli Function (Revisited) / 非阻塞讀和寫:再論str_cli函數 437
16.3 Nonblocking connect / 非阻塞connect 448
16.4 Nonblocking connect: Daytime Client / 非阻塞connect:時間獲取客戶程序 449
16.5 Nonblocking connect: Web Client / 非阻塞connect:Web客戶程序 452
16.6 Nonblocking accept / 非阻塞accept 461
16.7 Summary / 小結 463
Chapter 17. ioctl Operations / ioctl操作 465
17.1 Introduction / 概述 465
17.2 ioctl Function / ioctl函數 466
17.3 Socket Operations / 套接字操作 466
17.4 File Operations / 文件操作 468
17.5 Interface Configuration / 接口配置 468
17.6 get_ifi_info Function / get_ifi_info函數 469
17.7 Interface Operations / 接口操作 480
17.8 ARP Cache Operations / ARP高速緩存操作 481
17.9 Routing Table Operations / 路由錶操作 483
17.10 Summary / 小結 484
Chapter 18. Routing Sockets / 路由套接字 485
18.1 Introduction / 概述 485
18.2 Datalink Socket Address Structure / 數據鏈路套接字地址結構 486
18.3 Reading and Writing / 讀和寫 487
18.4 sysctl Operations / sysctl操作 495
18.5 get_ifi_info Function (Revisited) / get_ifi_info函數 500
18.6 Interface Name and Index Functions / 接口名字和索引函數 504
18.7 Summary / 小結 508
Chapter 19. Key Management Sockets / 密鑰管理套接字 511
19.1 Introduction / 概述 511
19.2 Reading and Writing / 讀和寫 512
19.3 Dumping the Security Association Database (SADB) / 安全關聯數據庫的轉儲 514
19.4 Creating a Static Security Association (SA) / 創建靜態安全關聯 517
19.5 Dynamically Maintaining SAs / 動態維護安全關聯 524
19.6 Summary / 小結 528
Chapter 20. Broadcasting / 廣播 529
20.1 Introduction / 概述 529
20.2 Broadcast Addresses / 廣播地址 531
20.3 Unicast versus Broadcast / 單播和廣播的比較 532
20.4 dg_cli Function Using Broadcasting / 使用廣播的dg_cli函數 535
20.5 Race Conditions / 競爭狀態 538
20.6 Summary / 小結 547
Chapter 21. Multicasting / 多播 549
21.1 Introduction / 概述 549
21.2 Multicast Addresses / 多播地址 549
21.3 Multicasting versus Broadcasting on a LAN / 局域網上多播和廣播的比較 553
21.4 Multicasting on a WAN / 廣域網上的多播 556
21.5 Source-Specific Multicast / 源特定多播 558
21.6 Multicast Socket Options / 多播套接字選項 559
21.7 mcast_join and Related Functions / mcast_join和相關函數 565
21.8 dg_cli Function Using Multicasting / 使用多播的dg_cli函數 570
21.9 Receiving IP Multicast Infrastructure Session Announcements / 接收IP多播基礎設施會話聲明 571
21.10 Sending and Receiving / 發送和接收 575
21.11 Simple Network Time Protocol (SNTP) / 簡單網絡時間協議 579
21.12 Summary / 小結 584
Chapter 22. Advanced UDP Sockets / 高級UDP套接字 587
22.1 Introduction / 概述 587
22.2 Receiving Flags, Destination IP Address, and Interface Index / 接收標誌、目的IP地址和接口索引 588
22.3 Datagram Truncation / 數據報截斷 594
22.4 When to Use UDP Instead of TCP / 何時用UDP代替TCP 594
22.5 Adding Reliability to a UDP Application / 給UDP應用增加可靠性 597
22.6 Binding Interface Addresses / 綁定接口地址 608
22.7 Concurrent UDP Servers / 並發UDP服務器 612
22.8 IPv6 Packet Information / IPv6分組信息 615
22.9 IPv6 Path MTU Control / IPv6路徑MTU控製 618
22.10 Summary / 小結 620
Chapter 23. Advanced SCTP Sockets / 高級SCTP套接字 621
23.1 Introduction / 概述 621
23.2 An Autoclosing One-to-Many-Style Server / 自動關閉的一到多式服務器程序 621
23.3 Partial Delivery / 部分遞送 622
23.4 Notifications / 通知 625
23.5 Unordered Data / 無序的數據 629
23.6 Binding a Subset of Addresses / 綁定地址子集 630
23.7 Determining Peer and Local Address Information / 確定對端和本端地址信息 631
23.8 Finding an Association ID Given an IP Address / 給定IP地址找齣關聯ID 635
23.9 Heartbeating and Address Failure / 心搏和地址不可達 636
23.10 Peeling Off an Association / 關聯剝離 637
23.11 Controlling Timing / 定時控製 639
23.12 When to Use SCTP Instead of TCP / 何時用SCTP代替TCP 641
23.13 Summary / 小結 643
Chapter 24. Out-of-Band Data / 帶外數據 645
24.1 Introduction / 概述 645
24.2 TCP Out-of-Band Data / TCP帶外數據 645
24.3 sockatmark Function / sockatmark函數 654
24.4 TCP Out-of-Band Data Recap / TCP帶外數據小結 661
24.5 Summary / 小結 662
Chapter 25. Signal-Driven I/O / 信號驅動I/O 663
25.1 Introduction / 概述 663
25.2 Signal-Driven I/O for Sockets / 套接字的信號驅動I/O 664
25.3 UDP Echo Server Using SIGIO / 使用SIGIO的UDP迴送服務器程序 666
25.4 Summary / 小結 672
Chapter 26. Threads / 綫程 675
26.1 Introduction / 概述 675
26.2 Basic Thread Functions: Creation and Termination / 基本綫程函數:創建和終止 676
26.3 str_cli Function Using Threads / 使用綫程的str_cli函數 679
26.4 TCP Echo Server Using Threads / 使用綫程的TCP迴送服務器程序 681
26.5 Thread-Specific Data / 綫程特定數據 686
26.6 Web Client and Simultaneous Connections (Continued) / Web客戶與同時連接(續) 694
26.7 Mutexes: Mutual Exclusion / 互斥鎖 697
26.8 Condition Variables / 條件變量 701
26.9 Web Client and Simultaneous Connections (Continued) / Web客戶與同時連接(續) 705
26.10 Summary / 小結 707
Chapter 27. IP Options / IP選項 709
27.1 Introduction / 概述 709
27.2 IPv4 Options / IPv4選項 709
27.3 IPv4 Source Route Options / IP源路徑選項 711
27.4 IPv6 Extension Headers / IPv6擴展首部 719
27.5 IPv6 Hop-by-Hop Options and Destination Options / IPv6步跳選項和目的選項 719
27.6 IPv6 Routing Header / IPv6路由首部 725
27.7 IPv6 Sticky Options / IPv6粘附選項 731
27.8 Historical IPv6 Advanced API / 曆史性IPv6高級API 732
27.9 Summary / 小結 733
Chapter 28. Raw Sockets / 原始套接字 735
28.1 Introduction / 概述 735
28.2 Raw Socket Creation / 原始套接字創建 736
28.3 Raw Socket Output / 原始套接字輸齣 737
28.4 Raw Socket Input / 原始套接字輸入 739
28.5 ping Program / ping程序 741
28.6 traceroute Program / traceroute程序 755
28.7 An ICMP Message Daemon / 一個ICMP消息守護進程 769
28.8 Summary / 小結 786
Chapter 29. Datalink Access / 數據鏈路訪問 787
29.1 Introduction / 概述 787
29.2 BSD Packet Filter (BPF) / BSD分組過濾器 788
29.3 Datalink Provider Interface (DLPI) / 數據鏈路提供者接口 790
29.4 Linux: SOCK_PACKET and PF_PACKET / Linux:SOCK_PACKET和PF_PACKET 791
29.5 libpcap: Packet Capture Library / libpcap:分組捕獲函數庫 792
29.6 libnet: Packet Creation and Injection Library / libnet:分組構造與注入函數庫 793
29.7 Examining the UDP Checksum Field / 檢查UDP的校驗和字段 793
29.8 Summary / 小結 815
Chapter 30. Client/Server Design Alternatives / 多種客戶/服務器設計方式 817
30.1 Introduction / 概述 817
30.2 TCP Client Alternatives / 各種TCP客戶程序設計方式 819
30.3 TCP Test Client / TCP測試用客戶程序 820
30.4 TCP Iterative Server / TCP迭代服務器程序 821
30.5 TCP Concurrent Server, One Child per Client / TCP並發服務器程序,每個客戶一個子進程 822
30.6 TCP Preforked Server, No Locking Around accept / TCP預先派生子進程服務器程序,accept無上鎖保護 826
30.7 TCP Preforked Server, File Locking Around accept / TCP預先派生子進程服務器程序,accept使用文件上鎖保護 832
30.8 TCP Preforked Server, Thread Locking Around accept / TCP預先派生子進程服務器程序,accept使用綫程上鎖保護 835
30.9 TCP Preforked Server, Descriptor Passing / TCP預先派生子進程服務器程序,傳遞描述符 836
30.10 TCP Concurrent Server, One Thread per Client / TCP並發服務器程序,每個客戶一個綫程 842
30.11 TCP Prethreaded Server, per-Thread accept / TCP預先創建綫程服務器程序,每個綫程各自accept 844
30.12 TCP Prethreaded Server, Main Thread accept / TCP預先創建綫程服務器程序,主綫程統一accept 846
30.13 Summary / 小結 849
Chapter 31. STREAMS / 851
31.1 Introduction / 概述 851
31.2 Overview / 概貌 851
31.3 getmsg and putmsg Functions / getmsg和putmsg函數 856
31.4 getpmsg and putpmsg Functions / getpmsg和putpmsg函數 857
31.5 ioctl Function / ioctl函數 857
31.6 Transport Provider Interface (TPI) / 傳輸提供者接口 858
31.7 Summary / 小結 868
Appendix A. IPv4, IPv6, ICMPv4, and ICMPv6 /
IPv4、IPv6、ICMPv4和ICMPv6 869
A.1 Introduction / 概述 869
A.2 IPv4 Header / IPv4首部 869
A.3 IPv6 Header / IPv6首部 871
A.4 IPv4 Addresses / IPv4地址 874
A.5 IPv6 Addresses / IPv6地址 877
A.6 Internet Control Message Protocols (ICMPv4 and ICMPv6) / 因特網控製消息協議(ICMPv4和ICMPv6) 882
Appendix B. Virtual Networks / 虛擬網絡 885
B.1 Introduction / 概述 885
B.2 The MBone 885
B.3 The 6bone 887
B.4 IPv6 Transition: 6to4 / IPv6過渡:6to4 889
Appendix C. Debugging Techniques / 調試技術 891
C.1 System Call Tracing / 係統調用跟蹤 891
C.2 Standard Internet Services / 標準因特網服務 893
C.3 sock Program / sock程序 893
C.4 Small Test Programs / 小測試程序 896
C.5 tcpdump Program / tcpdump程序 896
C.6 netstat Program / netstat程序 896
C.7 lsof Program / lsof程序 897
Appendix D. Miscellaneous Source Code / 其他源代碼 899
D.1 unp.h Header / unp.h頭文件 899
D.2 config.h Header / config.h頭文件 904
D.3 Standard Error Functions / 標準錯誤處理函數 910
Appendix E. Solutions to Selected Exercises / 精選習題答案 913
Bibliography / 參考文獻 947

前言/序言


深入探索網絡通信的基石:UNIX Socket API 實踐指南 在信息爆炸的數字時代,網絡通信的效率與可靠性已成為衡量技術實力與應用性能的關鍵指標。從萬維網的興盛到分布式係統的廣泛應用,底層網絡協議的精妙設計與高效實現是這一切得以運轉的根本。本書並非直接照搬某一本具體著作,而是旨在揭示隱藏在眾多網絡應用和服務背後,那套構建現代互聯網通信的基石——UNIX Socket API。它將帶您穿越抽象的網絡協議棧,深入理解數據如何在不同主機之間自由流動,並掌握構建強大、靈活、高性能網絡應用程序的核心技術。 本書將以一種自底嚮上的方式,層層剝開網絡通信的神秘麵紗,從最基礎的套接字(Socket)概念齣發,逐步引導您掌握如何利用UNIX提供的強大API來編織復雜的網絡應用。我們不預設您已具備深厚的網絡協議知識,但假定您對C語言及操作係統概念有一定的瞭解,這將是您遨遊於網絡編程海洋的有力工具。 第一部分:套接字基礎與客戶端/服務器模型 旅程的起點,我們將聚焦於套接字這一網絡通信的終端。您將瞭解到,套接字並非物理設備,而是操作係統內核提供的一種抽象接口,它使得應用程序能夠通過網絡與其他應用程序進行數據交換。我們會詳細解析套接字地址結構(如 `sockaddr` 及其派生結構 `sockaddr_in`),理解IP地址、端口號的含義,以及它們如何在網絡中唯一標識一個通信端點。 接著,我們將深入探討最經典的客戶端/服務器(Client/Server)通信模型。這是絕大多數網絡服務的基石。您將學習到服務器端如何使用 `socket()` 創建套接字,`bind()` 將套接字綁定到特定地址和端口,`listen()` 準備接受連接,以及 `accept()` 接受來自客戶端的連接請求。對於客戶端而言,您將掌握如何使用 `socket()` 創建套接字,並利用 `connect()` 主動連接到服務器。 數據傳輸是網絡編程的核心。我們將深入講解 `read()` 和 `write()`(或 `recv()` 和 `send()`)這兩個至關重要的函數,它們是實現套接字之間數據讀寫的根本。您將理解阻塞(Blocking)與非阻塞(Non-blocking)I/O模式的區彆,以及它們對程序設計思路産生的深遠影響。理解阻塞模式下的 `read()` 和 `write()` 何時會暫停執行,以及非阻塞模式下如何通過輪詢或事件通知來避免程序停滯,是編寫響應式網絡應用的關鍵。 第二部分:TCP與UDP的深入剖析 網絡通信的實現離不開底層的傳輸協議。本書將重點解析兩種最常用的傳輸層協議:TCP(Transmission Control Protocol)和UDP(User Datagram Protocol)。 TCP:可靠的數據流 TCP以其可靠性、有序性和流量控製而聞名,是大多數麵嚮連接的網絡應用(如Web瀏覽、文件傳輸)的首選。我們將詳細剖析TCP的連接建立過程(三次握手)與連接終止過程(四次揮手),理解這些精妙的設計如何保證數據的完整性和正確性。您將學會如何使用 `connect()`、`bind()`、`listen()`、`accept()`、`read()`、`write()` 等函數來實現TCP客戶端和服務器。 我們還將探討TCP的幾個重要特性,例如: 粘包與拆包問題: 在TCP流式傳輸中,應用層需要妥善處理由於底層傳輸特性帶來的數據邊界模糊問題,確保接收到的數據包是完整的。 流量控製與擁塞控製: TCP如何通過滑動窗口機製動態調整發送速率,避免網絡擁塞,保證數據傳輸的效率與穩定性。 半關閉(Half-close): 瞭解TCP連接如何支持一方關閉寫而另一方仍可繼續讀取,這在某些場景下非常有用。 UDP:高效的數據報 與TCP不同,UDP是一種無連接的、不可靠的數據報協議。它不保證數據的可靠送達、順序或流量控製,但其傳輸效率高,開銷小,適用於對實時性要求高、可以容忍少量數據丟失的場景,如在綫遊戲、視頻直播、DNS查詢等。您將學習如何使用 `socket()` 創建UDP套接字,`bind()` 綁定地址,以及 `sendto()` 和 `recvfrom()` 來發送和接收數據報。 我們將深入對比TCP和UDP的優缺點,幫助您根據應用場景選擇最閤適的傳輸協議。您會理解,何時選擇TCP的可靠性,何時選擇UDP的速度,是網絡應用性能優化的重要考量。 第三部分:高級套接字特性與並發處理 掌握瞭TCP和UDP的基礎後,我們將進一步探索套接字的高級特性,以構建更強大、更具伸縮性的網絡服務。 I/O復用技術: 當服務器需要同時處理大量客戶端連接時,傳統的阻塞I/O模型會變得效率低下。我們將深入介紹幾種主流的I/O復用技術: `select()`: 瞭解其工作原理,如何監控多個文件描述符的可讀、可寫或異常事件,以及其局限性(如文件描述符數量限製)。 `poll()`: 探討`poll()`相比`select()`的改進,解決瞭文件描述符數量的限製,但仍然需要輪詢。 `epoll()`(Linux特有): 深入解析`epoll()`的高效之處,如何采用事件驅動的機製,僅在事件發生時通知應用程序,顯著提升瞭大規模並發處理的能力。您將學習如何利用`epoll()`構建高性能的並發服務器。 多進程與多綫程模型: 為瞭有效地處理並發連接,我們需要引入並發機製。本書將探討兩種經典的多進程和多綫程模型: 多進程模型: 每個客戶端連接由一個獨立的子進程處理。理解`fork()`的工作方式,以及進程間通信(IPC)的潛在挑戰。 多綫程模型: 每個客戶端連接由一個獨立的綫程處理。理解綫程的創建、同步與銷毀,以及綫程安全問題。 我們將權衡多進程與多綫程各自的優缺點,並引導您理解在不同場景下選擇哪種模型更為閤適。 第四部分:網絡安全與高級主題 在構建網絡應用時,安全性是不可忽視的一環。雖然本書主要聚焦於套接字API,但我們將觸及一些與安全相關的基礎概念。 基本的身份驗證與授權: 瞭解在應用程序層麵實現簡單的用戶認證機製。 防火牆與網絡策略: 理解套接字與操作係統防火牆(如iptables)如何協同工作,以及基本的網絡訪問控製。 數據加密基礎: 簡要介紹SSL/TLS等加密技術在保護網絡通信中的作用,盡管本書不深入講解加密庫的API,但會點明其重要性。 此外,我們還將觸及一些更高級的主題,例如: 域套接字(Unix Domain Sockets): 瞭解在同一颱主機上的進程間通信,如何利用套接字接口進行高效的數據交換。 廣播與組播: 探索如何實現一對多或多對多的網絡通信。 信號處理與網絡: 理解網絡事件如何與程序信號交互,以及如何優雅地處理程序終止。 結語 通過對UNIX Socket API的深入剖析,本書旨在賦予您構建健壯、高效、可伸縮網絡應用程序的強大能力。您將不僅僅是API的調用者,更能成為理解網絡通信原理的設計者。無論您是希望開發高性能的Web服務器,設計實時的通信應用,還是構建復雜的分布式係統,掌握這套底層的網絡通信機製,都將為您鋪就一條通往成功的堅實道路。本書的學習過程,將是一次對計算機網絡本質的探索之旅,一次對代碼與協議精妙結閤的體驗。

用戶評價

評分

我是一名對網絡編程充滿好奇的初學者,而《UNIX網絡編程 捲1 套接字聯網API(第3版 英文版)》無疑是我踏入這個領域最理想的嚮導。這本書以一種非常友好的方式,為我打開瞭UNIX係統下網絡通信的大門。我喜歡它提供的清晰邏輯和循序漸進的學習路徑,讓我不會感到 overwhelmed。即使有些概念我一開始不是很理解,但通過作者在後續章節中的補充說明和代碼示例,我都能逐漸融會貫通。書中對TCP和UDP協議的介紹,讓我對數據如何在網絡上傳輸有瞭直觀的認識。同時,對套接字API的講解,更是將抽象的網絡協議落到瞭實處,讓我看到瞭如何通過編寫代碼來控製網絡通信。我特彆喜歡書中對錯誤處理的強調,這讓我意識到在實際的網絡編程中,健壯性和魯棒性是多麼的重要。雖然我還在學習初期,但已經對這本書的價值深信不疑,它為我打下瞭堅實的基礎,讓我對未來更深入的學習充滿信心。

評分

在我看來,《UNIX網絡編程 捲1 套接字聯網API(第3版 英文版)》是一本真正意義上的“寶典”。它不是那種浮光掠影的入門讀物,而是深入淺齣地剖析瞭UNIX網絡編程的核心。書中對於網絡通信的各個環節,比如連接的建立、數據的傳輸、端口的綁定等等,都進行瞭極為詳盡的描述,讓我能夠透徹理解每一個步驟背後的原理。我尤其推崇書中對性能優化的探討,雖然我還沒有完全消化這部分內容,但作者提齣的各種優化策略,比如減少係統調用、使用非阻塞I/O等,都讓我看到瞭提升網絡應用效率的途徑。而且,這本書中的代碼示例,都非常精煉且具有代錶性,直接演示瞭API的使用方法,這對於我學習和實踐非常有幫助。即便是在閱讀過程中遇到一些比較復雜的概念,我也能從中找到清晰的解釋和邏輯推導,讓我感受到作者在知識傳達上的深厚功力。

評分

坦白說,我購買這本《UNIX網絡編程 捲1 套接字聯網API(第3版 英文版)》主要是被它在行業內的口碑所吸引,而實際閱讀後,我發現它的價值遠超我的預期。這本書的英文原版,在語言的嚴謹性和技術的準確性上,都做得非常齣色。作者在描述每一個API函數時,都力求做到事無巨細,從參數的含義、返迴值的使用,到可能齣現的錯誤情況和處理建議,都進行瞭詳盡的說明。我尤其欣賞書中對於並發處理的介紹,比如多進程、多綫程以及異步I/O模型,這些都是構建高性能網絡應用的關鍵技術。作者並沒有簡單地羅列齣這些模型的實現方法,而是深入分析瞭它們各自的優缺點,以及在不同場景下的適用性,這為我後續的項目開發提供瞭寶貴的參考。雖然我目前還在啃讀初期的章節,但我已經能感受到這本書厚重的技術底蘊,它所涵蓋的內容,是任何一個想要在網絡編程領域有所建樹的開發者都必須掌握的知識。

評分

作為一名資深的開發者,我在閱讀《UNIX網絡編程 捲1 套接字聯網API(第3版 英文版)》時,更多的是在審視其作為一本技術參考書的嚴謹性和全麵性。我必須承認,這本書在這些方麵做得非常齣色。作者在描述套接字API時,不僅給齣瞭標準的用法,還深入探討瞭各種邊緣情況和特殊行為,這對於編寫能夠應對復雜網絡環境的應用程序至關重要。書中對於網絡編程中常見陷阱的警示,以及如何規避這些問題,更是具有極高的實踐價值。我尤其欣賞作者在解釋一些底層機製時,能夠結閤UNIX操作係統的特點來展開,這讓我能夠更深入地理解為何這些API會這樣設計,以及它們在實際運行中的錶現。雖然我閱曆豐富,但在閱讀過程中,依然能從中獲得新的啓發和對某些概念更深刻的理解,這足以證明這本書的價值是跨越經驗水平的。

評分

這本《UNIX網絡編程 捲1 套接字聯網API(第3版 英文版)》真是讓人愛不釋手,雖然我還沒能深入到每一個技術細節,但單從它提供的基礎知識框架和對網絡通信核心概念的闡述,就足以讓我驚嘆不已。它不像市麵上許多其他書籍那樣,上來就拋齣各種晦澀難懂的代碼和API調用,而是循序漸進地引導讀者理解TCP/IP協議棧的運作原理,以及套接字API是如何與之交互的。我特彆喜歡書中對於不同網絡模型(如客戶端/服務器模型、P2P模型)的講解,這讓我能夠清晰地看到各種網絡應用的設計思路和實現方式。而且,作者在解釋概念時,總是能夠用最精煉的語言點齣關鍵,同時又輔以形象的比喻,使得那些原本枯燥的技術概念變得生動有趣。我感覺這本書不僅僅是在教授技術,更是在培養一種對網絡編程的深刻理解,讓我能夠跳齣死記硬背API的模式,去思考“為什麼”和“如何”更有效地解決問題。雖然我主要在閱讀前麵的章節,但已經能預見到後麵內容將是多麼的精彩和實用。

評分

英文書看著很有質感 讓人想讀

評分

goodgood

評分

很好的産品啊。。。很喜歡。。

評分

網絡編程經典書籍,好好好

評分

Long Live Stevens

評分

6666666666

評分

好啊

評分

還可以

評分

書的質量挺好的 印刷啥的也是很好的 英文版的 有的看瞭

相關圖書

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

© 2025 book.coffeedeals.club All Rights Reserved. 靜流書站 版權所有