客戶端:請求訪問文字或影象等資源的一端
伺服器端:提供資源響應的一端
http協議能夠區分哪端是客戶端,哪端是伺服器端。
兩台計算機之間使用http協議通訊時,在一條通訊線路上必定有一端時客戶端,另一端時伺服器端。
http協議規定,請求從客戶端發出,最後伺服器端響應應該請求並返回。
從客戶端傳送給某個http伺服器端的請求報文中的內容:
get: 表示請求訪問伺服器的型別,稱為方法(method)
/index.htm 指明了請求訪問的資源物件,即請求uri(request-uri)
http/1.1 即http的版本號,用來提示客戶端使用的http協議功能
綜上所述:請求訪問某台http伺服器上的/index.html頁面資源
"""請求報文的構成:
請求方法、請求的uri、協議版本、可選的請求首部字段、內容實體構成
接收到請求的伺服器,會將請求內容的處理結果以響應的形式返回
http/1.1: 表示服務對應的http版本
200 ok 表示請求的處理結果的狀態碼和原因短語(reason-phrase)
下一行顯示了建立響應的日期時間,是首部字段(header field)內的乙個屬性
接著以一空行分隔,之後的內容稱為資源實體的主體(entity body)
"""響應報文的構成:
協議版本
狀態碼(表示請求成功或失敗的數字**)
用以解釋狀態碼的原因短語
可選的響應首部字段
實體主體構成
http是一種不儲存狀態,即無狀態(stateless)協議
http協議自身不對請求和響應之間的通訊狀態進行儲存,即http這個級別,協議對於傳送過的請求或響應都不做持久化處理。
為了更快的處理大量事務,確保協議的可伸縮性,而特意把http協議涉及的如此簡單。
cookie技術,有了cookie再用http協議通訊,就可以管理狀態了。
http協議使用uri定位網際網路上的資源。正是因為uri的特定功能,在網際網路上任意位置的資源都能訪問到。
當客戶端請求訪問資源而傳送請求時,uri需要將作為請求報文中的請求uri包含在內。
指定請求uri的方式有很多
除此之外,如果不是訪問特定資源而是對伺服器本身發起請求,可以用乙個 * 來代替請求uri
"""options * http/1.1 # 查詢http伺服器端支援的http方法種類
"""get :獲取資源,用來請求訪問已被uri識別的資源。指定的資源經伺服器端解析後返回響應內容。
post:傳輸實體主體,主要目的並不是獲取響應的主體內容
put :傳輸檔案
"""put:要求在請求報文的主體中包含檔案內容,然後儲存到請求uri指定的位置
但是,鑑於 http/1.1 的 put 方法自身不帶驗證機制,任何人都可以上傳檔案,存在安全性問題,因此一般的 web **不使用該方法。
"""head:獲得報文首部,和get類似,只是不返回報文主體部分。用於確認uri的有效性及資源更新的日期時間等
delete:刪除檔案,delete 方法按請求 uri 刪除指定的資源。不帶驗證機制
options:詢問支援的方法(options 方法用來查詢針對請求 uri 指定的資源支援的方法)
trace:追蹤路徑(trace 方法是讓 web 伺服器端將之前的請求通訊返回給客戶端的方法)
connect:要求用隧道協議連線**
connect方法要求在與**伺服器通訊時建立隧道,實現用隧道協議進行 tcp 通訊。主要使用 ssl(secure sockets layer,安全套接層)和 tls(transport layer security,傳輸層安全)協議把通訊內容加 密後經網路隧道傳輸。
向請求 uri 指定的資源傳送請求報文時,採用稱為方法的命令
方法的作用在於:可以指定請求的資源按期望產生某種行為
每次的請求都會造成無謂的 tcp 連線建立和斷開,增加通訊量的開銷。
持久連線(http persistent connections,也稱為http keep-alive 或http connection reuse)的方法
只要任意一端沒有明確提出斷開連線,則保持tcp連線狀態
在於減少了tcp連線的重複建立和斷開造成的額外開銷,減輕了伺服器端的負載。另外,減少開銷的那部分時間,使http請求和響應能夠更早滴結束,這樣web頁面的現實速度也就相應提高了。
持久連線使得多數請求以管線化(pipelining)方式傳送成為可能。
不用等待響應亦可直接放鬆下乙個請求,即可同事並行傳送多個請求
管線化技術則比持久連線還要快
http無狀態的優點:
減少伺服器的cup及記憶體資源的消耗
cookie技術通過在請求和響應報文中寫入cookie資訊來控制客戶端的狀態
cookie 會根據從伺服器端傳送的響應報文內的乙個叫做 set-cookie 的首部字段資訊,通知客戶端儲存 cookie。當下次客戶端再往該伺服器 傳送請求時,客戶端會自動在請求報文中加入 cookie 值後傳送出去。
伺服器端發現客戶端傳送過來的 cookie 後,會去檢查究竟是從哪 乙個客戶端發來的連線請求,然後對比伺服器上的記錄,最後得到之前 的狀態資訊。
HTTP協議 初識HTTP
一 web網路基礎 客戶端 伺服器 首先作為傳送端的客戶端在應用層 http協議 發出乙個想看某個web頁面的http 請求。http報文傳送到傳輸層 tcp協議 為了傳輸方便,傳輸層把接收到的資料進行分割,並在各個報文上打上標記序號及埠號後 到網路層。網路層 ip協議 增加作為通訊目的位址的mac...
HTTP協議?HTTP協議中POST GET H
head to inde x.html not supported.invalid method in request head htp 1.1 apache 1.3.12 server at www.fudan.edu.cn port 80 關於實體頭部的內容還可以有 last modified ...
HTTP協議 HTTP首部總結
首部和方法配合工作,共同決定了客戶端和伺服器能做什麼事情。http協議的請求和響應報文中必定含有http首部,首部內容為客戶端和伺服器分別處理請求和響應提供所需要的資訊,對客戶端使用者來說,這些資訊中的大部分內容都無須親自檢視,因此平時在使用web的過程中感受不到它。http請求報文由方法 uri ...