産品特色
編輯推薦
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構建健壯、高效、安全的網絡應用程序,在數字互聯的世界中遊刃有餘。