编辑推荐
《Python网络编程(第3版)》采用Python3,涵盖网络编程所有经典话题,包括网络协议、网络数据及错误、电子邮件、服务器架构,以及HTTP及Web应用程序,对新的SSL支持、异步I/O循环的编写方法、跨站脚本以及跨站请求伪造攻击网站的原理及保护方法等内容也有详尽介绍。
《Python网络编程(第3版)》既适合想要深入理解使用Python来解决网络相关的问题或是构建网络应用程序的Python程序员,也适合所有Web应用程序开发人员、系统集成者或系统管理员。
内容简介
《Python网络编程(第3版)》针对想要深入理解使用Python来解决网络相关问题或是构建网络应用程序的技术人员,结合实例讲解了网络协议、网络数据及错误、电子邮件、服务器架构和HTTP及Web应用程序等经典话题。具体内容包括:全面介绍Python3中新提供的SSL支持,异步I/O循环的编写,用Flask框架在Python代码中配置URL,跨站脚本以及跨站请求伪造攻击网站的原理及保护方法,等等。
作者简介
BrandonRhodes,Dropbox工程师,早期使用Python的程序员之一,热心于传播Python,经常在各类Python主题大会上演讲。
JohnGoerzen,eFolder公司IT与工程部副总裁,同时也是具有影响力的作家、系统管理者和Python程序员,自1996年起就是DebianGNU/Linux操作系统开发组的成员,拥有近20年的软件开发经验。
目录
第1章客户端/服务器网络编程简介1
1.1基础:协议栈与库1
1.2应用层4
1.3协议的使用5
1.4一个原始的网络会话6
1.5层层深入8
1.6编码与解码9
1.7网际协议10
1.8IP地址11
1.9路由12
1.10数据包分组13
1.11进一步学习IP14
1.12小结15
第2章UDP16
2.1端口号17
2.2套接字18
2.2.1混杂客户端与垃圾回复22
2.2.2不可靠性、退避、阻塞和超时23
2.2.3连接UDP套接字27
2.2.4请求ID:好主意28
2.3绑定接口29
2.4UDP分组31
2.5套接字选项33
2.6广播33
2.7小结35
第3章TCP37
3.1TCP工作原理37
3.2何时使用TCP38
3.3TCP套接字的含义39
3.4一个简单的TCP客户端和服务器40
3.4.1每个会话使用一个套接字43
3.4.2地址已被占用44
3.5绑定接口46
3.6死锁46
3.7已关闭连接,半开连接51
3.8像使用文件一样使用TCP流52
3.9小结53
第4章套接字名与DNS54
4.1主机名与套接字54
4.1.1套接字的5个坐标55
4.1.2IPv656
4.2现代地址解析57
4.2.1使用getaddrinfo()为服务器
绑定端口58
4.2.2使用getaddrinfo()连接服务59
4.2.3使用getaddrinfo()请求规范主机名60
4.2.4其他getaddrinfo()标记61
4.2.5原始的名称服务程序62
4.2.6在代码中使用getsockaddr()62
4.3DNS协议64
4.3.1为何不使用原始DNS66
4.3.2使用Python进行DNS查询66
4.3.3解析邮箱域名68
4.4小结70
第5章网络数据与网络错误71
5.1字节与字符串71
5.1.1字符串72
5.1.2二进制数与网络字节顺序75
5.2封帧与引用77
5.3pickle与自定义定界符的格式82
5.4XML与JSON83
5.5压缩84
5.6网络异常85
5.6.1抛出更具体的异常87
5.6.2捕捉与报告网络异常87
5.7小结88
第6章TLS/SSL90
6.1TLS无法保护的信息90
6.2可能出问题的地方91
6.3生成证书93
6.4TLS负载移除.95
6.5Python3.4默认上下文96
6.6手动选择加密算法与完美前向安全102
6.7支持TLS的协议104
6.8了解细节105
6.9小结111
第7章服务器架构112
7.1浅谈部署112
7.2一个简单的协议114
7.3单线程服务器117
7.4多线程与多进程服务器120
7.5异步服务器122
7.5.1回调风格的asyncio126
7.5.2协程风格的asyncio127
7.5.3遗留模块asyncore129
7.5.4两全其美的方法130
7.6在inetd下运行131
7.7小结133
第8章缓存与消息队列134
8.1使用Memcached134
8.2散列与分区137
8.3消息队列140
8.4小结145
第9章HTTP客户端147
9.1Python客户端库147
9.2端口、加密与封帧149
9.3方法151
9.4路径与主机152
9.5状态码152
9.6缓存与验证155
9.7传输编码157
9.8内容协商158
9.9内容类型160
9.10HTTP认证160
9.11cookie162
9.12连接、Keep-Alive和httplib163
9.13小结164
第10章HTTP服务器166
10.1WSGI166
10.2异步服务器与框架168
10.3前向代理与反向代理169
10.44种架构170
10.4.1在Apache下运行Python171
10.4.2纯粹的PythonHTTP服务器的兴起172
10.4.3反向代理的优势172
10.5平台即服务173
10.6GET与POST模式和REST的问题174
10.7不使用Web框架编写WSGI可调用对象176
10.8小结180
第11章万维网181
11.1超媒体与URL181
11.1.1解析与构造URL182
11.1.2相对URL184
11.2超文本标记语言186
11.3读写数据库189
11.4一个糟糕的Web应用程序(使用Flask)190
11.5表单和HTTP方法195
11.5.1表单使用了错误方法的情况197
11.5.2安全的cookie与不安全的cookie198
11.5.3非持久型跨站脚本200
11.5.4持久型跨站脚本201
11.5.5跨站请求伪造202
11.5.6改进的应用程序203
11.6使用Django编写的账单应用程序205
11.7选择Web框架209
11.8WebSocket210
11.9网络抓取211
11.9.1获取页面212
11.9.2抓取页面215
11.9.3递归抓取217
11.10小结221
第12章电子邮件的构造与解析222
12.1电子邮件消息格式222
12.2构造电子邮件消息224
12.3添加HTML与多媒体226
12.4添加内容231
12.5解析电子邮件消息232
12.6遍历MIME部件234
12.7邮件头编码236
12.8解析日期237
12.9小结238
第13章SMTP239
13.1电子邮件客户端与Web邮件服务239
13.1.1最开始使用命令行发送电子邮件239
13.1.2客户端的兴起240
13.1.3转移到Web邮件241
13.2SMTP的使用方法243
13.2.1发送电子邮件244
13.2.2邮件头与信封接收者245
13.2.3多跳246
13.3SMTP库简介247
13.4错误处理与会话调试248
13.5从EHLO获取信息251
13.6使用安全套接层和传输层安全协议253
13.7认证的SMTP255
13.8关于SMTP的小贴士257
13.9小结257
第14章POP258
14.1POP服务器的兼容性258
14.2连接与认证259
14.3获取邮箱信息261
14.4消息的下载与删除263
14.5小结265
第15章IMAP266
15.1在Python中使用IMAP267
15.1.1IMAPClient269
15.1.2查看文件夹271
15.1.3消息号与UID272
15.1.4消息范围272
15.1.5摘要信息272
15.1.6下载整个邮箱274
15.1.7单独下载消息276
15.1.8标记并删除消息281
15.1.9删除消息282
15.1.10搜索282
15.1.11操作文件夹与消息284
15.1.12异步性285
15.2小结285
第16章Telnet和SSH286
16.1命令行自动化286
16.1.1命令行扩展与引用287
16.1.2UNIX命令行参数几乎可以包含任意字符288
16.1.3对字符进行引用290
16.1.4糟糕的Windows命令行291
16.1.5终端的特别之处292
16.1.6终端的缓冲行为295
16.2Telnet296
16.3SSH:安全shell300
16.3.1SSH概述300
16.3.2SSH主机密钥301
16.3.3SSH认证303
16.3.4shell会话与独立命令304
16.3.5SFTP:通过SSH进行文件传输308
16.3.6其他特性310
16.4小结311
第17章FTP313
17.1何时不使用FTP313
17.1.1通信信道314
17.1.2在Python中使用FTP315
17.1.3ASCII和二进制文件316
17.1.4二进制下载进阶功能介绍318
17.1.5上传数据319
17.1.6二进制上传进阶功能介绍320
17.1.7错误处理321
17.1.8目录扫描322
17.1.9目录检测以及递归下载324
17.1.10目录的创建以及文件和目录的删除326
17.1.11安全地操作FTP326
17.2小结326
第18章RPC328
18.1RPC的特性329
18.1.1XML-RPC330
18.1.2JSON-RPC336
18.1.3自文档的数据339
18.1.4关于对象:Pyro和RPyC340
18.1.5RPyC例子341
18.1.6RPC、Web框架和消息
队列343
18.1.7从网络错误中恢复344
18.2小结344