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

AXIHE / 精选资源

浏览全部教程

面试题

学习网站

前端培训
自己甄别

前端书籍

关于朱安邦

我叫 朱安邦,阿西河的站长,在杭州。

以前是一名平面设计师,后来开始接接触前端开发,主要研究前端技术中的JS方向。

业余时间我喜欢分享和交流自己的技术,欢迎大家关注我的 Bilibili

关注我: Github / 知乎

目前重心已经放在研究区块链上面了

我叫朱安邦,阿西河的站长

目前在杭州从事区块链周边的开发工作,机械专业,以前从事平面设计工作。

2014年底脱产在老家自学6个月的前端技术,自学期间几乎从未出过家门,最终找到了满意的前端工作。更多>