理清Python网络编程
網絡編程
- 大綱
- 網絡編程基礎
- TCP/IP 協議
- Web 基礎
- HTTP協議
- Web 服務器
- WSGI 接口
- GGI
- WSGI
- Web 框架
大綱
網絡編程基礎
TCP/IP 協議
TCP/IP 協議 是最重要的兩種通信協議。TCP/IP 協議包含四個概念層。
-
應用層:為客戶提供需要的各種服務,該層主要協議有 FTP(文件傳輸協議)、Telnet(遠程登錄協議)、DNS(域名系統協議)、SMTP(電子郵件傳輸的協議)等。
-
傳輸層:為應用層實體提供端到端的通信功能,保證了數據包的順序傳送及數據的完整性,最常見的兩個協議是 傳輸控制協議(TCP)和用戶數據報協議(UDP)
-
網絡層:主要解決主機到主機的通信問題。該層有3個主要的協議:網際協議(IP)、互聯網組管理協議(IGMP)和互聯網控制報文協議(ICMP)
-
鏈路層:負責監(jiān)視數據在主機和網絡之間的交換。TCP/IP本身并未定義該層的協議,而由參與互連的各網使用自己的物理層和數據鏈路層協議,然后與TCP/IP的網絡接入層進行連接。
傳輸層的TCP協議
Web 基礎
與Web 開發(fā)密切相關的是應用層,在應用層最主要的協議就是HTTP協議。
HTTP協議
在用戶輸入網址訪問明日學院網站的例子中,用戶瀏覽器被稱為客戶端,明日學院網站被稱為服務器。這個過程實質上就是客戶端向服務器發(fā)起請求,服務器接收請求后,將處理后的信息(也稱為響應)傳給客戶端。這個過程是通過HTTP協議實現的。
Web 服務器
- 當在瀏覽器中輸入URL后,瀏覽器會先請求DNS服務器,獲得請求站點的IP地址(即根據URL地址www. baidu. com獲取其對應的IP地址,如10l. 200. 85)。
- 然后發(fā)送一個HTTPRequest(請求)給擁有該IP的主機(百度的百度云服務器),接著就會接收到服務器返回的HTTP Responste(響應),瀏覽器經過渲染后,以一種較好的效果呈現給用戶。
Web 服務器的工作原理可以概括為以下4個步驟:
建立連接:客戶端通過TCP/IP協議建立到服務器的TCP連接。
請求過程:客戶端向服務器發(fā)送HTTP協議的請求包,請求服務器里的資源文檔。
應答過程:服務器向客戶端發(fā)送HTTP協議的應答包,如果請求的資源包含動態(tài)語言內容,服務器會調用解釋引擎處理動態(tài)內容,并將處理后得到的數據返回給客戶端。由客戶端解釋HTML文檔,最終在用戶屏幕上渲染顯示圖形的結果。
關閉連接:客戶端與服務器斷開。
常見的請求方法:
1、OPTIONS
返回服務器針對特定資源所支持的HTTP請求方法,也可以利用向web服務器發(fā)送‘*’的請求來測試服務器的功能性
2、HEAD
向服務器索與GET請求相一致的響應,只不過響應體將不會被返回。這一方法可以再不必傳輸整個響應內容的情況下,就可以獲取包含在響應小消息頭中的元信息。
3、GET
向特定的資源發(fā)出請求。注意:GET方法不應當被用于產生“副作用”的操作中,例如在Web Application中,其中一個原因是GET可能會被網絡蜘蛛等隨意訪問。Loadrunner中對應get請求函數:web_link和web_url
4、POST
向指定資源提交數據進行處理請求(例如提交表單或者上傳文件)。數據被包含在請求體中。POST請求可能會導致新的資源的建立和/或已有資源的修改。 Loadrunner中對應POST請求函數:web_submit_data,web_submit_form
5、PUT
向指定資源位置上傳其最新內容
6、DELETE
請求服務器刪除Request-URL所標識的資源
7、TRACE
回顯服務器收到的請求,主要用于測試或診斷
8、CONNECT
HTTP/1.1協議中預留給能夠將連接改為管道方式的代理服務器。
注意:
1)方法名稱是區(qū)分大小寫的,當某個請求所針對的資源不支持對應的請求方法的時候,服務器應當返回狀態(tài)碼405(Mothod Not Allowed);當服務器不認識或者不支持對應的請求方法時,應返回狀態(tài)碼501(Not Implemented)。
2)HTTP服務器至少應該實現GET和HEAD/POST方法,其他方法都是可選的,此外除上述方法,特定的HTTP服務器支持擴展自定義的方法。
服務器返回給客戶端的狀態(tài)碼:
200 OK 當您的操作將在響應正文中返回數據時,出現此結果。
204 No Content 當您的操作成功,但不在響應正文中返回數據時,出現此結果。
304 Not Modified(重定向) 當測試實體自上次檢索以來是否被修改時,出現此結果。
403 Forbidden 客戶端錯誤
401 Unauthorized 客戶端錯誤
413 Payload Too Large(客戶端錯誤) 當請求長度過長時,出現此結果。
400 BadRequest(客戶端錯誤) 當參數無效時,出現此結果。
404 Not Found(客戶端錯誤) 當資源不存在時,出現此結果。
405 Method Not Allowed(客戶端錯誤)由于方法和資源組合不正確而出現此錯誤。 例如,您不能對一個實體集合使用 DELETE 或 PATCH。
412 Precondition Failed 客戶端錯誤
501 Not Implemented(服務器錯誤) 當未實施某個請求的操作時,出現此結果。
503 Service Unavailable(服務器錯誤) 當 Web API 服務不可用時,出現此結果。
WSGI 接口
GGI
當今Web開發(fā)已經很少使用純靜態(tài)頁面,更多的是使用動態(tài)頁面,以實現交互性。例如,網站具有登錄和注冊功能,當用戶登錄網站時,需要輸入用戶名和密碼,然后提交數據。
Web服務器不能處理表單中傳遞過來的與用戶相關的數據,這不是Web服務器的職責。
CGI應運而生。CGI(Common Gateway Interface,通用網關接口)是一段程序,運行在服務器上。Web服務器將請求發(fā)送給CGI應用程序,再將CGI應用程序動態(tài)生成的HIML頁面發(fā)送回客戶端。CGI在Web服務器和應用之間充當了交互作用,這樣才能夠處理用戶數據,生成并返回最終的動態(tài)HIML.頁面。
CGI的工作方式如圖3. 25所示。
WSGI
WSGI是 Web Server Gateway Interface 的縮寫。
它是 Python應用程序(application)或框架(如 Django)和 Web服務器之間的一種接口,已經被廣泛接受。
它是一種協議,一種規(guī)范,其是在 PEP 3333 提出的。這個協議旨在解決眾多 web 框架和web server軟件的兼容問題。有了WSGI,你不用再因為你使用的web 框架而去選擇特定的 web server軟件。
WSGI接口:
WSGI 接口有服務端和應用端兩部分,服務端也可以叫網關端,應用端也叫框架端。服務端調用一個由應用端提供的可調用對象。如何提供這個對象,由服務端決定。例如某些服務器或者網關需要應用的部署者寫一段腳本,以創(chuàng)建服務器或者網關的實例,并且為這個實例提供一個應用實例。另一些服務器或者網關則可能使用配置文件或其他方法以指定應用實例應該從哪里導入或獲取。
WSGI 工作流程圖:
Web 框架
上邊我們了解到 WSGI 的一端是框架。
那什么是框架呢?
Web框架是用來簡化Web開發(fā)的軟件框架。事實上,框架并不是什么新技術,它只是一些能夠實現常用功能的Python文件。可以把框架看作是一系列工具的集合,其存在是為了避免重新發(fā)明“輪子”.以在創(chuàng)建新項目時減少開發(fā)成本。
一個典型的框架,通常會提供如下常用功能。
- 管理路由
- 支持數據庫
- 支持MVC
- 支持ORM
- 支持模板引擎
- 管理會話和Cookies
ORM MVC、模板引擎介紹
總結
以上是生活随笔為你收集整理的理清Python网络编程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Matlab 常用运算符的用法和功能
- 下一篇: Python环境下的数据库编程