Django之web應用與http協議

Sunny_Future發表於2020-11-24

1、web應用

1.1 web應用程式

Web應用程式指供瀏覽器訪問的程式,通常也簡稱為Web應用。應用程式有兩種模式C/S、B/S。

C/S是客戶端/伺服器端程式,也就是說這類程式一般獨立執行。而B/S就是瀏覽器端/伺服器端應用程式,這類應用程式一般藉助瀏覽器來執行。

Web應用程式一般是BS模式。Web應用程式首先是應用程式,和用標準的程式語言,如Java,PHP,Python等編寫出來的程式沒有什麼本質上的不同。

這裡,基於socket實現一個最簡單的web應用程式!

import socket

sock=socket.socket()
sock.bind(("127.0.0.1",8008))
sock.listen(5)

while 1:
    print("server is working...")
    conn,addr=sock.accept()
    recv_data=conn.recv(1024)
    conn.send(b"HTTP/1.1 200 OK\r\n\r\n<h1>welcom to Web!</h1>")
    conn.close()

sock.close()

1.2 web工作方式

瀏覽器本身就是一個客戶端,當使用者在位址列輸入url時,首先瀏覽器會去請求DNS伺服器,通過DNS獲取域名對應的IP,然後通過IP地址找到 IP 對應的伺服器後,要求建立TCP連線,等瀏覽器傳送完HTTP Request(請求包)後,伺服器接收到請求包之後才開始處理請求包,伺服器呼叫自身服務,返回HTTP Response(響應包),客戶端收到來自伺服器的響應後開始渲染這個Response包裡的主體(body),等收到全部的內容隨後斷開與該伺服器之間TCP連線

2、http協議

2.1 http協議介紹

HTTP協議是Hyper Text Transfer Protocol 超文字傳輸協議的縮寫,是用於全球資訊網(WWW:World Wide Web )伺服器與本地瀏覽器之間傳輸超文字的傳送協議。HTTP是一個屬於應用層的物件導向的協議,由於其簡捷、快速的方式,適用於分散式超媒體資訊系統。它於1990年提出,經過幾年的使用與發展,得到不斷地完善和擴充套件。HTTP協議工作於客戶端-服務端架構為上。瀏覽器作為HTTP客戶端通過URL向HTTP服務端即WEB伺服器傳送所有請求。Web伺服器根據接收到的請求後,向客戶端傳送響應資訊。
在這裡插入圖片描述

2.2 http協議特性

2.2.1 基於TCP/IP協議

http協議是基於TCP/IP協議之上的應用層協議。

2.2.2 基於請求-響應模式

HTTP協議規定,請求從客戶端發出,最後伺服器端響應該請求並 返回。換句話說,肯定是先從客戶端開始建立通訊的,伺服器端在沒有 接收到請求之前不會傳送響應

在這裡插入圖片描述

2.2.3 無狀態儲存

HTTP是一種不儲存狀態,即無狀態(stateless)協議。HTTP協議 自身不對請求和響應之間的通訊狀態進行儲存。也就是說在HTTP這個 級別,協議對於傳送過的請求或響應都不做持久化處理。

使用HTTP協議,每當有新的請求傳送時,就會有對應的新響應產 生。協議本身並不保留之前一切的請求或響應報文的資訊。這是為了更快地處理大量事務,確保協議的可伸縮性,而特意把HTTP協議設計成 如此簡單的。

可是,隨著Web的不斷髮展,因無狀態而導致業務處理變得棘手 的情況增多了。比如,使用者登入到一家購物網站,即使他跳轉到該站的 其他頁面後,也需要能繼續保持登入狀態。針對這個例項,網站為了能 夠掌握是誰送出的請求,需要儲存使用者的狀態。HTTP/1.1雖然是無狀態協議,但為了實現期望的保持狀態功能, 於是引入了Cookie技術。有了Cookie再用HTTP協議通訊,就可以管 理狀態了。有關Cookie的詳細內容稍後講解。
在這裡插入圖片描述

2.2.4 無連線

無連線的含義是限制每次連線只處理一個請求。伺服器處理完客戶的請求,並收到客戶的應答後,即斷開連線。採用這種方式可以節省傳輸時間。

2.3 http請求協議與響應協議

http協議包含由瀏覽器傳送資料到伺服器需要遵循的請求協議與伺服器傳送資料到瀏覽器需要遵循的請求協議。用於HTTP協議互動的信被為HTTP報文。請求端(客戶端)的HTTP報文 做請求報文,響應端(伺服器端)的 做響應報文。HTTP報文字身是由多行資料構成的字文字。

2.3.1 請求協議

在這裡插入圖片描述
請求方式: get與post請求

GET提交的資料會放在URL之後,以?分割URL和傳輸資料,引數之間以&相連,如EditBook?name=test1&id=123456. POST方法是把提交的資料放在HTTP包的請求體中.
GET提交的資料大小有限制(因為瀏覽器對URL的長度有限制),而POST方法提交的資料沒有限制.

2.3.2 響應協議

在這裡插入圖片描述
響應狀態碼:

狀態碼的職 是當客戶端向伺服器端傳送請求時, 返回的請求 結果。藉助狀態碼,使用者可以知道伺服器端是正常 理了請求,還是出 現了 。狀態碼如200 OK,以3位數字和原因 成。數字中的 一位指定了響應 別,後兩位無分 。響應 別有以5種。
在這裡插入圖片描述

相關文章