作为网络程序员,你是否发现自己的应用程序远远不够健壮?那么,你需要了解编写高效TCP/IP程序所需的各种知识。本书正是这么一本经典著作,它专注于协议族中那些细微的特性,提炼出的44个技巧可立竿见影地提升编程能力。
本书在介绍这些技巧的同时,对TCP/IP编程的基本思想和概念进行了说明,结合大量实例透彻解析了TCP/IP中的实践经验以及法则,还说明了如何避免网络编程中一些最常见的问题。书中提供的框架代码和常用函数库让你能够方便快捷地编写出应用程序,而无需操心一些细枝末节。
书中对下列问题提出了宝贵建议:
IP编址、子网以及CIDR的研究
使用套接字接口代替XTI/TLI
使用两条TCP连接
使应用程序成为事件驱动的
使用一次大规模写操作代替多次小规模写操作
避免数据复制
理解TCP可靠性的涵义
认识缓冲区大小带来的影响
高效使用tcpdump、traceroute、netstat和ping
第1章 概述 1
1.1 几个约定 1
1.2 本书其余部分的内容介绍 2
1.3 客户端—服务器结构 4
1.4 对基本套接字API的回顾 5
1.5 小结 12
第2章 基本概念 13
2.1 技巧1:理解面向连接和无连接协议之间的区别 13
2.2 技巧2:理解子网和CIDR的概念 18
2.2.1 分类编址 18
2.2.2 子网划分 21
2.2.3 CIDR 26
2.2.4 子网划分和CIDR的状态 27
2.2.5 小结 27
2.3 技巧3:理解私有地址和NAT 28
2.4 技巧4:开发并使用应用程序“框架” 30
2.4.1 TCP服务器框架 31
2.4.2 TCP客户端框架 36
2.4.3 UDP服务器框架 38
2.4.4 UDP客户端框架 39
2.4.5 小结 41
2.5 技巧5:套接字接口比XTI/TLI更好用 41
2.6 技巧6:记住,TCP是一种流协议 43
2.7 技巧7:不要低估TCP的性能 50
2.7.1 UDP源程序与接收程序 52
2.7.2 TCP源程序及接收程序 53
2.7.3 小结 59
2.8 技巧8:避免重新编写TCP 59
2.9 技巧9:要认识到TCP是一个可靠的,但并不绝对可靠的协议 61
2.9.1 可靠性——是什么,不是什么 61
2.9.2 故障模式 63
2.9.3 网络中断 63
2.9.4 对等实体崩溃 64
2.9.5 对等实体的主机崩溃 68
2.9.6 小结 69
2.10 技巧10:记住,TCP/IP不是轮询的 69
2.10.1 保持活跃 70
2.10.2 心跳信号 71
2.10.3 另一个例子 76
2.10.4 小结 81
2.11 技巧11:提防对等实体的不友好动作 81
2.11.1 检测客户端的终止 82
2.11.2 检测无效输入 84
2.11.3 小结 88
2.12 技巧12:成功的LAN策略不一定能推广到WAN中去 88
2.12.1 性能问题举例 88
2.12.2 隐含错误举例 89
2.12.3 小结 93
2.13 技巧13:了解协议是怎样工作的 93
2.14 技巧14:不要把OSI七层参考模型太当回事 94
2.14.1 OSI模型 95
2.14.2 TCP/IP模型 96
2.14.3 小结 98
第3章 构建高效且健壮的网络程序 99
3.1 技巧15:理解TCP的写操作 99
3.1.1 从应用程序的角度看写操作 99
3.1.2 从TCP角度看写操作 100
3.1.3 小结 103
3.2 技巧16:理解TCP的有序释放操作 103
3.2.1 shutdown调用 104
3.2.2 有序释放 106
3.2.3 小结 110
3.3 技巧17:考虑用inetd来装载应用程序 111
3.3.1 TCP服务器 111
3.3.2 UDP服务器 114
3.3.3 小结 118
3.4 技巧18:考虑用tcpmux为服务器“分配”知名端口 118
3.5 技巧19:考虑使用两条TCP连接 126
3.5.1 单连接结构 127
3.5.2 双连接架构 128
3.5.3 小结 133
3.6 技巧20:使应用程序成为事件驱动的(1) 133
3.7 技巧21:使应用程序成为事件驱动的(2) 140
3.8 技巧22:不要用TIME-WAIT暗杀来关闭一条连接 147
3.8.1 它是什么 147
3.8.2 为什么要使用它 149
3.8.3 TIME-WAIT暗杀 150
3.8.4 小结 151
3.9 技巧23:服务器应该设置SO_REUSEADDR选项 151
3.10 技巧24:可能的话,使用一个大规模的写操作,而不是多个小规模的写操作 155
3.10.1 禁用Nagle算法 158
3.10.2 将写操作合并起来 159
3.10.3 小结 161
3.11 技巧25:理解如何使connect调用超时 162
3.11.1 使用告警 162
3.11.2 使用select 164
3.11.3 小结 167
3.12 技巧26:避免数据复制 167
3.12.1 共享内存缓冲区 168
3.12.2 一个共享内存缓冲区系统 169
3.12.3 一个UNIX实现 171
3.12.4 一个Windows实现 175
3.12.5 小结 179
3.13 技巧27:使用前将结构sockadddr_in清零 179
3.14 技巧28:不要忘记字节的性别 180
3.15 技巧29:不要将IP地址或端口号硬编入应用程序中 182
3.16 技巧30:理解已连接的UDP套接字 187
3.17 技巧31:记住,并不是所有程序都是用C编写的 190
3.18 技巧32:理解缓冲区长度带来的影响 195
第4章 工具和资源 199
4.1 技巧33:熟悉ping实用工具 199
4.2 技巧34:学习使用tcpdump或类似的工具 201
4.2.1 tcpdump是如何工作的 202
4.2.2 使用tcpdump 205
4.2.3 tcpdump的输出 206
4.2.4 小结 210
4.3 技巧35:学习使用traceroute 210
4.3.1 traceroute是如何工作的 212
4.3.2 Windows TRACERT 214
4.3.3 小结 215
4.4 技巧36:学习使用ttcp 215
4.5 技巧37:学习使用lsof 219
4.6 技巧38:学习使用netstat 221
4.6.1 活动套接字 221
4.6.2 接口 223
4.6.3 路由表 223
4.6.4 协议统计 225
4.6.5 Windows版的netstat 227
4.6.6 小结 227
4.7 技巧39:学习使用系统中的调用追踪工具 227
4.7.1 过早终止 227
4.7.2 ttcp性能问题 231
4.7.3 小结 232
4.8 技巧40:构建并使用捕获ICMP报文的工具 233
4.8.1 读取ICMP报文 233
4.8.2 打印ICMP报文 234
4.8.3 小结 239
4.9 技巧41:读Stevens的书 240
4.9.1 《TCP/IP详解》丛书 240
4.9.2 《UNIX网络编程》丛书 241
4.10 技巧42:阅读代码 242
4.11 技巧43:访问RFC编辑者的页面 243
4.12 技巧44:经常访问新闻组 244
附录A 各种UNIX代码 247
附录B 各种Windows代码 250
参考书目 253
索引 257
《互联网+教育:技术应用》内容简介:本书围绕教育发展过程中不断出现的新需求及应对各种需求的技术应用,从互联网+教育在教育信息
《宋词三百首》内容简介:《宋词三百首》起初由朱祖谋编选。朱祖谋原名朱孝臧,字藿生,一字古微,一作古薇,号沤尹,又号彊村,浙
《拉通》内容简介:怎样加快项目或订单的获取和交付,实现高效增长?怎样提高部门之间、员工之间的协作效率或人效?怎样判断并从根
《深入RabbitMQ》内容简介:本书对RabbitMQ这一业界主流的消息中间件做了全面介绍,给出了如何使用RabbitMQ构建消息通信系统的方法
《从秦朝说起,到清朝结束(二):楚汉争雄》内容简介:秦朝末年,作为反秦起义军的两股重要力量,刘邦和项羽不约而同地登上了历史
3天学会电脑维修-(附赠多媒体光盘1张) 内容简介 在电脑的故障中,有80%左右是人为故障,即由于使用不当造成的,正确的使用习惯是电脑的保护神。使用不当包括电脑...
《一分钟对视,读懂孩子的心》内容简介:本书通过一分钟面对面识人的原创技术和亲子对视的实际咨询案例,帮助3到10岁孩子的父母们提
创造力是我们解决问题的源泉。本书试图用图解思维的方法启发设计师积极提升产品创意的能力,而这正是传统的教育方法所忽略的部分
《设计模式的艺术:软件开发人员内功修炼之道》内容简介:软件开发是一门技术,更是一门艺术。设计模式是面向对象软件开发的入门功
Android开发从入门到精通-项目案例版 本书特色 《Android开发从入门到精通(项目案例版)》作为Android书籍,从1行代码开始,详尽讲述了Andr...
《打造你的话语权》内容简介:采取不同寻常的沟通方式,说出富有力量而又不失风度的话语,就能高效解决生活中火星四射的交流困境,
《深入Linux设备驱动程序内核机制》内容简介:这是一本系统阐述Linux设备驱动程序技术内幕的专业书籍,它的侧重点不是讨论如何在
《深入浅出SSD:固态存储核心技术、原理与实战》内容简介:本书的内容几乎覆盖了SSD各个模块,既可以作为一本入门书籍进行通读,也
《漫长的寒冬:失落之城》内容简介:永生不再是神话,而是选择 ●《亚特兰蒂斯》作者A.G.利德尔 ●颠覆想象的史诗级科幻巨著完结篇
C程序设计语言(第2版.新版)习题解答 本书特色 本书是对Brian W.Kernighan和Dennis M.Ritchie所著的《C程序设计语言(第2版·新...
《商务英语写作100主题》内容简介:互联网+时代,你最需要的英语学习书! 100个商务主题,200篇标准范文,2000余个扩充例句,微信推
《松子落》内容简介:一个人有一个人的京都。九年时光,青翠转浓荫,是漫长光阴凝缩作一粒琥珀,是长镜头流转中的迅疾一瞬。苏枕书
《百年求索:演进与跃迁》内容简介:书稿内容来自2019年春节在北京中法大学旧址举办的中华优秀传统文化进入山东地方必修课程研讨对
“Inthisupdatedandexpandededitionofherexcellenttelecommunicationsprim...
《进阶理解版式设计(附盘)》装帧精美,附赠1CD和可撕式字体卡。内容可操作性强,理论扎实,案例新颖。后勒口可以撕下来,增加了读