標籤:http 請求報文 響應報文
HTTP 簡介
HTTP協議是Hyper Text Transfer Protocol(超文字傳輸通訊協定 (HTTP))的縮寫,是用於從全球資訊網(WWW:World Wide Web )伺服器傳輸超文本到本地瀏覽器的傳送協議。
HTTP是一個基於TCP/IP通訊協定來傳遞資料(HTML 檔案, 圖片檔案, 查詢結果等)。
HTTP 工作原理
HTTP協議工作於用戶端-服務端架構為上。瀏覽器作為HTTP用戶端通過URL向HTTP服務端即WEB伺服器發送所有請求。
Web伺服器有:Apache伺服器,IIS伺服器(Internet Information Services)等。
Web伺服器根據接收到的請求後,向用戶端發送響應資訊。
HTTP預設連接埠號碼為80,但是你也可以改為8080或者其他連接埠。
HTTP三點注意事項:
- HTTP是無串連:不需連線的含義是限制每次串連只處理一個請求。伺服器處理完客戶的請求,並收到客戶的應答後,即中斷連線。採用這種方式可以節省傳輸時間。
- HTTP是媒體獨立的:這意味著,只要用戶端和伺服器知道如何處理的資料內容,任何類型的資料都可以通過HTTP發送。用戶端以及伺服器指定使用適合的MIME-type內容類型。
- HTTP是無狀態:HTTP協議是無狀態協議。無狀態是指協議對於交易處理沒有記憶能力。缺少狀態意味著如果後續處理需要前面的資訊,則它必須重傳,這樣可能導致每次串連傳送的資料量增大。另一方面,在伺服器不需要先前資訊時它的應答就較快。
以表展示了HTTP協議通訊流程:
HTTP 訊息結構
HTTP是基於用戶端/服務端(C/S)的架構模型,通過一個可靠的連結來交換資訊,是一個無狀態的請求/響應協議。
一個HTTP"用戶端"是一個應用程式(Web瀏覽器或其他任何用戶端),通過串連到伺服器達到向伺服器發送一個或多個HTTP的請求的目的。
一個HTTP"伺服器"同樣也是一個應用程式(通常是一個Web服務,如Apache Web伺服器或IIS伺服器等),通過接收用戶端的請求並向用戶端發送HTTP響應資料。
HTTP使用統一資源識別項(Uniform Resource Identifiers, URI)來傳輸資料和建立串連。
一旦建立串連後,資料訊息就通過類似Internet郵件所使用的格式[RFC5322]和多用途Internet郵件擴充(MIME)[RFC2045]來傳送。
用戶端請求訊息
用戶端發送一個HTTP請求到伺服器的請求訊息包括以下格式:請求行(request line)、要求標頭部(header)、空行和請求資料4個部分組成,給出了請求報文的一般格式。
伺服器響應訊息
HTTP響應也由三個部分組成,分別是:狀態行、訊息前序、響應本文。
執行個體
下面執行個體是一點典型的使用GET來傳遞資料的執行個體:
用戶端請求:
GET /hello.txt HTTP/1.1User-Agent: curl/7.16.3 libcurl/7.16.3 OpenSSL/0.9.7l zlib/1.2.3Host: www.example.comAccept-Language: en, mi
服務端響應:
HTTP/1.1 200 OKDate: Mon, 27 Jul 2009 12:28:53 GMTServer: ApacheLast-Modified: Wed, 22 Jul 2009 19:15:56 GMTETag: "34aa387-d-1568eb00"Accept-Ranges: bytesContent-Length: 51Vary: Accept-EncodingContent-Type: text/plain
輸出結果:
Hello World! My payload includes a trailing CRLF.
《HTTP權威指南》讀書筆記-HTTP簡介與訊息結構