Http的封包結構及内容
Http的封包分為兩種:請求封包,響應封包。
請求封包包含頭部和請求行,部分請求封包包含主體。
響應封包包含頭部和狀态行,部分響應封包包含主體。
頭部包含通用頭部,請求頭部,響應頭部,實體頭部。
請求封包隻能包含通用頭部,請求頭部和實體頭部。
響應封包隻能包含通用頭部,響應頭部和實體頭部。
請求行:請求類型,URL,HTTP版本。
狀态行:HTTP版本,狀态碼,狀态短語。
請求類型包括:
GET: 向伺服器請求文檔。
POST: 從用戶端向伺服器發送資訊。
PUT: 從伺服器向用戶端發送文檔。
HEAD: 請求關于文檔資訊,而不是文檔本身。
TRACE: 回顯輸入的請求。
CONNECT: 預留。
OPTION: 詢問有關可用的選項。
HTTP版本:目前常用版本為1.1。
http1.0版本與http1.1版本最大的差別就是在于持續連接配接與非持續連接配接。http在版本1.1之前定義了非持續連接配接,而在版本1.1中預設的是持續連接配接。
非持續連接配接:每一次請求/相應都要建立TCP連結。在這種政策中,對于N個不同檔案的不同圖檔,連結必須建立和關閉N次。因為伺服器需要N個不同的緩沖區,并且每次建立一個連接配接時,需要一個較慢的啟動過程,是以非持續連結在伺服器端增加了很大的開銷。
持續連接配接:在持續連接配接中,伺服器在發送響應後會保持連接配接處于開啟狀态,以等待更多的請求。如果用戶端請求關閉或者逾時時,伺服器則會關閉連接配接。
狀态碼、狀态短語:
代碼 | 短語 | 描述 |
---|---|---|
提供資訊 | ||
100 | Continue | 請求的初始部分已經收到,用戶端可以繼續他的請求 |
101 | Switching | 伺服器同一客戶的請求,切換到更新頭部所定義的協定 |
成功 | ||
200 | OK | 請求成功 |
201 | Created | 建立了一個新的URL |
202 | Accepted | 請求已經接受,但他不能立即響應 |
204 | No content | 主體中沒有内容 |
重定向 | ||
301 | Moved permanently | 伺服器已不再使用所請求的URL |
302 | Moved temporarily | 請求的URL已經暫時移開 |
304 | Not modified | 文檔還沒有被修改 |
用戶端錯誤 | ||
400 | Bad request | 在請求中有文法錯誤 |
401 | Unauthorized | 請求缺乏合适的授權 |
403 | Forbidden | 服務被拒絕 |
404 | Not found | 沒有找到文檔 |
405 | Method not allowed | URL不支援該方法 |
406 | Not accept able | 不接受這種格式的請求 |
伺服器錯誤 | ||
500 | Internaluserver error | 伺服器有錯誤,例如系統崩潰 |
501 | Not implemented | 請求的動作不能完成 |
503 | Service unavailable | 服務暫時不可用,但将來可以被再次請求 |