作 者:[美] 布蘭登·羅德(Brandon Rhodes) 著 諸豪文 譯
定 價:79
出 版 社:人民郵電出版社
出版日期:2016年09月01日
頁 數:345
裝 幀:簡裝
ISBN:9787115433503
本書采用Python 3,涵蓋網絡編程所有經典話題,包括網絡協議、網絡數據及錯誤、電子郵件、服務器架構,以及HTTP及Web應用程序,對新的SSL支持、異步I/O循環的編寫方法、跨站腳本以及跨站請求偽造攻擊網站的原理及保護方法等內容也有詳盡介紹。本書既適合想要深入理解使用Python來解決網絡相關的問題或是構建網絡應用程序的Python程序員,也適合所有Web應用程序開發人員、繫統集成者或繫統管理員。
●目錄第 1 章 客戶端/服務器網絡編程簡介 11.1 基礎:協議棧與庫 11.2 應用層 41.3 協議的使用 51.4 一個原始的網絡會話 61.5 層層深入 81.6 編碼與解碼 91.7 網際協議 101.8 IP 地址 111.9 路由 121.10 數據包分組 131.11 進一步學習 IP 141.12 小結 15第 2 章 UDP 162.1 端口號 172.2 套接字 182.2.1 混雜客戶端與垃圾回復 222.2.2 不可靠性、退避、阻塞和超時 232.2.3 連接 UDP 套接字 272.2.4 請求 ID:好主意 282.3 綁定接口 292.4 UDP 分組 312.5 套接字選項 332.6 廣播 332.7 小結 35第 3 章 TCP 373.1 TCP 工作原理 373.2 何時使用 TCP 383.3 TCP 套接字的含義 393.4 一個簡單的 TCP 客戶端和服務器 403.4.1 每個會話使用一個套接字 433.4.2 地址已被占用 443.5 綁定接口 463.6 死鎖 463.7 已關閉連接,半開連接 513.8 像使用文件一樣使用 TCP 流 523.9 小結 53第 4 章 套接字名與 DNS 544.1 主機名與套接字 544.1.1 套接字的 5 個坐標 554.1.2 IPv6 564.2 現代地址解析 574.2.1 使用 getaddrinfo() 為服務器綁定端口 584.2.2 使用 getaddrinfo() 連接服務 594.2.3 使用 getaddrinfo() 請求規範主機名 604.2.4 其他 getaddrinfo() 標記 614.2.5 原始的名稱服務程序 624.2.6 在代碼中使用 getsockaddr() 624.3 DNS 協議 644.3.1 為何不使用原始 DNS 664.3.2 使用 Python 進行 DNS 查詢 664.3.3 解析郵箱域名 684.4 小結 70第 5 章 網絡數據與網絡錯誤 715.1 字節與字符串 715.1.1 字符串 725.1.2 二進制數與網絡字節順序 755.2 封幀與引用 775.3 pickle 與自定義定界符的格式 825.4 XML 與 JSON 835.5 壓縮 845.6 網絡異常 855.6.1 拋出更具體的異常 875.6.2 捕捉與報告網絡異常 875.7 小結 88第 6 章 TLS/SSL 906.1 TLS 無法保護的信息 906.2 可能出問題的地方 916.3 生成證書 936.4 TLS 負載移除 . 956.5 Python 3.4 默認上下文 966.6 手動選擇加密算法與完美前向安全 1026.7 支持 TLS 的協議 1046.8 了解細節 1056.9 小結 111第 7 章 服務器架構 1127.1 淺談部署 1127.2 一個簡單的協議 1147.3 單線程服務器 1177.4 多線程與多進程服務器 1207.5 異步服務器 1227.5.1 回調風格的 asyncio 1267.5.2 協程風格的 asyncio 1277.5.3 遺留模塊 asyncore 1297.5.4 兩全其美的方法 1307.6 在 inetd 下運行 1317.7 小結 133第 8 章 緩存與消息隊列 1348.1 使用 Memcached 1348.2 散列與分區 1378.3 消息隊列 1408.4 小結 145第 9 章 HTTP 客戶端 1479.1 Python 客戶端庫 1479.2 端口、加密與封幀 1499.3 方法 1519.4 路徑與主機 1529.5 狀態碼 1529.6 緩存與驗證 1559.7 傳輸編碼 1579.8 內容協商 1589.9 內容類型 1609.10 HTTP 認證 1609.11 cookie 1629.12 連接、Keep-Alive 和 httplib 1639.13 小結 164第 10 章 HTTP 服務器 16610.1 WSGI 16610.2 異步服務器與框架 16810.3 前向代理與反向代理 16910.4 4 種架構 17010.4.1 在 Apache 下運行 Python 17110.4.2 純粹的 Python HTTP服務器的興起 17210.4.3 反向代理的優勢 17210.5 平臺即服務 17310.6 GET 與 T 模式和 REST 的問題 17410.7 不使用 Web 框架編寫 WSGI 可調用對像 17610.8 小結 180第 11 章 萬維網 18111.1 超媒體與 URL 18111.1.1 解析與構造 URL 18211.1.2 相對 URL 18411.2 超文本標記語言 18611.3 讀寫數據庫 18911.4 一個糟糕的 Web 應用程序(使用 Flask) 19011.5 表單和 HTTP 方法 19511.5.1 表單使用了錯誤方法的情況 19711.5.2 安全的 cookie 與不安全的 cookie 19811.5.3 非持久型跨站腳本 20011.5.4 持久型跨站腳本 20111.5.5 跨站請求偽造 20211.5.6 改進的應用程序 20311.6 使用 Django 編寫的賬單應用程序 20511.7 選擇 Web 框架 20911.8 WebSocket 21011.9 網絡抓取 21111.9.1 獲取頁面 21211.9.2 抓取頁面 21511.9.3 遞歸抓取 21711.10 小結 221第 12 章 電子郵件的構造與解析 22212.1 電子郵件消息格式 22212.2 構造電子郵件消息 22412.3 添加 HTML 與多媒體 22612.4 添加內容 23112.5 解析電子郵件消息 23212.6 遍歷 MIME 部件 23412.7 郵件頭編碼 23612.8 解析日期 23712.9 小結 238第 13 章 SMTP 23913.1 電子郵件客戶端與 Web 郵件服務 23913.1.1 最開始使用命令行發送電子郵件 23913.1.2 客戶端的興起 24013.1.3 轉移到 Web 郵件 24113.2 SMTP 的使用方法 24313.2.1 發送電子郵件 24413.2.2 郵件頭與信封接收者 24513.2.3 多跳 24613.3 SMTP 庫簡介 24713.4 錯誤處理與會話調試 24813.5 從 EHLO 獲取信息 25113.6 使用安全套接層和傳輸層安全協議 25313.7 認證的 SMTP 25513.8 關於 SMTP 的小貼士 25713.9 小結 257第 14 章 POP 25814.1 POP 服務器的兼容性 25814.2 連接與認證 25914.3 獲取郵箱信息 26114.4 消息的下載與刪除 26314.5 小結 265第 15 章 IMAP 26615.1 在 Python 中使用 IMAP 26715.1.1 IMAPClient 26915.1.2 查看文件夾 27115.1.3 消息號與 UID 27215.1.4 消息範圍 27215.1.5 摘要信息 27215.1.6 下載整個郵箱 27415.1.7 單獨下載消息 27615.1.8 標記並刪除消息 28115.1.9 刪除消息 28215.1.10 搜索 28215.1.11 操作文件夾與消息 28415.1.12 異步性 28515.2 小結 285第 16 章 Telnet 和 SSH 28616.1 命令行自動化 28616.1.1 命令行擴展與引用 28716.1.2 UNIX 命令行參數幾乎可以包含任意字符 28816.1.3 對字符進行引用 29016.1.4 糟糕的 Windows 命令行 29116.1.5 終端的特別之處 29216.1.6 終端的緩衝行為 29516.2 Telnet 29616.3 SSH:安全 shell 30016.3.1 SSH 概述 30016.3.2 SSH 主機密鑰 30116.3.3 SSH 認證 30316.3.4 shell 會話與獨立命令 30416.3.5 SFTP:通過 SSH 進行文件傳輸 30816.3.6 其他特性 31016.4 小結 311第 17 章 FTP 31317.1 何時不使用 FTP 31317.1.1 通信信道 31417.1.2 在 Python 中使用 FTP 31517.1.3 ASCII 和二進制文件 31617.1.4 二進制下載進階功能介紹 31817.1.5 上傳數據 31917.1.6 二進制上傳進階功能介紹 32017.1.7 錯誤處理 32117.1.8 目錄掃描 32217.1.9 目錄檢測以及遞歸下載 32417.1.10 目錄的創建以及文件和目錄的刪除 32617.1.11 安全地操作 FTP 32617.2 小結 326第 18 章 RPC 32818.1 RPC 的特性 32918.1.1 XML-RPC 33018.1.2 JSON-RPC 33618.1.3 自文檔的數據 33918.1.4 關於對像:Pyro 和 RPyC 34018.1.5 RPyC 例子 34118.1.6 RPC、Web 框架和消息隊列 34318.1.7 從網絡錯誤中恢復 34418.2 小結 344
本書針對想要深入理解使用Python來解決網絡相關問題或是構建網絡應用程序的技術人員,結合實例講解了網絡協議、網絡數據及錯誤、電子郵件、服務器架構和HTTP及Web應用程序等經典話題。具體內容包括:全面介紹Python3中新提供的SSL支持,異步I/O循環的編寫,用Flask框架在Python代碼中配置URL,跨站腳本以及跨站請求偽造攻擊網站的原理及保護方法,等等。
[美] 布蘭登·羅德(Brandon Rhodes) 著 諸豪文 譯
Brandon RhodesDropbox工程師,早期使用Python的程序員之一,熱心於傳播Python,經常在各類Python主題大會上演講。John GoerzeneFolder公司IT與工程部副總裁,同時也是具有影響力的作家、繫統管理者和Python程序員,自1996年起就是Debian GNU/Linux操作繫統開發組的成員,擁有近20年的軟件開發經驗。