目      录
译者序
前言
第一部分   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

