Python-HTTP 概況

前端知識

網頁最主要由3部分組成:

結構、表現和行爲。網頁如今新的標準是W3C,目前模式是HTML、CSS和JavaScript。

(1)HTML

HTML,全稱「Hyper Text Markup Language(超文本標記語言)」,
簡單來講,網頁就是用HTML語言製做的。HTML是一門描述性語言,是一門很是容易入門的語言。

(2)CSS

CSS,全稱「(層疊樣式表)」。之後咱們在別的地方看到「層疊樣式表」、「CSS樣式」,指的就是CSS。

(3)JavaScript

JavaScript是一門腳本語言。
HTML、CSS和JavaScript的區別 咱們都知道前端技術最核心的是HTML、CSS和JavaScript這三種。

比喻成建房子:

「HTML是網頁的結構,CSS是網頁的外觀,而JavaScript是頁面的行爲
若是咱們把前端開發的過程比喻成「建房子」,作一個網頁就像蓋一棟房子

一、先把房子結構建好(HTML)
二、建好房子以後給房子裝修(CSS),例如往窗戶安上窗簾、往地板鋪上漂亮的瓷磚
三、最後呢,裝修完了以後,當夜幕降臨的時候,咱們要開燈(JavaScript),這樣才能看得見裏面。

互聯網

一、什麼是互聯網

物理鏈接介質+互聯網協議

二、互聯網創建的目的?

用於打破地域限制來進行數據傳輸

三、什麼是上網

用戶一般使用瀏覽器發送請求給目標主機,
而後將目標主機上的文件內容下載到本地,

瀏覽器與服務端之間是基於http協議工做的

Web開發本質:

1. 瀏覽器輸入網址回車都發生了什麼?
1. 瀏覽器 給服務端 發送了一個消息
2. 服務端拿到消息
3. 服務端返回消息
4. 瀏覽器展現頁面

C/S架構 --> B/S架構html

HTTP協議

一、什麼是HTTP協議:

全稱Hyper Text Transfer Protocol(超文本傳輸協議)
HTTP協議是用於從(WWW:World Wide Web,簡萬維網 )服務器傳輸超文本到本地瀏覽器的傳送協議。

HTTP協議工做於B/S架構上
瀏覽器做爲HTTP客戶端經過URL向HTTP服務端即WEB服務器發送請求Request。
Web服務器根據接收到的請求後,向客戶端發送響應信息Response。

HTTP協議是基於TCP/IP通訊協議來傳遞數據的(HTML 文件, 圖片文件等)

二、爲什麼要用HTTP協議

是應用層測協議,用於瀏覽器與web服務端之間傳輸數據

三、如何用HTTP協議:

一、HTTP是基於TCP協議
二、HTTP協議的特色:

I:無鏈接
HTTP協議自己是沒有鏈接的,但沒進行一次HTTP協議的通訊
必先創建TCP鏈接,該TCP鏈接會在通訊完畢後關閉,若是短期內再次發起HTTP請求
則必須從新創建鏈接,這麼作的缺點是:一、對服務端形成過大的壓力 二、數據傳輸速度慢

解決方法:
Keepalive
II:無狀態:
cookie與session

三、HTTP之request

GET url HTTP/1.1\r\n
k1:v1\r\n
k2:v2\r\n
....
\r\n
請求體(只有post方法纔有請求體)

請求URL:
URL是一種URI的具體實現方式
https://www.cnblogs.com:80/linhaifeng/articles/8982675.html?a=1&b=1#anc1
https比https多了一個ssl安全認證
域名+端口號 虛擬目錄 文件 &請求參數 #頁面錨點

請求方法:
GET
參數是存放url地址的?後的
參數大小有限制
不安全
POST
參數是存放請求體中的
參數大小無限制
相對安全

請求頭:
user-agent
referer
cookie

四、HTTP之response

HTTP/1.1 200 Ok\r\n
k1:v1\r\n
k2:v2\r\n
...
\r\n
相應體(即咱們要從服務端下載的內容)

HTTP協議完整工做流程

HTTP協議定義Web客戶端如何從Web服務器請求Web頁面,以及服務器如何把Web頁面傳送給客戶端。HTTP協議採用了請求/響應模型。客戶端向服務器發送一個請求報文,請求報文包含請求的方法、URL、協議版本、請求頭部和請求數據。服務器以一個狀態行做爲響應,響應的內容包括協議的版本、成功或者錯誤代碼、服務器信息、響應頭部和響應數據。前端

如下是 HTTP 請求/響應的步驟:web

一、客戶端鏈接到Web服務器

一個HTTP客戶端,一般是瀏覽器,與Web服務器的HTTP端口(默認爲80)創建一個TCP套接字鏈接。例如,http://www.oakcms.cn。瀏覽器

二、發送HTTP請求

經過TCP套接字,客戶端向Web服務器發送一個文本的請求報文,一個請求報文由請求行、請求頭部、空行和請求數據4部分組成。安全

三、服務器接受請求並返回HTTP響應

Web服務器解析請求,定位請求資源。服務器將資源複本寫到TCP套接字,由客戶端讀取。一個響應由狀態行、響應頭部、空行和響應數據4部分組成。服務器

四、釋放鏈接TCP鏈接

若connection 模式爲close,則服務器主動關閉TCP鏈接,客戶端被動關閉鏈接,釋放TCP鏈接;若connection 模式爲keepalive,則該鏈接會保持一段時間,在該時間內能夠繼續接收請求;cookie

五、客戶端瀏覽器解析HTML內容

客戶端瀏覽器首先解析狀態行,查看代表請求是否成功的狀態代碼。而後解析每個響應頭,響應頭告知如下爲若干字節的HTML文檔和文檔的字符集。客戶端瀏覽器讀取響應數據HTML,根據HTML的語法對其進行格式化,並在瀏覽器窗口中顯示。session

例如:在瀏覽器地址欄鍵入URL,按下回車以後會經歷如下流程:架構

一、瀏覽器向 DNS 服務器請求解析該 URL 中的域名所對應的 IP 地址;tcp

二、解析出 IP 地址後,根據該 IP 地址和默認端口 80,和服務器創建TCP鏈接;

三、瀏覽器發出讀取文件(URL 中域名後面部分對應的文件)的HTTP 請求,該請求報文做爲 TCP 三次握手的第三個報文的數據發送給服務器;

四、服務器對瀏覽器請求做出響應,並把對應的 html 文本發送給瀏覽器;

五、釋放 TCP鏈接;

六、瀏覽器將該 html 文本並顯示內容;   

HTTP協議關鍵性總結

複製代碼
 
#一、簡單快速
客戶向服務器請求服務時,只需傳送請求方法和路徑。請求方法經常使用的有GET、HEAD、POST。每種方法規定了客戶與服務器聯繫的類型不一樣。因爲HTTP協議簡單,使得HTTP服務器的程序規模小,於是通訊速度很快。


#二、靈活
HTTP容許傳輸任意類型的數據對象。正在傳輸的類型由Content-Type加以標記。


#三、無鏈接
HTTP無鏈接說的是:當某個客戶機在短期屢次次請求同一個資源,服務器並不能區別是否已經響應過用戶的請求。
因而咱們每次發送http請求,都須要事先發起一個到服務器的TCP請求,經歷「三次握手」的過程。這針對大流量的的服務器來講,開銷是至關大的。這是http無連接帶來的缺點

   針對http無鏈接,人們設計了非持久鏈接和持久鏈接。實際上關於http協議非持久鏈接和持久鏈接是針對tcp協議的。當客戶機/服務器的交互運行於TCP協議上時,應用程序的每一個請求/響應對是經不一樣的TCP鏈接時,則該應用程序使用非持久鏈接,而當應用程序的每一個請求/響應對是經相同的TCP鏈接發送,則該應用程序使用持久鏈接。

    非持久鏈接
    請求一個HTTP請求/響應須要的總時間=客戶端發出創建鏈接+發生請求報文+服務器傳輸HTML文件的時間

    持久鏈接
    服務器在發送響應後,保持該TCP鏈接打開。在相同的客戶機與服務器之間的後續請求和響應報文經過相同的鏈接進行傳送。不須要再次創建tcp鏈接 


#四、無狀態
所謂http是無狀態協議,言外之意是說http協議無法保存客戶機信息,
無狀態的優勢是:
    在服務器不須要先前信息時它的應答就較快。
無狀態的缺點是:
    缺乏狀態意味着若是後續處理須要前面的信息,則它必須重傳。這樣可能致使每次鏈接傳送的數據量增大

關於http無狀態阻礙了交互式應用程序的實現。好比記錄用戶瀏覽哪些網頁、判斷用戶是否擁有權限訪問等。因而,兩種用於保持HTTP狀態的技術就應運而生了,一個是Cookie,而另外一個則是Session。


#五、支持B/S及C/S模式。
 
複製代碼
相關文章
相關標籤/搜索