HTTP網路協議(二)
HTTP報文內的HTTP資訊
HTTP協議互動的資訊被稱為HTTP報文,請求端的HTTP報文叫做請求報文,響應端的叫做響應報文。
HTTP為了提升傳輸速率,其在傳輸資料時,按照資料原樣進行壓縮傳輸,相應地客戶端會接受並解析內容編碼後的實體。
在HTTP通訊過程中,可以讓大容量的資料進行分塊分割傳輸,這方式能夠讓瀏覽器逐步顯示頁面。
HTTP採納了多部分物件集合,故傳送的一份報文主體內可含有多型別實體,不過需要在首部欄位里加Content-type,並使用boundary字串來劃分多部分物件集合指明的各類實體,boundary字串指定的各個實體的起始之前插入”–”標記,而在多部分物件集合對應的字串的最後插入”–”標記作為結束,示例:
HTTP可以在請求首部那裡指定範圍來獲取指定的內容。
- Range:byte=5001-10000,獲取從5001到10000這段位元組。
- Range:byte=5001,獲取從5001之後全部的位元組。
- Range:byte=-3000,5000-7000,獲取從0到3000這段位元組,獲取從5000到7000這段位元組
返回結果的HTTP狀態碼
以下會列出常見的幾個HTTP狀態碼:
- 200表示正常處理請求,併成功返回正常的資料。
- 204表示正常處理請求,但沒有資源可返回。
- 206表示正常處理請求,並返回請求那部分的資源資料。
- 301永久性的給請求資源分配了新的URI,故以後使用該資源需要現在所指的新URI。
- 302臨時性的給請求資源分配了新的URI,這只是通知這次請求使用該新URI。
- 303明確通知請求採用GET方法且用該資源另一個URI傳送。
- 304表示客戶端傳送附帶條件的請求時(附帶條件指的是If-Match,If-Modified-Since等),伺服器允許請求訪問資源,但未滿足條件的請況。
- 307與302類似,是臨時重定向。
- 400表示請求報文中存在語法錯誤。
- 401表示傳送的請求需要有通過HTTP認證的認證資訊,如果之前已進行過一次請求,則表示使用者認證失敗。
- 403表示請求資源的訪問被伺服器拒絕了(一般都是許可權問題)。
- 404表示伺服器上無法找到請求的資源。
- 500表示伺服器端在執行請求時發生了錯誤。
- 503表示伺服器暫時處於超負荷或正在進行停機維護,現在無法處理請求。
與HTTP協作的Web伺服器
HTTP允許一臺HTTP伺服器搭建多個Web站點,例如在相同的IP地址下,可以用虛擬主機寄存多個不同主機名和域名的Web網站,這樣一臺伺服器可以託管www.tricorder.jp和www.hackrj.jp兩個域名。
代理:代理是一種具有轉發功能的應用程式,它能接受客戶端的請求後轉發給伺服器,同樣能接受伺服器返回的響應轉發給客戶端,代理可以分為下面兩類:
- 快取代理:代理轉發響應時,會預先將資源的副本儲存在代理伺服器上。
- 透明代理:轉發請求或響應時,不對報文做任何加工。
閘道器:是轉發其他伺服器通訊資料的伺服器,接受從客戶端傳送來的請求時,它就像自己擁有資源的源伺服器一樣對請求進行處理,閘道器能是通訊線路上的伺服器提供非HTTP協議服務。
隧道:是在相隔甚遠的客戶端和伺服器兩者之間進行中轉,並保持雙方通訊連線的應用程式,這過程可以使用SSL等手段進行加密。
快取一般有兩種方式:客戶端快取和代理伺服器快取,客戶端一般快取在本地磁碟中,代理伺服器一般快取在本地伺服器儲存空間中,不過這兩種快取會根據有效期限,請求要求,伺服器該資源更新等情況來判斷快取是否失效,一旦快取失效,再次請求則會重新拉取源伺服器的該資源並對其快取。
轉自http://blog.csdn.net/xuguoli_beyondboy/article/details/48038921