TCP/IP详解 卷2:实现
加里?R. 赖特(Gary R. Wright)研究TCP/IP多年。他是Connix公司的董事长,Connix公司的总部在康涅狄格州,主要提供Internet接入和咨询服务。W. 理查德 史蒂文斯(W. Richard Stevens)(1951—1999)是国际知名的Unix和网络专家,备受赞誉的技术作家。生前著有《TCP/IP 详解》(三卷本)、《UNIX网络编程》(两卷本)以及《UNIX环境高级编程》,均为不朽的经典著作。
本书完整而详细地介绍了TCP/IP协议是如何实现的。书中给出了约500个图例,15000行实际操作的C代码,采用举例教学的方法帮助你掌握TCP/IP实现。本书不仅说明了插口API和协议族的关系以及主机实现与路由器实现的差别。还介绍了4.4BSD-Lite版的新的特点。本书适用于希望理解TCP/IP协议如何实现的人,包括编写网络应用程序的程序员以及利用TCP/IP维护计算机网络的系统管理员。
出版者的话
译者序
前言
第1章 概述1
1.1 引言1
1.2 源代码表示1
1.2.1 将拥塞窗口设置为11
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 包含插口地址结构的mbuf11
1.9.2 包含数据的mbuf12
1.9.3 添加IP和UDP13
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_pullup39
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线路规程:SLIPDISC101
5.3.2 SLIP初始化:slopen和slinit103
5.3.3 SLIP输入处理:slinput105
5.3.4 SLIP输出处理:sloutput109
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和SIOCSIFDSTADDR132
6.6.4 地址指派:SIOCSIFADDR133
6.6.5 in_ifinit函数133
6.6.6 网络掩码指派:SIOCSIFNETMASK136
6.6.7 目的地址指派:SIOCSIFDSTADDR137
6.6.8 获取接口信息137
6.6.9 每个接口多个IP地址138
6.6.10 附加IP地址:SIOCAIFADDR139
6.6.11 删除IP地址:SIOCDIFADDR140
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
^ 收 起
译者序
前言
第1章 概述1
1.1 引言1
1.2 源代码表示1
1.2.1 将拥塞窗口设置为11
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 包含插口地址结构的mbuf11
1.9.2 包含数据的mbuf12
1.9.3 添加IP和UDP13
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_pullup39
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线路规程:SLIPDISC101
5.3.2 SLIP初始化:slopen和slinit103
5.3.3 SLIP输入处理:slinput105
5.3.4 SLIP输出处理:sloutput109
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和SIOCSIFDSTADDR132
6.6.4 地址指派:SIOCSIFADDR133
6.6.5 in_ifinit函数133
6.6.6 网络掩码指派:SIOCSIFNETMASK136
6.6.7 目的地址指派:SIOCSIFDSTADDR137
6.6.8 获取接口信息137
6.6.9 每个接口多个IP地址138
6.6.10 附加IP地址:SIOCAIFADDR139
6.6.11 删除IP地址:SIOCDIFADDR140
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
^ 收 起
加里?R. 赖特(Gary R. Wright)研究TCP/IP多年。他是Connix公司的董事长,Connix公司的总部在康涅狄格州,主要提供Internet接入和咨询服务。W. 理查德 史蒂文斯(W. Richard Stevens)(1951—1999)是国际知名的Unix和网络专家,备受赞誉的技术作家。生前著有《TCP/IP 详解》(三卷本)、《UNIX网络编程》(两卷本)以及《UNIX环境高级编程》,均为不朽的经典著作。
本书完整而详细地介绍了TCP/IP协议是如何实现的。书中给出了约500个图例,15000行实际操作的C代码,采用举例教学的方法帮助你掌握TCP/IP实现。本书不仅说明了插口API和协议族的关系以及主机实现与路由器实现的差别。还介绍了4.4BSD-Lite版的新的特点。本书适用于希望理解TCP/IP协议如何实现的人,包括编写网络应用程序的程序员以及利用TCP/IP维护计算机网络的系统管理员。
比价列表