本書選用各項性能指標優良的Ubuntu作為Linux系統實例,以Python為編程語言,理論結合實踐,系統地講解網絡各層次的功能、所包含的常用協議、數據報文格式,并給出實際操作的程序實例。本書包括Linux系統介紹、Python語言基礎、TCP/IP協議簇、Socket原理、進程和線程、網絡應用程序實例、Web應用程序開發等內容。本書內容也適用于其他版本的Linux。
本書可作為普通高等院校信息類專業本科生和研究生教材,也可作為廣大Linux用戶、網絡管理員、程序員的自學用書和參考手冊。
《Linux網絡編程(Python)》立足開源Linux系統,選用系統運維的常用語言Python闡述TCP/IP協議簇、Socket等編程原理,講解并例示HTTP、FTP、E-mail、Web APP、Web框架等系統運維實例,并結合多線程和數據庫技術完善與增強應用實例的功能。本書全部代碼可在GITHUB下載。
前言
Linux系統與互聯網相伴而生,共同成長,成為現代信息技術高速發展的重要支撐和驅動力。Python作為一種開源、跨平臺、面向對象的新型計算機程序設計語言,語法簡潔,語義清晰,有豐富、強大的庫的支持,廣泛應用在網絡編程、科學計算、人工智能等各個領域。兩者的結合能夠使讀者快速理解基礎理論,掌握實踐技能,提高學習和工作的效率。
本書選用Ubuntu Desktop為實踐平臺,以Python語言為編程工具,針對互聯網所使用的TCP/IP協議簇進行分層介紹和解析,并給出實際操作的程序實例。
全書共分為7章。第1章介紹Linux的歷史、特點、組成、常見發行版本以及Linux常用的各種安裝方式,由馬棟林編寫。第2章講解Python語言的特點、開發環境安裝、數據類型、語法規則、語句、函數、模塊、類、對象、異常、文件等內容,由趙宏編寫。第3章分層講解TCP/IP各層主要協議、數據報文格式、層間數據交換規則、常見網絡應用與各層協議的對應、程序實例等內容,由包廣斌編寫。第4章講解Socket原理、SOCK_STREAM、SOCK_DGRAM、SOCK_RAW等內容,并通過程序實例演示Socket在C/S結構編程和網絡嗅探中的實際應用,由趙宏和馬棟林編寫。第5章講解多進程和多線程技術在網絡編程中的應用,通過實例對比多進程與多線程實現方案的異同,并介紹了利用socketserver編寫多進程和多線程程序的方法,最后通過GUI聊天室程序實例說明了多進程和多線程編程技術的實際應用,由包廣斌和趙宏編寫。第6章講解網頁內容獲取、訪問FTP服務器、訪問DNS、收發Email、獲取DHCP信息等實用程序的編寫方法與過程,這些實例能夠讓讀者進一步理解網絡理論和工具軟件的運行機制,由趙宏和包廣斌編寫。第7章介紹Python開發Web應用程序的方法,講解WSGI工作原理,以流行的Web開發框架Django為例,演示Web應用程序開發工程,由趙宏和馬棟林編寫。
本書在編寫過程中,得到蘭州理工大學計算機與通信學院和信息中心各位老師的支持。碩士研究生韓澤宇、蔣家俊、張浩和王孝通幫助調試本書部分代碼。
本書的編寫受到蘭州理工大學教學研究項目和CERNET下一代互聯網技術項目(NGII20160311,NGII20160112)的資助。
因時間倉促,不足在所難免,請大家批評指正,讀者可通過zhaoh@lut.edu.cn或594286500@qq.com與作者聯系,也可以加入本書的QQ群643116956進行討論。
為方便教學,作者開發了與本書相配套的多媒體課件、課后習題答案和程序代碼,讀者可掃描封底課件二維碼下載或者向編者索取。
作者
2018年6月于蘭州理工大學
目錄
第1章Linux系統介紹
1.1Linux的誕生
1.2Linux的特點
1.3Linux的組成
1.4Linux的應用
1.5常見Linux發行版本
1.6Linux的安裝
1.6.1常用的安裝方式
1.6.2安裝前的準備
1.6.3虛擬機安裝Linux
1.6.4多操作系統的安裝
1.7本章小結
習題
第2章Python語言基礎
2.1Python語言簡介
2.2Python語言解釋器安裝
2.2.1在線安裝
2.2.2下載安裝
2.2.3管理多個Python版本
2.2.4安裝Python的IDE環境
2.2.5測試Python IDE
2.3數據類型
2.3.1布爾型
2.3.2整型
2.3.3浮點型
2.3.4復數型
2.3.5字符串型
2.3.6列表型
2.3.7元組型
2.3.8字典型
2.3.9日期型
2.3.10數組型
2.4語法規則與語句
2.4.1輸出與輸入
2.4.2條件判斷
2.4.3循環
2.5函數與模塊
2.5.1自定義函數
2.5.2默認參數
2.5.3可變參數
2.5.4關鍵字參數
2.5.5命名關鍵字參數
2.5.6參數組合規則
2.5.7實參與形參
2.5.8遞歸
2.5.9模塊
2.6類與對象
2.6.1類的定義與實例化對象
2.6.2類屬性與實例屬性
2.6.3屬性封裝
2.6.4類的繼承
2.6.5多態
2.7異常和異常處理
2.7.1異常捕獲與處理
2.7.2拋出異常
2.8文件
2.8.1讀寫文本文件
2.8.2讀寫二進制文件
2.8.3讀寫JSON
2.8.4讀寫StringIO
2.8.5讀寫BytesIO
2.9本章小結
習題
第3章TCP/IP協議簇
3.1TCP/IP協議簇介紹
3.2鏈路層
3.3網絡層
3.3.1IPv4
3.3.2IPv6
3.3.3網絡層協議
3.3.4獲取計算機IP地址實例
3.3.5獲取局域網網關地址實例
3.4傳輸層
3.4.1UDP
3.4.2TCP
3.4.3主機收發數據統計信息程序實例
3.5應用層
3.5.1HTTP
3.5.2HTTPS
3.5.3FTP
3.5.4DNS
3.5.5SMTP
3.5.6POP3
3.5.7DHCP
3.6本章小結
習題
第4章Socket
4.1Socket介紹
4.2SOCK_STREAM
4.2.1字符串轉換實例
4.2.2文件下載實例
4.2.3掃描主機端口實例
4.3SOCK_DGRAM
4.3.1獲取服務器CPU使用情況實例
4.3.2獲取服務器內存使用情況實例
4.4SOCK_RAW
4.4.1ICMP報文
4.4.2ICMP報文校驗和計算
4.4.3數據轉換為bytes格式
4.4.4探測主機是否在線實例
4.4.5網絡嗅探實例
4.5本章小結
習題
第5章進程與線程
5.1進程與線程介紹
5.2多進程編程
5.2.1多進程文件下載服務實例
5.2.2進程池掃描主機端口實例
5.2.3多進程返回服務器負載情況實例
5.3多線程編程
5.3.1多線程文件下載服務實例
5.3.2線程池掃描主機端口實例
5.4socketserver
5.4.1多進程TCP實例
5.4.2多進程UDP實例
5.4.3多線程TCP與多線程UDP
5.5GUI聊天室實例
5.5.1Tkinter
5.5.2服務器端程序
5.5.3客戶端程序
5.5.4程序運行結果
5.6本章小結
習題
第6章網絡應用程序實例
6.1網頁內容獲取
6.1.1通過API獲取天氣數據實例
6.1.2正則表達式
6.1.3通過爬蟲獲取天氣數據實例
6.1.4通過爬蟲下載網頁中的圖片實例
6.1.5爬蟲獲取需要驗證用戶身份的網站信息實例
6.1.6爬蟲獲取使用HTTPS網站信息實例
6.2訪問FTP服務器
6.2.1搭建FTP服務器
6.2.2訪問FTP服務器的常用函數
6.2.3訪問FTP服務器程序實例
6.3訪問DNS
6.3.1DNS記錄類型
6.3.2訪問DNS程序實例
6.4收發Email
6.4.1設置QQ郵箱授權碼
6.4.2簡單郵件發送實例
6.4.3HTML格式郵件發送實例
6.4.4帶附件的郵件發送實例
6.4.5帶圖片的郵件發送實例
6.4.6郵件接收實例
6.5獲取DHCP信息
6.5.1Scapy簡介及安裝
6.5.2獲取DHCP信息程序實例
6.6本章小結
習題
第7章Web應用程序開發
7.1WSGI
7.2Django
7.2.1Django安裝與配置
7.2.2SQLite3數據庫
7.2.3向客戶端回應簡單信息
7.2.4向客戶端回應HTML文件
7.2.5模板標簽
7.2.6框架實例
7.3本章小結
習題
參考文獻