图书介绍
TCP/IP网络编程原理与技术PDF|Epub|txt|kindle电子书版本网盘下载
![TCP/IP网络编程原理与技术](https://www.shukui.net/cover/33/32412048.jpg)
- 钟辉等编著 著
- 出版社: 北京:清华大学出版社
- ISBN:9787302526025
- 出版时间:2019
- 标注页数:193页
- 文件大小:73MB
- 文件页数:205页
- 主题词:计算机网络-通信协议-教材;计算机网络-程序设计-教材
PDF下载
下载说明
TCP/IP网络编程原理与技术PDF格式电子书版下载
下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!
(文件页数 要大于 标注页数,上中下等多册电子书除外)
注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具
图书目录
第1章 网络编程准备1
1.1 TCP/IP技术的因特网应用1
1.2 用TCP/IP构建分布式环境设计应用程序2
1.3 用TCP/IP构建的标准和非标准应用协议2
1.4 使用TCP/IP标准应用协议的例子2
1.5 Telnet连接的例子3
1.6 使用Telnet访问其他服务4
1.7 TCP/IP应用协议和软件灵活性5
1.8 从提供者的角度看服务5
1.9 本教材内容介绍6
1.10 小结6
习题6
第2章 客户-服务器模式软件设计概念8
2.1 客户-服务器的起源8
2.2 客户-服务器关键问题9
2.3 客户-服务器术语9
2.3.1 客户和服务器10
2.3.2 服务器特权和复杂性10
2.3.3 标准和非标准客户软件10
2.3.4 客户的参数化11
2.3.5 无连接的和面向连接的服务器11
2.3.6 无状态和有状态服务器12
2.3.7 无状态文件服务器的例子13
2.3.8 有状态文件服务器的例子13
2.3.9 客户标识14
2.3.10 无状态是一个协议问题15
2.3.11 充当客户的服务器16
2.4 小结16
习题17
第3章 客户-服务器模式软件中的并发处理18
3.1 引言18
3.2 网络中的并发18
3.3 服务器中的并发19
3.4 并发术语20
3.4.1 进程概念20
3.4.2 局部和全局变量的共享21
3.4.3 过程调用22
3.5 一个创建并发进程的例子22
3.5.1 一个顺序执行的C实例22
3.5.2 程序的并发版本23
3.5.3 时间分片24
3.5.4 单线程的进程25
3.5.5 使各进程分离25
3.6 执行新的代码26
3.7 上下文切换和协议软件设计27
3.8 并发和异步I/O27
3.9 小结28
习题28
第4章 网络编程协议的程序接口29
4.1 引言29
4.2 不精确指明的协议软件编程接口29
4.3 接口功能30
4.4 概念性接口的规范30
4.5 操作系统调用31
4.6 网络通信的两种基本方法31
4.7 Linux中提供的基本I/O功能32
4.8 将Linux I/O用于TCP/IP33
4.9 小结33
习题33
第5章 接口实现——套接字API35
5.1 引言35
5.2 Berkeley套接字35
5.3 指明一个协议接口35
5.4 套接字的抽象36
5.4.1 套接字描述符和文件描述符36
5.4.2 针对套接字的系统数据结构37
5.4.3 主动套接字或被动套接字37
5.5 指明端点地址38
5.6 类属地址结构39
5.7 套接字API中的主要系统调用40
5.7.1 socket调用40
5.7.2 connect调用40
5.7.3 send调用41
5.7.4 recv调用41
5.7.5 close调用41
5.7.6 bind调用41
5.7.7 listen调用42
5.7.8 accept调用42
5.7.9 在套接字中使用read和write42
5.7.10 套接字调用小结42
5.8 用于整数转换的实用例程43
5.9 在程序中使用套接字调用44
5.10 套接字调用的参数所使用的符号常量44
5.11 小结45
习题46
第6章 客户软件算法及编程实例47
6.1 引言47
6.2 不是研究细节而是学习算法47
6.3 客户体系结构和要解决的问题48
6.3.1 标识服务器的位置48
6.3.2 分析地址参数49
6.3.3 查找域名50
6.3.4 由名字查找某个熟知端口51
6.3.5 端口号和网络字节 顺序51
6.3.6 由名字查找协议51
6.4 TCP客户算法52
6.4.1 分配套接字52
6.4.2 选择本地协议端口号53
6.4.3 选择本地IP地址中的一个基本问题53
6.4.4 将TCP套接字连接到某个服务器54
6.4.5 使用TCP与服务器通信54
6.4.6 从TCP连接中读取响应55
6.4.7 关闭TCP连接55
6.5 UDP客户算法56
6.5.1 连接的和非连接的UDP套接字57
6.5.2 对UDP使用connect57
6.5.3 使用UDP与服务器通信57
6.5.4 关闭使用UDP的套接字57
6.5.5 对UDP的部分关闭58
6.5.6 关于UDP不可靠性的警告58
6.6 客户编程实例的重要性58
6.7 隐藏细节59
6.8 针对客户程序的过程库59
6.8.1 connectTCP的实现60
6.8.2 connectUDP的实现60
6.8.3 构成连接的过程61
6.9 过程库使用63
6.10 DAYTIME服务63
6.10.1 针对DAYTIME的TCP客户实现64
6.10.2 从TCP连接中进行读65
6.11 TIME服务66
6.12 访问TIME服务66
6.13 精确时间和网络时延67
6.14 针对TIME服务的UDP客户67
6.15 ECHO服务69
6.16 针对ECHO服务的TCP客户69
6.17 针对ECHO服务的UDP客户71
6.18 小结72
习题74
第7章 服务器软件算法及编程实例76
7.1 引言76
7.2 概念性的服务器算法76
7.3 并发服务器和循环服务器76
7.4 面向连接的和无连接的访问77
7.5 服务器需要考虑的几个问题77
7.5.1 传输层协议的语义77
7.5.2 选择传输协议78
7.5.3 面向连接的服务器78
7.5.4 无连接的服务器79
7.5.5 服务器的故障、可靠性和无状态80
7.5.6 优化无状态服务器80
7.5.7 请求处理时间82
7.6 服务器的四种基本类型82
7.7 循环服务器的算法83
7.8 循环的、面向连接的服务器的算法83
7.8.1 用INADDR_ANY绑定熟知端口83
7.8.2 将套接字置于被动模式84
7.8.3 接受连接并使用这些连接84
7.9 循环的、无连接的服务器的算法84
7.10 并发服务器的算法85
7.11 并发的、无连接的服务器的算法86
7.12 并发的、面向连接的服务器的算法86
7.12.1 服务器并发性的实现87
7.12.2 把单独的程序作为从进程来使用87
7.13 使用单线程获得表面上的并发性88
7.14 各服务器类型所适用的场合89
7.15 服务器类型小结89
7.16 重要问题——服务器死锁90
7.17 其他的实现方法90
7.18 循环的、无连接的服务器设计91
7.18.1 创建被动套接字91
7.18.2 进程结构94
7.18.3 TIME服务器举例94
7.18.4 小结96
7.19 循环的、面向连接的服务器设计96
7.19.1 分配被动的TCP套接字96
7.19.2 用于DAYTIME服务的服务器97
7.19.3 进程结构97
7.19.4 DAYTIME服务器举例98
7.19.5 关闭连接100
7.19.6 连接终止和服务器的脆弱性100
7.19.7 小结101
7.20 并发的、面向连接的服务器设计101
7.20.1 并发ECHO102
7.20.2 循环与并发实现的比较102
7.20.3 进程结构102
7.20.4 并发ECHO服务器举例103
7.20.5 清除游离(errant)进程106
7.20.6 小结106
7.21 小结107
习题107
第8章 使用线程模型实现并发110
8.1 引言110
8.2 Linux线程概述110
8.3 线程和进程的关系111
8.3.1 描述符、延迟和退出111
8.3.2 线程退出112
8.4 线程协调和同步112
8.4.1 互斥112
8.4.2 信号量113
8.4.3 条件变量113
8.5 使用线程的服务器实例114
8.6 监控117
8.7 小结118
习题118
第9章 单线程并发服务器设计119
9.1 引言119
9.2 服务器中的数据驱动处理119
9.3 用单线程进行数据驱动处理120
9.4 单线程服务器的线程结构120
9.5 单线程ECHO服务器举例121
9.6 小结123
习题124
第10章 多协议服务器设计125
10.1 引言125
10.2 减少服务器数量的动机125
10.3 多协议服务器的设计125
10.4 进程结构126
10.5 多协议DAYTIME服务器的例子126
10.6 共享代码的概念129
10.7 并发多协议服务器130
10.8 小结130
习题130
第11章 多服务服务器设计132
11.1 引言132
11.2 合并服务器132
11.3 循环的、无连接的、多服务服务器设计132
11.4 循环的、面向连接的、多服务服务器设计133
11.5 并发的、面向连接的、多服务服务器设计134
11.6 并发的、单线程的、多服务服务器的实现135
11.7 从多服务服务器调用单独的程序135
11.8 多服务、多协议服务器设计136
11.9 多服务服务器的例子137
11.10 静态的和动态的服务器配置143
11.11 UNIX超级服务器——inetd144
11.12 inetd服务器的例子146
11.13 小结147
习题148
第12章 服务器并发性管理149
12.1 引言149
12.2 在循环设计和并发设计间选择149
12.3 并发等级150
12.4 需求驱动的并发150
12.5 并发的代价150
12.6 额外开销和时延151
12.7 小时延问题151
12.8 从线程/进程的预分配152
12.8.1 Linux中的预分配153
12.8.2 面向连接的服务器中的预分配153
12.8.3 互斥、文件锁定和accept并发调用154
12.8.4 无连接的服务器中的预分配155
12.8.5 预分配、突发通信量和NFS155
12.8.6 多处理器上的预分配156
12.9 延迟的从线程/进程分配156
12.10 两种技术统一的基础157
12.11 技术的结合157
12.12 小结158
习题158
第13章 客户软件并发设计160
13.1 引言160
13.2 并发的优点160
13.3 运用控制的动机160
13.4 与多个服务器的并发联系161
13.5 实现并发客户162
13.6 单线程实现162
13.7 使用ECHO的并发客户的例子163
13.8 并发客户的执行167
13.9 例子代码中的并发性169
13.10 小结169
习题169
附录A 系统调用与套接字使用的库例程170
参考文献192