part 1 introduction and tcp/ip .1
簡介和tcp/ip
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 18
osi模型
1.8 bsd networking history 20
bsd網絡曆史
.1.9 test networks and hosts 22
測試用網絡及主機
1.10 unix standards 25
unix標準
1.11 64-bit architectures 28
64位體係結構
1.12 summary 29
小結
chapter 2 the transport layer: top,udp, and sctp 31
傳輸層:tcp、udp和sctp
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 andtermination 37
tcp連接的建立和終止
2.7 time_wait state 43
time_wait狀態
2.8 sctp association establishment andtermination 44
sctp關聯的建立和終止
2.9 port numbers 50
端口號
2.10 tcp port numbers and concurrentservers 52
tcp端口號與並發服務器
2.11 buffer sizes and limitations 55
緩衝區大小及限製
2.12 standard internet services 61
標準因特網服務
2.13 protocol usage by common internetapplications 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 82
inet_aton、inet_addr和inet_ntoa函數
3.7 inet_pton and inet_ntop functions 83
inet_pton和inet_ntop函數
3.8 sock_ntop and related functions 86
sock_ntop和相關函數
3.9 readn, writen, and readline functions 88
readn、writen和readline函數
3.10 summary 92
小結
chapter 4 elementary tcp sockets 95
基本tcp套接字
4.1 introduction 95
概述
4.2 socket function 95
socket函數
4.3 connect function 99
connect函數
4.4 bind function 101
bind函數
4.5 listen function 104
listen函數
4.6 accept function 109
accept函數
4.7 fork and exec functions 111
fork和exec函數
4.8 concurrent servers 114
並發服務器
4.9 close function 117
close函數
4.10 getsockname and getpeernamefunctions 117
getsockname和getpeername函數
4.11 summary 120
小結
chapter 5 tcp client/server example 121
tcp客戶/服務器示例
5.1 introduction 121
概述
5.2 tcp echo server: main function 122
tcp迴送服務器程序:main函數
5.3 tcp echo server: str_echo function 123
tcp迴送服務器程序:str_echo函數
5.4 tcp echo client: main function 124
tcp迴送客戶程序:main函數
5.5 tcp echo client: str_cli function 125
tcp迴送客戶程序:str_cli函數
5.6 normal startup 126
正常啓動
5.7 normal termination 128
正常終止
5.8 posix signal handling 129
posix信號處理
5.9 handling sigchld signals 132
處理sigchld信號
5.10 wait and waitpid functions 135
wait和waitpid函數
5.11 connection abort before acceptreturns 139
accept返迴前連接異常中止
5.12 termination of server process 141
服務器進程的終止
5.13 sigpipe signal 142
sigpipe信號
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 146
tcp示例小結
5.18 data format 147
數據格式
5.19 summary 151
小結
chapter 6 i/o multiplexing: the select and poll functions 153
i/o多路復用:select和poll函數
6.1 introduction 153
概述
6.2 i/o models 154
i/o模型
6.3 select function 160
select函數
6.4 str_cli function (revisited) 167
再訪str_cli函數
6.5 batch input and buffering 169
批量輸入和緩衝
6.6 shutdown function 172
shutdown函數
6.7 str_cli function (revisited again) 173
三顧str_cli函數
6.8 tcp echo server (revisited) 175
再訪tcp迴送服務器程序
6.9 pselect function 181
pselect函數
6.10 poll function 182
poll函數
6.11 tcp echo server (revisited again) 185
三顧tcp迴送服務器程序
6.12 summary 188
小結
chapter 7 socket options 191
套接字選項
7.1 introduction 191
概述
7.2 getsockopt and setsockopt functions 192
getsockopt和setsockopt函數
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 214
ipv4套接字選項
7.7 icmpv6 socket option 216
icmpv6套接字選項
7.8 ipv6 socket options 216
ipv6套接字選項
7.9 tcp socket options 219
tcp套接字選項
7.10 sctp socket options 222
sctp套接字選項
7.11 fcntl function 233
fcntl函數
7.12 summary 236
小結
chapter 8 elementary udp sockets 239
基本udp套接字
8.1 introduction 239
概述
8.2 recvfrom and sendto functions 240
recvfrom和sendto函數
8.3 udp echo server: main function 241
udp迴送服務器程序:main函數
8.4 udp echo server: dg_echo function 242
udp迴送服務器程序:dg_echo函數
8.5 udp echo client: main function 244
udp迴送客戶程序:main函數
8.6 udp echo client: dg_cli function 245
udp迴送客戶程序:dg_cli函數
8.7 lost datagrams 245
數據報的丟失
8.8 verifying received response 246
驗證接收到的響應
8.9 server not running 248
服務器程序未運行
8.10 summary of udp example 250
udp示例小結
8.11 connect function with udp 252
udp的connect函數
8.12 dg_cli function (revisited) 256
再論dg_cli函數
8.13 lack of flow control with udp 257
udp缺乏流量控製
8.14 determining outgoing interface with udp 261
udp中的外齣接口的確定
8.15 tcp and udp echo server using select 262
使用select函數的tcp和udp迴送服務器程序
8.16 summary 264
小結
chapter 9 elementary sctp sockets 267
基本sctp套接字
9.1 introduction 267
概述
9.2 interface models 268
接口模型
9.3 sctp_bindx function 272
sctp_bindx函數
9.4 sctp_connectx function 274
sctp_connectx函數
9.5 sctp_getpaddrs function 275
sctp_getpaddrs函數
9.6 sctp_freepaddrs function 275
sctp_freepaddrs函數
9.7 sctp_getladdrs function 275
sctp_getladdrs函數
9.8 sctp_freeladdrs function 276
sctp_freeladdrs函數
9.9 sctp_sendmsg function 276
sctp_sendmsg函數
9.10 sctp_recvmsg function 277
sctp_recvmsg函數
9.11 sctp_opt_info function 278
sctp_opt_info函數
9.12 sctp_peeloff function 278
sctp_peeloff函數
9.13 shutdown function 278
shutdown函數
9.14 notifications 280
通知
9.15 summary 286
小結
chapter 10 sctp client/server example 287
sctp客戶/服務器示例
10.1 introduction 287
概述
10.2 sctp one-to-many-style streaming echo server: main function 288
sctp一到多式流分迴送服務器程序:main函數
10.3 sctp one-to-many-style streaming echo client: main function 290
sctp一到多式流分迴送客戶程序:main函數
10.4 sctp streaming echo client: str_cli function 292
sctp流分迴送客戶程序:str_cli函數
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 307
gethostbyname函數
11.4 gethostbyaddr function 310
gethostbyaddr函數
11.5 getservbyname and getservbyport functions 311
getservbyname和getservbyport函數
11.6 getaddrinfo function 315
getaddrinfo函數
11.7 gai_strerror function 320
gai_strerror函數
11.8 freeaddrinfo function 321
freeaddrinfo函數
11.9 getaddrinfo function: ipv6 322
getaddrinfo函數:ipv6
11.10 getaddrinfo function: examples 324
getaddrinfo函數:示例
11.11 host_serv function 325
host_serv函數
11.12 tcp_connect function 326
tcp_connect函數
11.13 tcp_listen function 330
tcp_listen函數
11.14 udp_client function 334
udp_client函數
11.15 udp_connect function 337
udp_connect函數
11.16 udp_server function 338
udp_server函數
11.17 getnameinfo function 340
getnameinfo函數
11.18 re-entrant functions 341
可重入函數
11.19 gethostbyname_r and gethostbyaddr_r functions 344
gethostbyname_r和gethostbyaddr_r函數
11.20 obsolete ipv6 address lookup functions 346
廢棄的ipv6地址解析函數
11.21 other networking information 348
其他聯網信息
11.22 summary 349
小結
part 3 advanced sockets 351
高級套接字
chapter 12 ipv4 and ipv6 interoperability 353
ipv4與ipv6的互操作性
12.1 introduction 353
概述
12.2 ipv4 client, ipv6 server .. 354
ipv4客戶與ipv6服務器
12.3 ipv6 client, ipv4 server 357
ipv6客戶與ipv4服務器
12.4 ipv6 address-testing macros 360
ipv6地址測試宏
12.5 source code portability 361
源代碼可移植性
12.6 summary 362
小結
chapter 13 daemon processes and the inetd superserver 363
守護進程和inetd超級服務器程序
13.1 introduction 363
概述
13.2 syslogd daemon 364
syslogd守護進程
13.3 syslog function 365
syslog函數
13.4 daemon_init function 367
daemon_init函數
13.5 inetd daemon 371
inetd守護進程
13.6 daemon_inetd function 377
daemon_inetd函數
13.7 summary 379
小結
chapter 14 advanced i/o functions 381
高級i/o函數
14.1 introduction 381
概述
14.2 socket timeouts 381
套接字超時
14.3 recv and send functions 387
recv和send函數
14.4 readv and writev functions 389
readv和writev函數
14.5 recvmsg and sendmsg functions 390
recvmsg和sendmsg函數
14.6 ancillary data 395
輔助數據
14.7 how much data is queued? 398
排隊的數據量
14.8 sockets and standard i/o 399
套接字和標準i/o
14.9 advanced polling 402
高級輪詢技術
14.10 summary 408
小結
chapter 15 unix domain protocols 411
unix域協議
15.1 introduction 411
概述
15.2 unix domain socket address structure 412
unix域套接字地址結構
15.3 socketpair function 414
socketpair函數
15.4 socket functions 415
套接字函數
15.5 unix domain stream client/server 416
unix域流客戶/服務器
15.6 unix domain datagram client/server 418
unix域數據報客戶/服務器
15.7 passing descriptors 420
描述符傳遞
15.8 receiving sender credentials 429
接收發送者的憑證
15.9 summary 432
小結
chapter 16 nonblocking i/o 435
非阻塞i/o
16.1 introduction 435
概述
16.2 nonblocking reads and writes: str_cli function (revisited) 437
非阻塞讀和寫:再論str_cli函數
16.3 nonblocking connect 448
非阻塞connect
16.4 nonblocking connect: daytime client 449
非阻塞connect:時間獲取客戶程序
16.5 nonblocking connect: web client 452
非阻塞connect:web客戶程序
16.6 nonblocking accept 461
非阻塞accept
16.7 summary 463
小結
chapter 17 ioctl operations 465
ioctl操作
17.1 introduction 465
概述
17.2 ioctl function 466
ioctl函數
17.3 socket operations 466
套接字操作
17.4 file operations 468
文件操作
17.5 interface configuration 468
接口配置
17.6 get_ifi_info function 469
get_ifi_info函數
17.7 interface operations 480
接口操作
17.8 arp cache operations 481
arp高速緩存操作
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 495
sysctl操作
18.5 get_ifi_info function (revisited) 500
get_ifi_info函數
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 535
使用廣播的dg_cli函數
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 565
mcast_join和相關函數
21.8 dg_cli function using multicasting 570
使用多播的dg_cli函數
21.9 receiving ip multicast infrastructure session announcements 571
接收ip多播基礎設施會話聲明
21.10 sending and receiving 575
發送和接收
21.11 simple network time protocol (sntp) 579
簡單網絡時間協議
21.12 summary 584
小結
chapter 22 advanced udp sockets 587
高級udp套接字
22.1 introduction 587
概述
22.2 receiving flags, destination ip address, and interface index 588
接收標誌、目的ip地址和接口索引
22.3 datagram truncation 594
數據報截斷
22.4 when to use udp instead of tcp 594
何時用udp代替tcp
22.5 adding reliability to a udp application 597
給udp應用增加可靠性
22.6 binding interface addresses 608
綁定接口地址
22.7 concurrent udp servers 612
並發udp服務器
22.8 ipv6 packet information 615
ipv6分組信息
22.9 ipv6 path mtu control 618
ipv6路徑mtu控製
22.10 summary 620
小結
chapter 23 advanced sctp sockets 621
高級sctp套接字
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 635
給定ip地址找齣關聯id
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 641
何時用sctp代替tcp
23.13 summary 643
小結
chapter 24 out-of-band data 645
帶外數據
24.1 introduction 645
概述
24.2 tcp out-of-band data 645
tcp帶外數據
24.3 sockatmark function 654
sockatmark函數
24.4 tcp out-of-band data recap 661
tcp帶外數據小結
24.5 summary 662
小結
chapter 25 signal-driven i/o 663
信號驅動i/o
25.1 introduction 663
概述
25.2 signal-driven i/o for sockets 664
套接字的信號驅動i/o
25.3 udp echo server using sigio 666
使用sigio的udp迴送服務器程序
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 679
使用綫程的str_cli函數
26.4 tcp echo server using threads 681
使用綫程的tcp迴送服務器程序
26.5 thread-specific data 686
綫程特定數據
26.6 web client and simultaneous connections (continued) 694
web客戶與同時連接(續)
26.7 mutexes: mutual exclusion 697
互斥鎖
26.8 condition variables 701
條件變量
26.9 web client and simultaneous connections (continued) 705
web客戶與同時連接(續)
26.10 summary 707
小結
chapter 27 ip options 709
ip選項
27.1 introduction 709
概述
27.2 ipv4 options 709
ipv4選項
27.3 ipv4 source route options 711
ip源路徑選項
27.4 ipv6 extension headers 719
ipv6擴展首部
27.5 ipv6 hop-by-hop options and destination options 719
ipv6步跳選項和目的選項
27.6 ipv6 routing header 725
ipv6路由首部
27.7 ipv6 sticky options 731
ipv6粘附選項
27.8 historical ipv6 advanced api 732
曆史性ipv6高級api
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 741
ping程序
28.6 traceroute program 755
traceroute程序
28.7 an icmp message daemon 769
一個icmp消息守護進程
28.8 summary 786
小結
chapter 29 datalink access 787
數據鏈路訪問
29.1 introduction 787
概述
29.2 bsd packet filter (bpf) 788
bsd分組過濾器
29.3 datalink provider interface (dlpi) 790
數據鏈路提供者接口
29.4 linux: sock_packet and pf_packet 791
linux:sock_packet和pf_packet
29.5 libpcap: packet capture library 792
libpcap:分組捕獲函數庫
29.6 libnet: packet creation and injection library 793
libnet:分組構造與注入函數庫
29.7 examining the udp checksum
field 793
檢查udp的校驗和字段
29.8 summary 815
小結
chapter 30 client/server design alternatives 817
多種客戶/服務器設計方式
30.1 introduction 817
概述
30.2 tcp client alternatives 819
各種tcp客戶程序設計方式
30.3 tcp test client 820
tcp測試用客戶程序
30.4 tcp iterative server 821
tcp迭代服務器程序
30.5 tcp concurrent server, one child per client 822
tcp並發服務器程序,每個客戶一個子進程
30.6 tcp preforked server, no locking around accept 826
tcp預先派生子進程服務器程序,accept無上鎖保護
30.7 tcp preforked server, file locking around accept 832
tcp預先派生子進程服務器程序,accept使用文件上鎖保護
30.8 tcp preforked server, thread locking around accept 835
tcp預先派生子進程服務器程序,accept使用綫程上鎖保護
30.9 tcp preforked server, descriptor passing 836
tcp預先派生子進程服務器程序,傳遞描述符
30.10 tcp concurrent server, one thread per client 842
tcp並發服務器程序,每個客戶一個綫程
30.11 tcp prethreaded server, per-thread accept 844
tcp預先創建綫程服務器程序,每個綫程各自accept
30.12 tcp prethreaded server, main thread accept 846
tcp預先創建綫程服務器程序,主綫程統一accept
30.13 summary 849
小結
chapter 31 streams 851
31.1 introduction 851
概述
31.2 overview 851
概貌
31.3 getmsg and putmsg functions 856
getmsg和putmsg函數
31.4 getpmsg and putpmsg functions 857
getpmsg和putpmsg函數
31.5 ioctl function 857
ioctl函數
31.6 transport provider interface (tpi) 858
傳輸提供者接口
31.7 summary 868
小結
appendix a ipv4, ipv6, icmpv4, and icmpv6 869
ipv4、ipv6、icmpv4和icmpv6
a.1 introduction 869
概述
a.2 ipv4 header 869
ipv4首部
a.3 ipv6 header 871
ipv6首部
a.4 ipv4 addresses 874
ipv4地址
a.5 ipv6 addresses 877
ipv6地址
a.6 internet control message protocols (icmpv4 and icmpv6) 882
因特網控製消息協議(icmpv4和icmpv6)
appendix b virtual networks 885
虛擬網絡
b.1 introduction 885
概述
b.2 the mbone 885
b.3 the 6bone 887
b.4 ipv6 transition: 6to4 889
ipv6過渡:6to4
appendix c debugging techniques 891
調試技術
c.1 system call tracing 891
係統調用跟蹤
c.2 standard internet services 893
標準因特網服務
c.3 sock program 893
sock程序
c.4 small test programs 896
小測試程序
c.5 tcpdump program 896
tcpdump程序
c.6 netstat program 896
netstat程序
c.7 lsof program 897
lsof程序
appendix d miscellaneous source code 899
其他源代碼
d.1 unp.h header 899
unp.h頭文件
d.2 config.h header 904
config.h頭文件
d.3 standard error functions 910
標準錯誤處理函數
appendix e solutions to selectedexercises 913
精選習題答案
bibliography 947
參考文獻
index 955
索引 ...
· · · · · · (
收起)