种豆资源网

当前位置:首页 > 百科 > 百科综合 / 正文

TCP/IP详解(卷2)

(2018-09-01 02:23:26) 百科综合
TCP/IP详解(卷2)

TCP/IP详解(卷2)

TCP/IP详解(卷2)是由机械工业出版社出版发行,作者是(美)莱特,(美)史蒂文斯 着,陆雪莹,该书完整而详细地介绍了TCP/IP协定是如何实现的。

基本介绍

  • 书名:TCP/IP详解(卷2)
  • 作者:(美)莱特,(美)史蒂文斯 着,陆雪莹
  • 出版社:机械工业出版社
  • 出版时间:2004-1-1

图书信息

作 者:(美)莱特,(美)史蒂文斯 着,陆雪莹等 译
出 版 社:机械工业出版社
出版时间:2004-1-1
版 次:1
页 数:901
印刷时间:2004-1-1
纸 张:胶版纸
印 次:1
I S B N:9787111075677
包 装:平装

内容简介

书中给出了约500个图例,15 000行实际操作的C代码,採用举例教学的方法帮助你掌握TCP/IP实现。本书不仅说明了插口API和协定族的关係以及主机实现与路由器实现的差别。还介绍了4.4BSD-Lite版的新的特点,如多播、长肥管道支持、视窗缩放、时间戳选项以及其他主题等等。读者阅读本书时,应当具备卷1中阐述的关于TCP/IP的基本知识。

书本目录

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

标 签

搜索
随机推荐

Powered By 种豆资源网||