当前位置: 主页 > 日志 > 实用工具 >

TCP-IP详解卷1,2,3 PDF电子版下载

书籍简介:
    本书完整而详细地介绍了TCP/IP协议是如何实现的。书中给出了约500个图例,15 000行实际操作的C代码,采用举例教学的方法帮助你掌握TCP/IP实现。本书不仅说明了插口API和协议族的关系以及主机实现与路由器实现的差别。还介绍了4.4BSD-Lite版的新的特点,如多播、长肥管道支持、窗口缩放、时间戳选项以及其他主题等等。读者阅读本书时,应当具备卷1中阐述的关于TCP/IP的基本知识。本书适用于希望理解TCP/TP协议如何实现的人,包括编写网络应用程序的程序员以及利用TCP/IP维护计算机网络的系统管理员。 


作者简介:   
   国际知名的Unix和网络专家,《TCP/IP 详解》(三卷本)作者 W.Richard Stevens(1951-1999),是国际知名的Unix和网络专家;受人尊敬的计算机图书作家;同时他还是广受欢迎的教师和顾问。Stevens先生1951年生于赞比亚,他的家庭曾多次搬迁,最终定居于南非。早年,他就读于美国弗吉尼亚州的费什本军事学校,后获得密歇根大学学士、亚利桑那大学系统工程硕士和博士学位。他曾就职于基特峰国家天文台,从事计算机编程;还曾在康涅狄格州纽黑文市的健康系统国际公司任主管计算机服务的副总裁。Stevens先生不幸病逝于1999年9月1日,他的离去是计算机界的巨大损失。

卷一目录:

目      录
译者序
前言
第1章   概述    1
1.1   引言    1
1.2   分层    1
1.3   TCP/IP的分层    4
1.4   互联网的地址    5
1.5   域名系统    6
1.6   封装    6
1.7   分用    8
1.8   客户-服务器模型    8
1.9   端口号    9
1.10   标准化过程    10
1.11   RFC    10
1.12   标准的简单服务    11
1.13   互联网    12
1.14   实现    12
1.15   应用编程接口    12
1.16   测试网络    13
1.17   小结    13
第2章   链路层    15
2.1   引言    15
2.2   以太网和IEEE 802封装    15
2.3   尾部封装    17
2.4   SLIP:串行线路IP    17
2.5   压缩的SLIP    18
2.6   PPP:点对点协议    18
2.7   环回接口    20
2.8   最大传输单元MTU    21
2.9   路径MTU    21
2.10   串行线路吞吐量计算    21
2.11   小结    22
第3章   IP:网际协议    24
3.1   引言    24
3.2   IP首部    24
3.3   IP路由选择    27
3.4   子网寻址    30
3.5   子网掩码    32
3.6   特殊情况的IP地址    33
3.7   一个子网的例子    33
3.8   ifconfig命令    35
3.9   netstat命令    36
3.10   IP的未来    36
3.11   小结    37
第4章   ARP:地址解析协议    38
4.1   引言    38
4.2   一个例子    38
4.3   ARP高速缓存    40
4.4   ARP的分组格式    40
4.5   ARP举例    41
4.5.1   一般的例子    41
4.5.2   对不存在主机的ARP请求    42
4.5.3   ARP高速缓存超时设置    43
4.6   ARP代理    43
4.7   免费ARP    45
4.8   arp命令    45
4.9   小结    46
第5章   RARP:逆地址解析协议    47
5.1   引言    47
5.2   RARP的分组格式    47
5.3   RARP举例    47
5.4   RARP服务器的设计    48
5.4.1   作为用户进程的RARP服务器    49
5.4.2   每个网络有多个RARP服务器    49
5.5   小结    49
第6章   ICMP:Internet控制报文协议    50
6.1   引言    50
6.2   ICMP报文的类型    50
6.3   ICMP地址掩码请求与应答    52
6.4   ICMP时间戳请求与应答    53
6.4.1   举例    54
6.4.2   另一种方法    55
6.5   ICMP端口不可达差错    56
6.6   ICMP报文的4.4BSD处理    59
6.7   小结    60
第7章   Ping程序    61
7.1   引言    61
7.2   Ping程序    61
7.2.1   LAN输出    62
7.2.2   WAN输出    63
7.2.3   线路SLIP链接    64
7.2.4   拨号SLIP链路    65
7.3   IP记录路由选项    65
7.3.1   通常的例子    66
7.3.2   异常的输出    68
7.4   IP时间戳选项    69
7.5   小结    70
第8章   Traceroute程序    71
8.1   引言    71
8.2   Traceroute 程序的操作    71
8.3   局域网输出    72
8.4   广域网输出    75
8.5   IP源站选路选项    76
8.5.1   宽松的源站选路的traceroute
           程序示例    78
8.5.2   严格的源站选路的traceroute
           程序示例    79
8.5.3   宽松的源站选路traceroute程序
      的往返路由    80
8.6   小结    81
第9章   IP选路    83
9.1   引言    83
9.2   选路的原理    84
9.2.1   简单路由表    84
9.2.2   初始化路由表    86
9.2.3   较复杂的路由表    87
9.2.4   没有到达目的地的路由    87
9.3   ICMP主机与网络不可达差错    88
9.4   转发或不转发    89
9.5   ICMP重定向差错    89
9.5.1   一个例子    90
9.5.2   更多的细节    91
9.6   ICMP路由器发现报文    92
9.6.1   路由器操作    93
9.6.2   主机操作    93
9.6.3   实现    93
9.7   小结    94
第10章   动态选路协议    95
10.1   引言    95
10.2   动态选路    95
10.3   Unix选路守护程序    96
10.4   RIP:选路信息协议    96
10.4.1   报文格式    96
10.4.2   正常运行    97
10.4.3   度量    98
10.4.4   问题    98
10.4.5   举例    98
10.4.6   另一个例子    100
10.5   RIP版本2    102
10.6   OSPF:开放最短路径优先    102
10.7   BGP:边界网关协议    103
10.8   CIDR:无类型域间选路    104
10.9   小结    105
第11章   UDP:用户数据报协议    107
11.1   引言    107
11.2   UDP首部    107
11.3   UDP检验和    108
11.3.1   tcpdump输出    109
11.3.2   一些统计结果    109
11.4   一个简单的例子    110
11.5   IP分片    111
11.6   ICMP不可达差错(需要分片)    113
11.7   用Traceroute确定路径MTU    114
11.8   采用UDP的路径MTU发现    116
11.9   UDP和ARP之间的交互作用    118
11.10   最大UDP数据报长度    119
11.11   ICMP源站抑制差错    120
11.12   UDP服务器的设计    122
11.12.1   客户IP地址及端口号    122
11.12.2   目标IP地址    122
11.12.3   UDP输入队列    122
11.12.4   限制本地IP地址    124
11.12.5   限制远端IP地址    125
11.12.6   每个端口有多个接收者    125
11.13   小结    126
第12章   广播和多播    128
12.1   引言    128
12.2   广播    129
12.2.1   受限的广播    129
12.2.2   指向网络的广播    129
12.2.3   指向子网的广播    129
12.2.4   指向所有子网的广播    130
12.3   广播的例子    130
12.4   多播    132
12.4.1   多播组地址    133
12.4.2   多播组地址到以太网地址的转换    133
12.4.3   FDDI和令牌环网络中的多播    134
12.5   小结    134
第13章   IGMP:Internet组管理协议    136
13.1   引言    136
13.2   IGMP报文    136
13.3   IGMP协议    136
13.3.1   加入一个多播组    136
13.3.2   IGMP报告和查询    137
13.3.3   实现细节    137
13.3.4   生存时间字段    138
13.3.5   所有主机组    138
13.4   一个例子    138
13.5   小结    141
第14章   DNS:域名系统    142
14.1   引言    142
14.2   DNS基础    142
14.3   DNS的报文格式    144
14.3.1   DNS查询报文中的问题部分    146
14.3.2   DNS响应报文中的资源记录部分    147
14.4   一个简单的例子    147
14.5   指针查询    150
14.5.1   举例    151
14.5.2   主机名检查    151
14.6   资源记录    152
14.7   高速缓存    153
14.8   用UDP还是用TCP    156
14.9   另一个例子    156
14.10   小结    157
第15章   TFTP:简单文件传送协议    159
15.1   引言    159
15.2   协议    159
15.3   一个例子    160
15.4   安全性    161
15.5   小结    162
第16章   BOOTP: 引导程序协议    163
16.1   引言    163
16.2   BOOTP的分组格式    163
16.3   一个例子    164
16.4   BOOTP服务器的设计    165
16.5   BOOTP穿越路由器    167
16.6   特定厂商信息    167
16.7   小结    168
第17章   TCP:传输控制协议    170
17.1   引言    170
17.2   TCP的服务    170
17.3   TCP的首部    171
17.4   小结    173
第18章   TCP连接的建立与终止    174
18.1   引言    174
18.2   连接的建立与终止    174
18.2.1   tcpdump的输出    174
18.2.2   时间系列    175
18.2.3   建立连接协议    175
18.2.4   连接终止协议    177
18.2.5   正常的tcpdump输出    177
18.3   连接建立的超时    178
18.3.1   第一次超时时间    178
18.3.2   服务类型字段    179
18.4   最大报文段长度    179
18.5   TCP的半关闭    180
18.6   TCP的状态变迁图    182
18.6.1   2MSL等待状态    183
18.6.2   平静时间的概念    186
18.6.3   FIN_WAIT_2状态    186
18.7   复位报文段    186
18.7.1   到不存在的端口的连接请求    187
18.7.2   异常终止一个连接    187
18.7.3   检测半打开连接    188
18.8   同时打开    189
18.9   同时关闭    191
18.10   TCP选项    191
18.11   TCP服务器的设计    192
18.11.1   TCP服务器端口号    193
18.11.2   限定的本地IP地址    194
18.11.3   限定的远端IP地址    195
18.11.4   呼入连接请求队列    195
18.12   小结    197
第19章   TCP的交互数据流    200
19.1   引言    200
19.2   交互式输入    200
19.3   经受时延的确认    201
19.4   Nagle算法    203
19.4.1   关闭Nagle算法    204
19.4.2   一个例子    205
19.5   窗口大小通告    207
19.6   小结    208
第20章   TCP的成块数据流    209
20.1   引言    209
20.2   正常数据流    209
20.3   滑动窗口    212
20.4   窗口大小    214
20.5   PUSH标志    215
20.6   慢启动    216
20.7   成块数据的吞吐量    218
20.7.1   带宽时延乘积    220
20.7.2   拥塞    220
20.8   紧急方式    221
20.9   小结    224
第21章   TCP的超时与重传    226
21.1   引言    226
21.2   超时与重传的简单例子    226
21.3   往返时间测量    227
21.4   往返时间RTT的例子    229
21.4.1   往返时间RTT的测量    229
21.4.2   RTT估计器的计算    231
21.4.3   慢启动    233
21.5   拥塞举例    233
21.6   拥塞避免算法    235
21.7   快速重传与快速恢复算法    236
21.8   拥塞举例(续)    237
21.9   按每条路由进行度量    240
21.10   ICMP的差错    240
21.11   重新分组    243
21.12   小结    243
第22章   TCP的坚持定时器    245
22.1   引言    245
22.2   一个例子    245
22.3   糊涂窗口综合症    246
22.4   小结    250
第23章   TCP的保活定时器    251
23.1   引言    251
23.2   描述    252
23.3   保活举例    253
23.3.1   另一端崩溃    253
23.3.2   另一端崩溃并重新启动    254
23.3.3   另一端不可达    254
23.4   小结    255
第24章   TCP的未来和性能    256
24.1   引言    256
24.2   路径MTU发现    256
24.2.1   一个例子    257
24.2.2   大分组还是小分组    258
24.3   长肥管道    259
24.4   窗口扩大选项    262
24.5   时间戳选项    263
24.6   PAWS:防止回绕的序号    265
24.7   T/TCP:为事务用的TCP扩展    265
24.8   TCP的性能    267
24.9   小结    268
第25章   SNMP:简单网络管理协议    270
25.1   引言    270
25.2   协议    270
25.3   管理信息结构    272
25.4   对象标识符    274
25.5   管理信息库介绍    274
25.6   实例标识    276
25.6.1   简单变量    276
25.6.2   表格    276
25.6.3   字典式排序    277
25.7   一些简单的例子    277
25.7.1   简单变量    278
25.7.2   get-next操作    278
25.7.3   表格的访问    279
25.8   管理信息库(续)    279
25.8.1   system组    279
25.8.2   interface组    280
25.8.3   at组    281
25.8.4   ip组    282
25.8.5   icmp组    285
25.8.6   tcp组    285
25.9   其他一些例子    288
25.9.1   接口MTU    288
25.9.2   路由表    288
25.10   trap    290
25.11   ASN.1和BER    291
25.12   SNMPv2    292
25.13   小结    292
第26章   Telnet和Rlogin:远程登录    293
26.1   引言    293
26.2   Rlogin协议    294
26.2.1   应用进程的启动    295
26.2.2   流量控制    295
26.2.3   客户的中断键    296
26.2.4   窗口大小的改变    296
26.2.5   服务器到客户的命令    296
26.2.6   客户到服务器的命令    297
26.2.7   客户的转义符    298
26.3   Rlogin的例子    298
26.3.1   初始的客户-服务器协议    298
26.3.2   客户中断键    299
26.4   Telnet协议    302
26.4.1   NVT ASCII    302
26.4.2   Telnet命令    302
26.4.3   选项协商    303
26.4.4   子选项协商    304
26.4.5   半双工、一次一字符、一次
             一行或行方式    304
26.4.6   同步信号    306
26.4.7   客户的转义符    306
26.5   Telnet举例    306
26.5.1   单字符方式    306
26.5.2   行方式    310
26.5.3   一次一行方式(准行方式)    312
26.5.4   行方式:客户中断键    313
26.6   小结    314
第27章   FTP:文件传送协议    316
27.1   引言    316
27.2   FTP协议    316
27.2.1   数据表示    316
27.2.2   FTP命令    318
27.2.3   FTP应答    319
27.2.4   连接管理    320
27.3   FTP的例子    321
27.3.1   连接管理:临时数据端口    321
27.3.2   连接管理:默认数据端口    323
27.3.3   文本文件传输:NVT ASCII
             表示还是图像表示    325
27.3.4   异常中止一个文件的传输:
            Telnet同步信号    326
27.3.5   匿名FTP    329
27.3.6   来自一个未知IP地址的匿名FTP    330
27.4   小结    331
第28章   SMTP:简单邮件传送协议    332
28.1   引言    332
28.2   SMTP协议    332
28.2.1   简单例子    332
28.2.2   SMTP命令    334
28.2.3   信封、首部和正文    335
28.2.4   中继代理    335
28.2.5   NVT ASCII    337
28.2.6   重试间隔    337
28.3   SMTP的例子    337
28.3.1   MX记录:主机非直接连到
             Internet    337
28.3.2   MX记录:主机出故障    339
28.3.3   VRFY和EXPN命令    340
28.4   SMTP的未来    340
28.4.1   信封的变化:扩充的SMTP    341
28.4.2   首部变化:非ASCII字符    342
28.4.3   正文变化:通用Internet邮件
             扩充    343
28.5   小结    346
第29章   网络文件系统    347
29.1   引言    347
29.2   Sun远程过程调用    347
29.3   XDR:外部数据表示    349
29.4   端口映射器    349
29.5   NFS协议    351
29.5.1   文件句柄    353
29.5.2   安装协议    353
29.5.3   NFS过程    354
29.5.4   UDP还是TCP    355
29.5.5   TCP上的NFS    355
29.6   NFS实例    356
29.6.1   简单的例子:读一个文件    356
29.6.2   简单的例子:创建一个目录    357
29.6.3   无状态    358
29.6.4   例子:服务器崩溃    358
29.6.5   等幂过程    360
29.7   第3版的NFS    360
29.8   小结    361
第30章   其他的TCP/IP应用程序    363
30.1   引言    363
30.2   Finger协议    363
30.3   Whois协议    364
30.4   Archie、WAIS、Gopher、Veronica
         和WWW    366
30.4.1   Archie    366
30.4.2   WAIS    366
30.4.3   Gopher    366
30.4.4   Veronica    366
30.4.5   万维网WWW    367
30.5   X窗口系统    367
30.5.1   Xscope程序    368
30.5.2   LBX: 低带宽X    370
30.6   小结    370
附录A   tcpdump程序    371
附录B   计算机时钟    376
附录C   sock程序    378
附录D   部分习题的解答    381
附录E   配置选项    395
附录F   可以免费获得的源代码    406
参考文献    409
缩略语    420

卷二目录:

目      录
译者序
前言
第1章   概述    1
1.1   引言    1
1.2   源代码表示    1
1.2.1   将拥塞窗口设置为1    1
1.2.2   印刷约定    2
1.3   历史    2
1.4   应用编程接口    3
1.5   程序示例    4
1.6   系统调用和库函数    6
1.7   网络实现概述    6
1.8   描述符    7
1.9   mbuf与输出处理    11
1.9.1   包含插口地址结构的mbuf    11
1.9.2   包含数据的mbuf    12
1.9.3   添加IP和UDP首部    13
1.9.4   IP输出    14
1.9.5   以太网输出    14
1.9.6   UDP输出小结    14
1.10   输入处理    15
1.10.1   以太网输入    15
1.10.2   IP输入    15
1.10.3   UDP输入    16
1.10.4   进程输入    17
1.11   网络实现概述(续)    17
1.12   中断级别与并发    18
1.13   源代码组织    20
1.14   测试网络    21
1.15   小结    22
第2章   mbuf:存储器缓存    24
2.1   引言    24
2.2   代码介绍    27
2.2.1   全局变量    27
2.2.2   统计    28
2.2.3   内核统计    28
2.3   mbuf的定义    29
2.4   mbuf结构    29
2.5   简单的mbuf宏和函数    31
2.5.1   m_get函数    32
2.5.2   MGET宏    32
2.5.3   m_retry函数    33
2.5.4   mbuf锁    34
2.6   m_devget和m_pullup函数    34
2.6.1   m_devget函数    34
2.6.2   mtod和dtom宏    36
2.6.3   m_pullup函数和连续的协议首部    36
2.6.4   m_pullup和IP的分片与重组    37
2.6.5   TCP重组避免调用m_pullup    39
2.6.6   m_pullup使用总结    40
2.7   mbuf宏和函数的小结    40
2.8   Net/3联网数据结构小结    42
2.9   m_copy和簇引用计数    43
2.10   其他选择    47
2.11   小结    47
第3章   接口层    49
3.1   引言    49
3.2   代码介绍    49
3.2.1   全局变量    49
3.2.2   SNMP变量    50
3.3   ifnet结构    51
3.4   ifaddr结构    57
3.5   sockaddr结构    58
3.6   ifnet与ifaddr的专用化    59
3.7   网络初始化概述    60
3.8   以太网初始化    61
3.9   SLIP初始化    64
3.10   环回初始化    65
3.11   if_attach函数    66
3.12   ifinit函数    72
3.13   小结    73
第4章   接口:以太网    74
4.1   引言    74
4.2   代码介绍    75
4.2.1   全局变量    75
4.2.2   统计量    75
4.2.3   SNMP变量    76
4.3   以太网接口    77
4.3.1   leintr函数    79
4.3.2   leread函数    79
4.3.3   ether_input函数    81
4.3.4   ether_output函数    84
4.3.5   lestart函数    87
4.4   ioctl系统调用    89
4.4.1   ifioctl函数    90
4.4.2   ifconf函数    91
4.4.3   举例    94
4.4.4   通用接口ioctl命令    95
4.4.5   if_down和if_up函数    96
4.4.6   以太网、SLIP和环回    97
4.5   小结    98
第5章   接口:SLIP和环回    100
5.1   引言    100
5.2   代码介绍    100
5.2.1   全局变量    100
5.2.2   统计量    101
5.3   SLIP接口    101
5.3.1   SLIP线路规程:SLIPDISC    101
5.3.2   SLIP初始化:slopen和slinit    103
5.3.3   SLIP输入处理:slinput    105
5.3.4   SLIP输出处理:sloutput    109
5.3.5   slstart函数    111
5.3.6   SLIP分组丢失    116
5.3.7   SLIP性能考虑    117
5.3.8   slclose函数    117
5.3.9   sltioctl函数    118
5.4   环回接口    119
5.5   小结    121
第6章   IP编址    123
6.1   引言    123
6.1.1   IP地址    123
6.1.2   IP地址的印刷规定    123
6.1.3   主机和路由器    124
6.2   代码介绍    125
6.3   接口和地址小结    125
6.4   sockaddr_in结构    126
6.5   in_ifaddr结构    127
6.6   地址指派    128
6.6.1   ifioctl函数    130
6.6.2   in_control函数    130
6.6.3   前提条件:SIOCSIFADDR、
           SIOCSIFNETMASK和
           SIOCSIFDSTADDR    132
6.6.4   地址指派:SIOCSIFADDR    133
6.6.5   in_ifinit函数    133
6.6.6   网络掩码指派:SIOCSIFNETMASK    136
6.6.7   目的地址指派:SIOCSIFDSTADDR    137
6.6.8   获取接口信息    137
6.6.9   每个接口多个IP地址    138
6.6.10   附加IP地址:SIOCAIFADDR    139
6.6.11   删除IP地址:SIOCDIFADDR    140
6.7   接口ioctl处理    141
6.7.1   leioctl函数    141
6.7.2   slioctl函数    142
6.7.3   loioctl函数    143
6.8   Internet实用函数    144
6.9   ifnet实用函数    144
6.10   小结    145
第7章   域和协议    146
7.1   引言    146
7.2   代码介绍    146
7.2.1   全局变量    147
7.2.2   统计量    147
7.3   domain结构    147
7.4   protosw结构    148
7.5   IP 的domain和protosw结构    150
7.6   pffindproto和pffindtype函数    155
7.7   pfctlinput函数    157
7.8   IP初始化    157
7.8.1   Internet传输分用    157
7.8.2   ip_init函数    158
7.9   sysctl系统调用    159
7.10   小结    161
第8章   IP:网际协议    162
8.1   引言    162
8.2   代码介绍    163
8.2.1   全局变量    163
8.2.2   统计量    163
8.2.3   SNMP变量    164
8.3   IP分组    165
8.4   输入处理:ipintr函数    167
8.4.1   ipintr概观    167
8.4.2   验证    168
8.4.3   转发或不转发    171
8.4.4   重装和分用    173
8.5   转发:ip_forward函数    174
8.6   输出处理:ip_output函数    180
8.6.1   首部初始化    181
8.6.2   路由选择    182
8.6.3   源地址选择和分片    184
8.7   Internet检验和:in_cksum函数    186
8.8   setsockopt和getsockopt系统调用    190
8.8.1   PRCO_SETOPT的处理    192
8.8.2   PRCO_GETOPT的处理    193
8.9   ip_sysctl函数    193
8.10   小结    194
第9章   IP选项处理    196
9.1   引言    196
9.2   代码介绍    196
9.2.1   全局变量    196
9.2.2   统计量    197
9.3   选项格式    197
9.4   ip_dooptions函数    198
9.5   记录路由选项    200
9.6   源站和记录路由选项    202
9.6.1   save_rte函数    205
9.6.2   ip_srcroute函数    206
9.7   时间戳选项    207
9.8   ip_insertoptions函数    210
9.9   ip_pcbopts函数    214
9.10   一些限制    217
9.11   小结    217
第10章   IP的分片与重装    218
10.1   引言    218
10.2   代码介绍    219
10.2.1   全局变量    220
10.2.2   统计量    220
10.3   分片    220
10.4   ip_optcopy函数    223
10.5   重装    224
10.6   ip_reass函数    227
10.7   ip_slowtimo函数    237
10.8   小结    238
第11章   ICMP:Internet控制报文协议    239
11.1   引言    239
11.2   代码介绍    242
11.2.1   全局变量    242
11.2.2   统计量    242
11.2.3   SNMP变量    243
11.3   icmp结构    244
11.4   ICMP 的protosw结构    245
11.5   输入处理:icmp_input函数    246
11.6   差错处理    249
11.7   请求处理    251
11.7.1   回显询问:ICMP_ECHO和
             ICMP_ECHOREPLY    252
11.7.2   时间戳询问:ICMP_TSTAMP和
             ICMP_TSTAMPREPLY    253
11.7.3   地址掩码询问:ICMP_MASKREQ和
             ICMP_MASKREPLY    253
11.7.4   信息询问:ICMP_IREQ和ICMP_
             IREQREPLY    255
11.7.5   路由器发现:ICMP_ROUTERADVERT
             和ICMP_ROUTERSOLICIT    255
11.8   重定向处理    255
11.9   回答处理    257
11.10   输出处理    257
11.11   icmp_error函数    258
11.12   icmp_reflect函数    261
11.13   icmp_send函数    265
11.14   icmp_sysctl函数    266
11.15   小结    266
第12章   IP多播    268
12.1   引言    268
12.2   代码介绍    269
12.2.1   全局变量    270
12.2.2   统计量    270
12.3   以太网多播地址    270
12.4   ether_multi结构    271
12.5   以太网多播接收    273
12.6   in_multi结构    273
12.7   ip_moptions结构    275
12.8   多播的插口选项    276
12.9   多播的TTL值    277
12.9.1   MBONE    278
12.9.2   扩展环搜索    278
12.10   ip_setmoptions函数    278
12.10.1   选择一个明确的多播接口:IP_
               MULTICAST_IF    280
12.10.2   选择明确的多播TTL: IP_ 
               MULTICAST_TTL    281
12.10.3   选择多播环回:IP_MULTICAST_
               LOOP    281
12.11   加入一个IP多播组    282
12.11.1   in_addmulti函数    285
12.11.2   slioctl和loioctl函数:SIOCADDMULTI和SIOCDELMULTI    287
12.11.3   leioctl函数:SIOCADDMULTI和
               SIOCDELMULTI    288
12.11.4   ether_addmulti函数    288
12.12   离开一个IP多播组    291
12.12.1   in_delmulti函数    292
12.12.2   ether_delmulti函数    293
12.13   ip_getmoptions函数    295
12.14   多播输入处理:ipintr函数    296
12.15   多播输出处理:ip_output函数    298
12.16   性能的考虑    301
12.17   小结    301
第13章   IGMP:Internet组管理协议    303
13.1   引言    303
13.2   代码介绍    304
13.2.1   全局变量    304
13.2.2   统计量    304
13.2.3   SNMP变量    305
13.3   igmp结构    305
13.4   IGMP的protosw的结构    306
13.5   加入一个组:igmp_joingroup函数    306
13.6   igmp_fasttimo函数    308
13.7   输入处理:igmp_input函数    311
13.7.1   成员关系查询:IGMP_HOST_
             MEMBERSHIP_QUERY    312
13.7.2   成员关系报告:IGMP_HOST_
             MEMBERSHIP_REPORT    313
13.8   离开一个组:igmp_leavegroup函数    314
13.9   小结    315
第14章   IP多播选路    316
14.1   引言    316
14.2   代码介绍    316
14.2.1   全局变量    316
14.2.2   统计量    317
14.2.3   SNMP变量    317
14.3   多播输出处理(续)    317
14.4   mrouted守护程序    318
14.5   虚拟接口    321
14.5.1   虚拟接口表    322
14.5.2   add_vif函数    324
14.5.3   del_vif函数    326
14.6   IGMP(续)    327
14.6.1   add_lgrp函数    328
14.6.2   del_lgrp函数    329
14.6.3   grplst_member函数    330
14.7   多播选路    331
14.7.1   多播选路表    334
14.7.2   del_mrt函数    335
14.7.3   add_mrt函数    336
14.7.4   mrtfind函数    337
14.8   多播转发:ip_mforward函数    338
14.8.1   phyint_send函数    343
14.8.2   tunnel_send函数    344
14.9   清理:ip_mrouter_done函数    345
14.10   小结    346
第15章   插口层    348
15.1   引言    348
15.2   代码介绍    349
15.3   socket结构    349
15.4   系统调用    354
15.4.1   举例    355
15.4.2   系统调用小结    355
15.5   进程、描述符和插口    357
15.6    socket系统调用    358
15.6.1   socreate函数    359
15.6.2   超级用户特权    361
15.7    getsock和sockargs函数    361
15.8    bind系统调用    363
15.9    listen系统调用    364
15.10   tsleep和wakeup函数    365
15.11   accept系统调用    366
15.12   sonewconn和soisconnected
函数    369
15.13   connect系统调用    372
15.13.1   soconnect函数    374
15.13.2   切断无连接插口和外部地址的
关联    375
15.14   shutdown系统调用    375
15.15   close系统调用    377
15.15.1   soo_close函数    377
15.15.2   soclose函数    378
15.16   小结    380
第16章   插口I/O    381
16.1   引言    381
16.2   代码介绍    381
16.3   插口缓存    381
16.4   write、writev、sendto和sendmsg
系统调用    384
16.5   sendmsg系统调用    387
16.6   sendit函数    388
16.6.1   uiomove函数    389
16.6.2   举例    390
16.6.3   sendit代码    391
16.7   sosend函数    392
16.7.1   可靠的协议缓存    393
16.7.2   不可靠的协议缓存    393
16.7.3   sosend函数小结    401
16.7.4   性能问题    401
16.8   read、readv、recvfrom和recvmsg
         系统调用    401
16.9   recvmsg系统调用    402
16.10   recvit函数    403
16.11   soreceive函数    405
16.11.1   带外数据    406
16.11.2   举例    406
16.11.3   其他的接收操作选项    407
16.11.4   接收缓存的组织:报文边界    407
16.11.5   接收缓存的组织:没有报文边界    408
16.11.6   控制信息和带外数据    409
16.12   soreceive代码    410
16.13   select系统调用    421
16.13.1   selscan函数    425
16.13.2   soo_select函数    425
16.13.3   selrecord函数    427
16.13.4   selwakeup函数    428
16.14   小结    429
第17章   插口选项    431
17.1   引言    431
17.2   代码介绍    431
17.3   setsockopt系统调用    432
17.4   getsockopt系统调用    437
17.5   fcntl和ioctl系统调用    440
17.5.1   fcntl代码    441
17.5.2   ioctl代码    443
17.6   getsockname系统调用    444
17.7   getpeername系统调用    445
17.8   小结    447
第18章   Radix树路由表    448
18.1   引言    448
18.2   路由表结构    448
18.3   选路插口    456
18.4   代码介绍    456
18.4.1   全局变量    458
18.4.2   统计量    458
18.4.3   SNMP变量    459
18.5   Radix结点数据结构    460
18.6   选路结构    463
18.7   初始化:route_init和rtable_init
函数    465
18.8   初始化:rn_init和rn_inithead
函数    468
18.9   重复键和掩码列表    471
18.10   rn_match函数    473
18.11   rn_search函数    480
18.12   小结    481
第19章   选路请求和选路消息    482
19.1   引言    482
19.2   rtalloc和rtalloc1函数    482
19.3   宏RTFREE和rtfree函数    484
19.4   rtrequest函数    486
19.5   rt_setgate函数    491
19.6   rtinit函数    493
19.7   rtredirect函数    495
19.8   选路消息的结构    498
19.9   rt_missmsg函数    501
19.10   rt_ifmsg函数    503
19.11   rt_newaddrmsg函数    504
19.12   rt_msg1函数    505
19.13   rt_msg2函数    507
19.14   sysctl_rtable函数    510
19.15   sysctl_dumpentry函数    514
19.16   sysctl_iflist函数    515
19.17   小结    517
第20章   选路插口    518
20.1   引言    518
20.2   routedomain和protosw结构    518
20.3   选路控制块    519
20.4   raw_init函数    520
20.5   route_output函数    520
20.6   rt_xaddrs函数    530
20.7   rt_setmetrics函数    531
20.8   raw_input函数    532
20.9   route_usrreq函数    534
20.10   raw_usrreq函数    535
20.11   raw_attach、raw_detach和raw_disconnect函数    539
20.12   小结    540
第21章   ARP:地址解析协议    542
21.1   介绍    542
21.2   ARP和路由表    542
21.3   代码介绍    544
21.3.1   全局变量    544
21.3.2   统计量    544
21.3.3   SNMP变量    546
21.4   ARP结构    546
21.5   arpwhohas函数    548
21.6   arprequest函数    548
21.7   arpintr函数    551
21.8   in_arpinput函数    552
21.9   ARP定时器函数    557
21.9.1   arptimer函数    557
21.9.2   arptfree函数    557
21.10   arpresolve函数    558
21.11   arplookup函数    562
21.12   代理ARP    563
21.13   arp_rtrequest函数    564
21.14   ARP和多播    569
21.15   小结    570
第22章   协议控制块    572
22.1   引言    572
22.2   代码介绍    573
22.2.1   全局变量    574
22.2.2   统计量    574
22.3   inpcb的结构    574
22.4   in_pcballoc和in_pcbdetach函数    575
22.5   绑定、连接和分用    577
22.6   in_pcblookup函数    581
22.7   in_pcbbind函数    584
22.8   in_pcbconnect函数    589
22.9   in_pcbdisconnect函数    594
22.10   in_setsockaddr和in_setpeeraddr
函数    595
22.11   in_pcbnotify、in_rtchange和in_losing函数    595
22.11.1   in_rtchange函数    598
22.11.2   重定向和原始插口    599
22.11.3   ICMP差错和UDP插口    600
22.11.4   in_losing函数    601
22.12   实现求精    602
22.13   小结    602
第23章   UDP:用户数据报协议    605
23.1   引言    605
23.2   代码介绍    605
23.2.1   全局变量    606
23.2.2   统计量    606
23.2.3   SNMP变量    607
23.3   UDP 的protosw结构    607
23.4   UDP的首部    608
23.5   udp_init函数    609
23.6   udp_output函数    609
23.6.1   在前面加上IP/UDP首部和mbuf簇    612
23.6.2   UDP检验和计算和伪首部    612
23.7   udp_input函数    616
23.7.1   对收到的UDP数据报的一般确认    616
23.7.2   分用单播数据报    619
23.7.3   分用多播和广播数据报    622
23.7.4   连接上的UDP插口和多接口主机    625
23.8   udp_saveopt函数    625
23.9   udp_ctlinput函数    627
23.10   udp_usrreq函数    628
23.11   udp_sysctl函数    633
23.12   实现求精    633
23.12.1   UDP PCB高速缓存    633
23.12.2   UDP检验和    634
23.13 小结    635
第24章   TCP:传输控制协议    636
24.1   引言    636
24.2   代码介绍    636
24.2.1   全局变量    636
24.2.2   统计量    637
24.2.3   SNMP变量    640
24.3   TCP 的protosw结构    641
24.4   TCP的首部    641
24.5   TCP的控制块    643
24.6   TCP的状态变迁图    645
24.7   TCP的序号    646
24.8   tcp_init函数    650
24.9   小结    652
第25章   TCP的定时器    654
25.1   引言    654
25.2   代码介绍    655
25.3   tcp_canceltimers函数    657
25.4   tcp_fasttimo函数    657
25.5   tcp_slowtimo函数    658
25.6   tcp_timers函数    659
25.6.1   FIN_WAIT_2和2MSL定时器    660
25.6.2   持续定时器    662
25.6.3   连接建立定时器和保活定时器    662
25.7   重传定时器的计算    665
25.8   tcp_newtcpcb算法    666
25.9   tcp_setpersist函数    668
25.10   tcp_xmit_timer函数    669
25.11   重传超时:tcp_timers函数    673
25.11.1   慢起动和避免拥塞    675
25.11.2   精确性    677
25.12   一个RTT的例子    677
25.13   小结    679
第26章   TCP输出    680
26.1   引言    680
26.2   tcp_output概述    680
26.3   决定是否应发送一个报文段    682
26.4   TCP选项    691
26.5   窗口大小选项     692
26.6   时间戳选项    692
26.6.1   哪个时间戳需要回显,RFC1323
算法    694
26.6.2   哪个时间戳需要回显,正确的
算法    695
26.6.3   时间戳与延迟ACK    695
26.7   发送一个报文段    696
26.8   tcp_template函数    707
26.9   tcp_respond函数    708
26.10   小结    710
第27章   TCP的函数    712
27.1   引言    712
27.2   tcp_drain函数    712
27.3   tcp_drop函数    712
27.4   tcp_close函数    713
27.4.1   路由特性    713
27.4.2   资源释放    716
27.5   tcp_mss函数    717
27.6   tcp_ctlinput函数    722
27.7   tcp_notify函数    723
27.8   tcp_quench函数    724
27.9   TCP_REASS宏和tcp_reass函数    724
27.9.1   TCP_REASS宏    725
27.9.2   tcp_reass函数    727
27.10   tcp_trace函数    732
27.11   小结    736
第28章   TCP的输入    737
28.1   引言    737
28.2   预处理    739
28.3   tcp_dooptions函数    745
28.4   首部预测    747
28.5   TCP输入:缓慢的执行路径    752
28.6   完成被动打开或主动打开    752
28.6.1   完成被动打开    753
28.6.2   完成主动打开    756
28.7   PAWS:防止序号回绕    760
28.8   裁剪报文段使数据在窗口内    762
28.9   自连接和同时打开    768
28.10   记录时间戳    770
28.11   RST处理    770
28.12   小结    772
第29章   TCP的输入(续)    773
29.1   引言    773
29.2   ACK处理概述    773
29.3   完成被动打开和同时打开    774
29.4   快速重传和快速恢复的算法    775
29.5   ACK处理    778
29.6   更新窗口信息    784
29.7   紧急方式处理    786
29.8   tcp_pulloutofband函数    788
29.9   处理已接收的数据    789
29.10   FIN处理    791
29.11   最后的处理    793
29.12   实现求精    795
29.13   首部压缩    795
29.13.1   引言    796
29.13.2   首部字段的压缩    799
29.13.3   特殊情况    801
29.13.4   实例    802
29.13.5   配置    803
29.14   小结    803
第30章   TCP的用户需求    805
30.1   引言    805
30.2   tcp_usrreq函数    805
30.3   tcp_attach函数    814
30.4   tcp_disconnect函数    815
30.5   tcp_usrclosed函数    816
30.6   tcp_ctloutput函数    817
30.7   小结    820
第31章   BPF:BSD 分组过滤程序    821
31.1   引言    821
31.2   代码介绍    821
31.2.1   全局变量    821
31.2.2   统计量    822
31.3   bpf_if结构    822
31.4   bpf_d结构    825
31.4.1   bpfopen函数    826
31.4.2   bpfioctl函数    827
31.4.3   bpf_setif函数    830
31.4.4   bpf_attachd函数    831
31.5   BPF的输入    832
31.5.1   bpf_tap函数    832
31.5.2   catchpacket函数    833
31.5.3   bpfread函数    835
31.6   BPF的输出    837
31.7   小结    838
第32章   原始IP    839
32.1   引言    839
32.2   代码介绍    839
32.2.1   全局变量    839
32.2.2   统计量    840
32.3   原始 IP的protosw结构    840
32.4   rip_init函数    842
32.5   rip_input函数    842
32.6   rip_output函数    844
32.7   rip_usrreq函数    846
32.8   rip_ctloutput函数    850
32.9   小结    852
结束语    853
附录A   部分习题的解答    854
附录B   源代码的获取    872
附录C   RFC 1122 的有关内容    874
参考文献    895

卷三目录:
目      录
译者序
前言
第一部分   TCP事务协议
第1章   T/TCP概述    1
1.1   概述    1
1.2   UDP上的客户-服务器    1
1.3   TCP上的客户-服务器    6
1.4   T/TCP上的客户-服务器    12
1.5   测试网络    15
1.6   时间测量程序    15
1.7   应用    17
1.8   历史    19
1.9   实现    20
1.10   小结    21
第2章   T/TCP协议    23
2.1   概述    23
2.2   T/TCP中的新TCP选项    23
2.3   T/TCP实现所需变量    25
2.4   状态变迁图    27
2.5   T/TCP的扩展状态    28
2.6   小结    30
第3章   T/TCP使用举例    31
3.1   概述    31
3.2   客户重新启动    31
3.3   常规的T/TCP事务    33
3.4   服务器收到过时的重复SYN    34
3.5   服务器重启动    35
3.6   请求或应答超出报文段最大长度MSS    36
3.7   向后兼容性    39
3.8   小结    41
第4章   T/TCP协议(续)    43
4.1   概述    43
4.2   客户的端口号和TIME_WAIT状态    43
4.3   设置TIME_WAIT状态的目的    45
4.4   TIME_WAIT状态的截断    48
4.5   利用TAO跳过三次握手    51
4.6   小结    55
第5章   T/TCP协议的实现:插口层    56
5.1   概述    56
5.2   常量    56
5.3   sosend函数    56
5.4   小结    58
第6章   T/TCP的实现:路由表    59
6.1   概述    59
6.2   代码介绍    59
6.3   radix_node_head结构    60
6.4   rtentry结构    61
6.5   rt_metrics结构    61
6.6   in_inithead函数    61
6.7   in_addroute函数    62
6.8   in_matroute函数    63
6.9   in_clsroute函数    63
6.10   in_rtqtimo函数    64
6.11   in_rtqkill函数    66
6.12   小结    69
第7章   T/TCP实现:协议控制块    70
7.1   概述    70
7.2   in_pcbladdr函数    71
7.3   in_pcbconnect函数    71
7.4   小结    72
第8章   T/TCP实现: TCP概要    73
8.1   概述    73
8.2   代码介绍    73
8.3   TCP的protosw结构    74
8.4   TCP控制块    74
8.5   tcp_init函数    75
8.6   tcp_slowtimo函数    75
8.7   小结    76
第9章   T/TCP实现:TCP输出    77
9.1   概述    77
9.2   tcp_output函数    77
9.2.1   新的自动变量    77
9.2.2   增加隐藏的状态标志    77
9.2.3   在SYN_SENT状态不要重传SYN    78
9.2.4   发送器的糊涂窗口避免机制    78
9.2.5   有RST或SYN标志时强制发送报文段    79
9.2.6   发送MSS选项    80
9.2.7   是否发送时间戳选项    80
9.2.8   发送T/TCP的CC选项    80
9.2.9   根据TCP选项调整数据长度    83
9.3   小结    83
第10章  T/TCP实现:TCP函数    84
10.1   概述    84
10.2   tcp_newtcpcb函数    84
10.3   tcp_rtlookup函数    85
10.4   tcp_gettaocache函数    86
10.5   重传超时间隔的计算    86
10.6   tcp_close函数    89
10.7   tcp_msssend函数    90
10.8   tcp_mssrcvd函数    91
10.9   tcp_dooptions函数    96
10.10   tcp_reass函数    98
10.11   小结    99
第11章   T/TCP实现:TCP输入    101
11.1   概述    101
11.2   预处理    103
11.3   首部预测    104
11.4   被动打开的启动    105
11.5   主动打开的启动    108
11.6   PAWS:防止序号重复    114
11.7   ACK处理    115
11.8   完成被动打开和同时打开    115
11.9   ACK处理(续)    116
11.10   FIN处理    118
11.11   小结    119
第12章   T/TCP实现:TCP用户请求    120
12.1   概述    120
12.2   PRU_CONNECT请求    120
12.3   tcp_connect函数    120
12.4   PRU_SEND和PRU_SEND_EOF请求    124
12.5   tcp_usrclosed函数    125
12.6   tcp_sysctl函数    126
12.7   T/TCP的前景    126
12.8   小结    127
第二部分   TCP的其他应用
第13章   HTTP:超文本传送协议    129
13.1   概述    129
13.2   HTTP和HTML概述    130
13.3   HTTP    132
13.3.1   报文类型:请求与响应    132
13.3.2   首部字段    133
13.3.3   响应代码    133
13.3.4   各种报文头举例    134
13.3.5   例子:客户程序缓存    135
13.3.6   例子:服务器重定向    136
13.4   一个例子    136
13.5   HTTP的统计资料    138
13.6   性能问题    139
13.7   小结    141
第14章   在HTTP服务器上找到的分组    142
14.1   概述    142
14.2   多个HTTP服务器    144
14.3   客户端SYN的到达间隔时间    145
14.4   RTT的测量    149
14.5   用listen设置入连接队列的容量    150
14.6   客户端的SYN选项    154
14.7   客户端的SYN重传    156
14.8   域名    157
14.9   超时的持续探测    157
14.10   T/TCP路由表大小的模拟    160
14.11   mbuf的交互    162
14.12   TCP的PCB高速缓存和首部预测    163
14.13   小结    165
第15章   NNTP:网络新闻传送协议    166
15.1   概述    166
15.2   NNTP    167
15.3   一个简单的新闻客户    170
15.4   一个复杂的新闻客户    171
15.5   NNTP的统计资料    172
15.6   小结    173
第三部分   Unix域协议
第16章   Unix域协议:概述    175
16.1   概述    175
16.2   用途    176
16.3   性能    177
16.4   编码举例    177
16.5   小结    179
第17章   Unix域协议:实现    180
17.1   概述    180
17.2   代码介绍    180
17.3   Unix domain和protosw结构    181
17.4   Unix域插口地址结构    182
17.5   Unix域协议控制块    183
17.6   uipc_usrreq函数    185
17.7   PRU_ATTACH请求和unp_attach函数    186
17.8   PRU_DETACH请求和unp_detach函数    187
17.9   PRU_BIND请求和unp_bind函数    189
17.10   PRU_CONNECT请求和unp_connect
函数    191
17.11   PRU_CONNECT2请求和unp_connect2
函数    195
17.12   socketpair系统调用    198
17.13   pipe系统调用    202
17.14   PRU_ACCEPT请求    203
17.15   PRU_DISCONNECT请求和
unp_disconnect函数    204
17.16   PRU_SHUTDOWN请求和unp_shutdown
函数    205
17.17   PRU_ABORT请求和unp_drop函数    206
17.18   其他各种请求    207
17.19   小结    209
第18章   Unix域协议:I/O和描述符的传递    210
18.1   概述    210
18.2   PRU_SEND和PRU_RCVD请求    210
18.3   描述符的传递    214
18.4   unp_internalize函数    218
18.5   unp_externalize函数    220
18.6   unp_discard函数    221
18.7   unp_dispose函数    222
18.8   unp_scan函数    222
18.9   unp_gc函数    223
18.10   unp_mark函数    230
18.11   性能(再讨论)    231
18.12   小结    231
附录A   测量网络时间    232
附录B   编写T/TCP应用程序    242
参考文献    246
缩略语    251

TCP-IP详解卷1,2,3 PDF电子版下载(呵呵,光这部电子书就占了我将近50MB的空间啊)

File: Click to Download

[日志信息]

该日志于 2009-02-25 17:57 由 redice 发表在 redice's Blog ,你除了可以发表评论外,还可以转载 “TCP-IP详解卷1,2,3 PDF电子版下载” 日志到你的网站或博客,但是请保留源地址及作者信息,谢谢!!    (尊重他人劳动,你我共同努力)
   
验证(必填):   点击我更换验证码

redice's Blog  is powered by DedeCms |  Theme by Monkeii.Lee |  网站地图 |  本服务器由西安鲲之鹏网络信息技术有限公司友情提供

返回顶部