首頁 > 軟體

HTTP協定初步解析

2020-06-16 17:38:56

一、什麼是HTTP協定

HTTP是hypertext transfer protocol(超文字傳輸協定)的簡寫,它是TCP/IP協定的一個應用層協定,定義了Web用戶端向Web伺服器請求Web頁面的方式,以及伺服器向用戶端傳送Web頁面的方式。

定義中的名詞解釋:
什麼是超文字?
超文字是用超連結的方法,將各種不同空間的文字資訊組織在一起的網狀文字。
什麼是應用層協定?
網路的設計者使用分層的方式組織網路協定以及實現這些協定的硬體和軟體,歷史上比較重要的一個協定組織模型是五層因特網協定棧,從頂層到底層,分別為應用層、運輸層、網路層、鏈路層、物理層。其中應用層常見的協定有HTTP、SMTP、FTP等,運輸層協定有TCP、UDP等,網路層有IP等。
 
二、HTTP協定特點
 
1. HTTP使用TCP作為它的運輸層協定,TCP為HTTP提供可靠資料傳輸服務。使用了分層結構,HTTP協定不用擔心資料丟失,也不用關注TCP從網路的資料丟失和亂序故障中恢復的細節。
2. HTTP是一個無狀態協定,伺服器向用戶端傳送被請求的檔案,而不儲存任何關於該客戶的資訊,(需要儲存則應當使用cookie)。
3. HTTP/1.0使用非持續連線,HTTP/1.1使用持續連線。使用持續連線,在客戶和伺服器中不用多次分配TCP的緩衝區和保持TCP變數,同時避免了每一個傳輸物件的兩倍RTT交付時延。HTTP的預設模式是使用帶流水線的持續連線。
 
三、HTTP報文格式
 
1. 請求報文
 
舉例如下:
GET  /somedir/page.html  HTTP/1.1
Host:  www.someschool.edu
Connection: close
User-agent: Mozilla/5.0
Accept-language: fr
-------------------------------------------------------
First line: request line
Other lines: header line
 
請求行: 方法欄位 - URL欄位 - HTTP版本欄位
其中,方法欄位可取GET, POST, HEAD, PUT, DELETE等
預設為GET請求,在URL後附帶引數,有大小限制,不超過1K
表單提交中指明用POST時用POST,在實體中傳遞,無大小限制
HEAD方法常用於偵錯,只返回HTTP報文,不返回請求物件
Connection: close表示不使用持續連線
 
常見的請求頭:
Accept: text/html,image/*   客戶可接受的資料型別
Accept-Charset: ISO-8859-1  接受資料需要使用的字元集編碼
Accept-Encoding: gzip,compress  接受的資料壓縮格式
Accept-Language: en-us,zh-cn  接受的語言環境
Host: www.it315.org:80  虛擬主機名
If-Modified-Since: Tue, 11 Jul 2000 18:23:51 GMT  快取資源的最後獲取時間
Referer: http://www.it315.org/index.jsp  當前的請求來自哪個連結
User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)  用戶端的資訊
Cookie 
Connection: close/Keep-Alive  指定是否保持連線
Date: Tue, 11 Jul 2000 18:23:51 GMT  當前時間
 
2. 響應報文
 
舉例如下:
HTTP/1.1 200 ok
Connection: close
Date: Tue, 09 Aug 2011 15:44:04 GMT
Server: Apache/2.2.3 (CentOS)
Last-Modified: Tue, 09 Aug 2011 15:11:03 GMT
Content-Length: 6821
Content-Type: text/html
(Data, Data, Data ...)
-------------------------------------------------------
First line: status line
Last line: entity body
Other lines: header line
 
狀態行:協定版本 - 狀態碼 - 狀態資訊
狀態碼和狀態資訊常見的有:
200 OK
301 Moved Permanently
400 Bad Request
404 Not found
505 HTTP Version Not Supported
-------------------------------------------------------
100 ~ 199 表示成功接收,用戶端需要繼續提交才能完成整個過程,200 ~ 299 表示成功接收並已完成整個過程
300 ~ 399 為完成請求,客戶需要進一步細化請求,如302請求重定向,304, 307 通知使用快取
400 ~ 499 用戶端請求有錯誤
500 ~ 599 伺服器端出現錯誤
 
常見的響應頭:
Location: http://www.it315.org/index.jsp  配合302實現請求重定向
Server:apache tomcat  伺服器的基本資訊
Content-Encoding: gzip  伺服器傳送資料時使用的壓縮格式
Content-Length: 80  傳送資料的大小
Content-Language: zh-cn  傳送資料使用的語言環境
Content-Type: text/html; charset=GB2312  當前所傳送的資料的基本資訊
Last-Modified: Tue, 11 Jul 2000 18:23:51 GMT  快取相關
Refresh: 1;url=http://www.it315.org  定時重新整理到某個URL
Content-Disposition: attachment;filename=aaa.zip  與下載有關的頭
Transfer-Encoding: chunked  資料傳輸型別,資料一塊塊傳輸
Set-Cookie:SS=Q0=5Lb_nQ; path=/search  設定cookie
ETag: W/"83794-1208174400000"  和快取相關
Expires: -1 指定資源快取的時間,如果取值為0或-1瀏覽就不快取資源
Cache-Control: no-cache  如果為no-cache則通知瀏覽器不快取
Pragma: no-cache   如果為no-cache則通知瀏覽器不快取
由於歷史原因,以上三個都用來控制快取,同時使用
Connection: close/Keep-Alive  是否保持連線
Date: Tue, 11 Jul 2000 18:23:51 GMT 當前時間
 
 三、Telnet演示
telnet cis.poly.edu 80
 
 
本文永久更新連結地址http://www.linuxidc.com/Linux/2016-07/132838.htm

IT145.com E-mail:sddin#qq.com