产品特色
编辑推荐
Python是门很棒的编程语言,适合快速构建应用原型。《图灵程序设计丛书:Python网络编程攻略》全面介绍了Python网络编程涉及的重要问题,包括网络编程、系统和网络管理、网络监控以及Web应用开发。作者通过70多篇攻略,清晰简明地描述了各种网络任务和问题,提出了可用于多种场景的解决方案,并细致地分析了整个操作过程。无需多少Python基础知识,就可以轻松理解这些示例。如果你想开发依赖于网络协议的实用Web应用和网络应用,不能错过这本书。 《图灵程序设计丛书:Python网络编程攻略》将告诉你如何开发TCP/IP网络客户端和服务器应用 管理本地设备的IPv4/IPv6网络接口 使用HTTP和HTTPS协议编写用途多、效率高的Web客户端 编写可使用常见电子邮件协议的电子邮件客户端 通过Telnet和SSH连接执行远程系统管理任务 使用Web服务与流行的网站交互 监控并分析重要的常见网络安全漏洞
内容简介
《图灵程序设计丛书:Python网络编程攻略》介绍了现实世界中几乎所有网络任务的真实示例,通过简明易懂的形式让读者掌握如何使用Python完成这些网络编程任务。具体说来,书中通过70多篇攻略讨论了Python网络编程的高阶话题,包括编写简单的网络客户端和服务器、HTTP协议网络编程、跨设备编程、屏幕抓取以及网络安全监控,等等。本书可以作为任何一门网络编程课程中培养实践技能的补充材料。《图灵程序设计丛书:Python网络编程攻略》需要读者对Python语言及TCP/IP等基本的网络概念有了解,但即使不精通也能通过本书理解相关概念。
《图灵程序设计丛书:Python网络编程攻略》适合网络程序员、系统/网络管理员及Web应用程序开发人员阅读。
作者简介
M. O. Faruque Sarker博士,是软件架构师,开发运维工程师,近几年主持开发了很多Python软件项目。他是多种开源技术方面的专家,对于在线学习平台、Web应用平台、敏捷软件开发等技术有深入的研究。从1999年开始,他一直在部署Linux和开源软件。他应邀参与了2009年和2010年的谷歌编程之夏,为开源项目BlueZ和Tahoe-LAFS做出了贡献。目前他在英国伦敦大学学院工作,研究方向是自组织云架构。
内页插图
精彩书评
“对于想要深入学习Python、探索Python多用途的程序员来说,这本书是必读的。然而,在阅读之前,我想先警告你:书中某些内容会让你上瘾,无法自拔!”
——亚马逊读者评论
“想掌握Python网络编程?这本书非常有趣,你可以随意挑选任一攻略进行阅读。”
——亚马逊读者评论
目录
第1章 套接字、IPv4和简单的客户端/服务器编程1.1 简介1.2 打印设备名和IPv4地址1.3 获取远程设备的IP地址1.4 将IPv4地址转换成不同的格式1.5 通过指定的端口和协议找到服务名1.6 主机字节序和网络字节序之间相互转换1.7 设定并获取默认的套接字超时时间1.8 优雅地处理套接字错误1.9 修改套接字发送和接收的缓冲区大小1.10 把套接字改成阻塞或非阻塞模式1.11 重用套接字地址1.12 从网络时间服务器获取并打印当前时间1.13 编写一个SNTP客户端1.14 编写一个简单的回显客户端/服务器应用
第2章 使用多路复用套接字I/O提升性能2.1 简介2.2 在套接字服务器程序中使用ForkingMixIn2.3 在套接字服务器程序中使用ThreadingMixIn2.4 使用select.select编写一个聊天室服务器2.5 使用select.epoll多路复用Web服务器2.6 使用并发库Diesel多路复用回显服务器
第3章 IPv6、Unix域套接字和网络接口3.1 简介3.2 把本地端口转发到远程主机3.3 通过ICMP查验网络中的主机3.4 等待远程网络服务上线3.5 枚举设备中的接口3.6 找出设备中某个接口的IP地址3.7 探测设备中的接口是否开启3.8 检测网络中未开启的设备3.9 使用相连的套接字执行基本的进程间通信3.10 使用Unix域套接字执行进程间通信3.11 确认你使用的Python是否支持IPv6套接字3.12 从IPv6地址中提取IPv6前缀3.13 编写一个IPv6回显客户端/服务器
第4章 HTTP协议网络编程4.1 简介4.2 从HTTP服务器下载数据4.3 在你的设备中伺服HTTP请求4.4 访问网站后提取cookie信息4.5 提交网页表单4.6 通过代理服务器发送Web请求4.7 使用HEAD请求检查网页是否存在4.8 把客户端伪装成Mozilla Firefox4.9 使用HTTP压缩节省Web请求消耗的带宽4.10 编写一个支持断点续传功能的HTTP容错客户端4.11 使用Python和OpenSSL编写一个简单的HTTPS服务器
第5章 电子邮件协议、FTP和CGI编程5.1 简介5.2 列出FTP远程服务器中的文件5.3 把本地文件上传到远程FTP服务器中5.4 把当前工作目录中的内容压缩成ZIP文件后通过电子邮件发送5.5 通过POP3协议下载谷歌电子邮件5.6 通过IMAP协议查收远程服务器中的电子邮件5.7 通过Gmail的SMTP服务器发送带有附件的电子邮件5.8 使用CGI为基于Python的Web服务器编写一个留言板
第6章 屏幕抓取和其他实用程序6.1 简介6.2 使用谷歌地图API搜索公司地址6.3 使用谷歌地图URL搜索地理坐标6.4 搜索维基百科中的文章6.5 使用谷歌搜索股价6.6 搜索GitHub中的源代码仓库6.7 读取BBC的新闻订阅源6.8 爬取网页中的链接
第7章 跨设备编程7.1 简介7.2 使用telnet在远程主机中执行shell命令7.3 通过SFTP把文件复制到远程设备中7.4 打印远程设备的CPU信息7.5 在远程主机中安装Python包7.6 在远程主机中运行MySQL命令7.7 通过SSH把文件传输到远程设备中7.8 远程配置Apache运行网站
第8章 使用Web服务:XML-RPC、SOAP和REST8.1 简介8.2 查询本地XML-RPC服务器8.3 编写一个多线程、多调用XML-RPC服务器8.4 运行一个支持HTTP基本认证的XML-RPC服务器8.5 使用REST从Flickr中收集一些照片信息8.6 找出亚马逊S3 Web服务支持的SOAP方法8.7 使用谷歌搜索定制信息8.8 通过商品搜索API在亚马逊中搜索图书
第9章 网络监控和安全性9.1 简介9.2 嗅探网络数据包9.3 使用pcap转储器把数据包保存为pcap格式9.4 在HTTP数据包中添加额外的首部9.5 扫描远程主机的端口9.6 自定义数据包的IP地址9.7 读取保存的pcap文件以重放流量9.8 扫描数据包的广播
前言/序言
很高兴看到本书出版了,我要感谢所有为本书的出版做出贡献的人。本书是Python网络编程方面的探索性指南,涉及了很多网络协议,例如TCP/UDP、HTTP/HTTPS、FTP、SMTP、POP3、IMAP、CGI等。Python功能强大且具交互性,用它来开发解决实际问题的脚本是一种享受,比如处理网络和系统管理操作、开发Web应用、与本地和远程网络交互、捕获并分析低层网络数据包,等等。本书的主要目的是教你动手完成这些任务,因此不会涉及太多理论,而是注重实践。
写作本书的过程中我一直记着要遵守“开发运维”的理念,开发者或多或少都要负责一些运维,即部署应用程序以及管理它的方方面面,例如管理远程服务器、监控、扩放以及性能优化等。书中用到了很多第三方开源Python库,有效解决了多种不同的问题。其中很多库我每天都用,通过它们自动化运行开发和运维任务简直是一种享受。例如,我使用Fabric自动完成软件开发过程中的任务。其他库也各有各的用处,例如搜索互联网、屏幕抓取、在Python脚本中发送电子邮件。
希望你能从本书的攻略中受益,并根据需求扩展它们,让其功能更强大,用起来更得心应手。
本书内容
第1章“套接字、IPv4和简单的客户端/服务器编程”通过多个小型任务讲解Python的核心网络库,教你开发一个客户端/服务器程序。
第2章“使用多路复用套接字I/O提升性能”讨论很多使用内置库和第三方库扩放客户端/服务器程序的实用技术。
第3章“IPv6、Unix域套接字和网络接口”主要关注本地设备的管理和本地网络的维护。
第4章“HTTP协议网络编程”开发一个多功能迷你命令行浏览器,可以提交表单、处理cookie、管理分段下载、压缩数据,还能通过HTTPS交付安全内容。
第5章“电子邮件协议、FTP和CGI编程”带你一起体验自动处理FTP和电子邮件相关任务的乐趣,例如管理Gmail账户、使用脚本收发邮件,还要为Web应用开发一个留言板。
第6章“屏幕抓取和其他实用程序”介绍如何使用多个第三方Python库实现一些实际的任务,例如在谷歌地图上找到公司的位置、从维基百科中抓取信息、在GitHub中搜索代码仓库,以及从BBC读取新闻。
第7章“跨设备编程”带你体验如何使用SSH自动执行系统管理和部署任务。使用SSH,在你的笔记本电脑上就可以远程执行命令、安装包,或者架设新网站。
第8章“使用Web服务:XML-RPC、SOAP和REST”介绍不同的API协议,例如XML-RPC、SOAP和REST。使用这些协议可以通过编程的方式从任何网站或Web服务中读取信息,或者与之交互。例如,可以在亚马逊或谷歌中搜索商品。
第9章“网络监控和安全性”介绍捕获、存储、分析和处理网络数据包的多种技术。了解这些技术之后,你就能使用简洁的Python脚本分析并解决网络安全问题。
阅读本书前的准备工作
你要有一个可以使用的个人电脑或者笔记本电脑,最好安装了某种现代Linux操作系统,例如 Ubuntu、Debian或CentOS等。书中大部分攻略也能在其他平台上运行,例如Windows和Mac OS。
你还需要连接互联网,以便安装攻略中提到的第三方软件库。如果不方便上网,可以下载所有第三方库,一次性安装好。
深度解析Python网络通信的艺术:从基础到精通 在这个信息爆炸、万物互联的时代,网络编程已成为现代软件开发中不可或缺的一环。无论是构建高性能的Web服务、实现实时通信应用,还是开发分布式系统,深入理解和掌握Python网络编程技术都至关重要。本书旨在为读者提供一套全面、实用的Python网络编程解决方案,帮助开发者自信地驾驭网络世界的复杂性,用Python构建强大、高效的网络应用程序。 本书并非简单地罗列API,而是致力于引导读者理解网络通信的底层原理,并将其与Python强大的生态系统相结合,提供切实可行的实践方法。我们将从最基础的网络概念入手,逐步深入到各种高级网络应用场景,通过大量的代码示例和清晰的解释,让读者不仅知其然,更知其所以然。 第一部分:网络基础与Python核心库 在正式踏入网络编程的世界之前,扎实的基础知识是成功的基石。本部分将为您系统梳理TCP/IP协议栈的核心概念,包括但不限于: IP地址与端口: 理解网络设备的身份标识,以及应用程序通信的“门牌号”。我们将详细讲解IPv4和IPv6的寻址方式,以及端口的分配与管理。 TCP与UDP: 深入剖析两种最核心的传输层协议。TCP的连接导向、可靠传输、流量控制和拥塞控制等特性,将通过生动的比喻和清晰的图示展现。UDP的无连接、尽力而为的特点,以及其在特定场景下的优势,也将得到充分阐释。 Socket编程模型: 这是网络编程的核心接口。我们将从最底层的socket API入手,逐步讲解如何创建、绑定、监听、连接、发送和接收数据。读者将学会使用Python的`socket`模块,通过编写简单的客户端-服务器程序,直观感受socket通信的流程。 Python网络库概览: 除了底层的`socket`模块,Python还提供了丰富的高层抽象库,极大地简化了网络编程的复杂性。我们将介绍`http.client`、`urllib`等用于HTTP通信的模块,`email`模块用于邮件处理,以及`selectors`模块用于高效的多路复用,为后续更复杂的网络应用打下基础。 第二部分:构建可靠的TCP服务 TCP协议以其可靠性而著称,是构建大多数网络应用的基础。本部分将带领读者深入实践TCP服务的设计与实现: 并发处理: 在网络服务中,如何同时处理多个客户端的请求是关键。我们将详细讲解两种经典的并发模型: 多线程并发: 利用Python的`threading`模块,为每个客户端连接创建一个独立的线程。我们会讨论线程创建的开销、线程同步问题以及如何使用锁、信号量等机制保证数据安全。 多进程并发: 利用Python的`multiprocessing`模块,通过创建独立的进程来处理客户端请求。我们将分析进程的优势和劣势,以及如何通过进程间通信(IPC)机制实现数据共享。 非阻塞I/O与多路复用: 传统的阻塞式I/O在处理大量并发连接时效率低下。本部分将重点讲解非阻塞I/O的概念,以及如何利用`selectors`模块实现高效的多路复用。读者将学会使用`select`、`poll`、`epoll`等机制,在单个线程或进程中同时管理多个socket连接,极大地提升服务器的吞吐量和响应速度。 协议设计与序列化: 在客户端和服务器之间进行数据交换,需要定义一套清晰的通信协议。我们将探讨自定义协议的设计原则,以及如何使用JSON、Protocol Buffers等序列化技术,实现高效、灵活的数据传输。 实现一个简单的TCP聊天室: 通过一个完整的项目实例,读者将亲手构建一个支持多用户在线交流的聊天室。从客户端连接、消息广播到用户管理,每一个环节都将得到详尽的讲解和代码演示。 第三部分:拥抱Web与HTTP协议 HTTP是现代Web应用程序的基石。本部分将聚焦于Python在Web开发和HTTP通信方面的应用: HTTP协议详解: 深入理解HTTP请求(GET、POST、PUT、DELETE等)和响应的构成,包括请求头、请求体、状态码、响应头等。我们将分析HTTP/1.1和HTTP/2的新特性,以及它们对网络性能的影响。 使用Python构建Web服务器: 从零开始,我们将学习如何使用Python的`http.server`模块构建一个简单的HTTP服务器。在此基础上,我们将探讨如何集成更强大的Web框架,如Flask或Django,来快速开发功能丰富的Web应用。 HTTP客户端实践: 掌握如何使用Python的`requests`库,轻松发送HTTP请求,获取网页内容,调用API接口。我们将讲解如何处理Cookies、Session、认证、代理等常见需求。 RESTful API设计与实现: 学习RESTful架构风格的原则,以及如何使用Python构建符合RESTful风格的API服务。我们将通过实例演示如何设计资源URI,选择合适的HTTP方法,并返回标准化的响应。 第四部分:异步网络编程与高性能I/O 在处理高并发、低延迟的网络应用时,传统的同步阻塞模型已难以满足需求。本部分将引领读者进入异步编程的殿堂: 事件驱动编程模型: 理解事件循环、协程(coroutine)的概念,以及它们如何协同工作,实现高效的I/O操作。 `asyncio`深度解析: Python 3.5+引入的`asyncio`库是实现异步I/O的核心。我们将详细讲解`async`和`await`关键字的用法,如何创建和管理协程,以及如何使用`asyncio`提供的各种工具,如事件循环、任务、队列等。 构建高性能的异步TCP服务器: 利用`asyncio`,我们将重新实现一个比之前更具扩展性和性能的TCP服务器,能够高效地处理成百上千的并发连接。 异步HTTP客户端与服务器: 学习如何使用`aiohttp`等库,构建异步的HTTP客户端和服务器,实现高吞吐量的Web服务。 第五部分:网络安全与数据传输 在网络通信中,安全至关重要。本部分将探讨如何保护数据在传输过程中的安全: SSL/TLS加密: 深入理解SSL/TLS协议的工作原理,以及如何使用Python的`ssl`模块,为TCP连接添加TLS加密,实现安全的HTTPS通信。我们将讲解证书的生成、验证和配置。 数据加密与解密: 介绍对称加密和非对称加密的基本概念,以及如何使用Python的`cryptography`库,实现数据的加密和解密操作。 网络安全基础: 探讨常见的网络安全威胁,如中间人攻击、DDoS攻击等,并提供一些基本的防范策略。 第六部分:高级网络应用与场景 在掌握了基础和核心技术之后,本部分将拓展到更广泛、更复杂的网络应用场景: 构建分布式系统: 探讨分布式系统中常见的通信模式,如消息队列、RPC(远程过程调用),以及如何使用Python的相关库(如Celery、gRPC)来实现。 实时通信应用: 学习如何使用WebSocket协议,构建实时聊天、在线游戏等需要双向、低延迟通信的应用。 网络爬虫与数据抓取: 结合前面学习的网络知识,讲解如何使用Python编写高效的网络爬虫,抓取互联网上的数据。 网络性能优化: 总结和归纳网络编程中的常见性能瓶颈,并提供相应的优化技巧和策略,如连接池、缓存、协议选择等。 本书特色: 循序渐进,由浅入深: 从最基础的网络概念到高级的异步编程,结构清晰,逻辑严谨。 实践驱动,代码至上: 提供大量可运行、可修改的Python代码示例,读者可以通过动手实践加深理解。 原理阐释,透彻易懂: 在讲解代码的同时,深入分析背后的网络原理和技术细节。 覆盖广泛,应用性强: 涵盖了从基础网络通信到Web开发、分布式系统等多个重要领域。 面向实战,解决痛点: 专注于解决开发者在实际网络编程中遇到的常见问题和挑战。 无论您是初涉网络编程的开发者,还是希望提升Python网络编程技能的资深工程师,本书都将是您不可或缺的宝贵资源。通过本书的学习,您将能够自信地运用Python构建健壮、高效、安全的网络应用程序,在数字互联的世界中游刃有余。