阿西河

所有教程

公众号
🌙
阿西河前端的公众号

我的收藏

    最近访问  (文章)

      教程列表

      抓包专区
      测试专区

      TCP/IP 详解卷 - 实现

      TCP/IP 详解卷 - 实现

      内容简介

      本书完整而详细地介绍了 TCP/IP 协议是如何实现的。书中给出了约 500 个图例,15000 行实际操作的 C 代码,采用举例教学的方法帮助你掌握 TCP/IP 实现。本书不仅说明了插口 API 和协议族的关系以及主机实现与路由器实现的差别。还介绍了 4.4BSD-Lite 版的新的特点。本书适用于希望理解 TCP/IP 协议如何实现的人,包括编写网络应用程序的程序员以及利用 TCP/IP 维护计算机网络的系统管理员。

      作者简介

      加里;R. 赖特(Gary R. Wright)研究 TCP/IP 多年。他是 Connix 公司的董事长,Connix 公司的总部在康涅狄格州,主要提供 Internet 接入和咨询服务。 W. 理查德 史蒂文斯(W. Richard Stevens)(1951—1999)是国际的 Unix 和网络专家,备受赞誉的技术作家。生前著有《TCP/IP 详解》(三卷本)、《UNIX 网络编程》(两卷本)以及《UNIX 环境高级编程》,均为不朽的经典著作。

      目录

      • 出版者的话
      • 译者序
      • 前言

      第 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 和 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_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
      目录
      目录