計算機網絡相關:應用層協議(二):HTTP
阿新 • • 發佈:2018-03-21
toc connect html文本 con 也不會 http服務 lang 代碼 保存 前言
復習下計算機網絡的知識並記錄
正文
定義:HTTP協議(HyperText Transfer Protocol,超文本傳輸協議)是用於從WWW服務器傳輸超文本到本地瀏覽器的傳送協議。
一.HTTP請求過程(非持續連接)
訪問URL的過程:(以http://www.someSchool.edu/department/home.index為例)
1.HTTP客戶進程在端口號80發起一個到服務器的TCP鏈接(三次握手),在客戶和服務器上分別有套接字與該連接相關聯。
2.HTTP經它的套接字向該服務器發送一個HTTP請求報文,請求報文包含了路徑名/department/home.index。
3.HTTP服務器進程經它的套接字接受該請求報文,從其存儲器中檢索出對象www.someSchool.edu/department/home.index,在一個HTTP響應報文中封裝對象,並通過套接字向服務器發送響應報文。
4.服務器進程通知TCP斷開該TCP連接(但直到TCP確認客戶已經完整地收到響應報文為止,它才會實際中斷連接,即四次分手過程)
5.HTTP客戶端接收響應報文,TCP連接關閉。如果有其他文件的引用,重復前4個步驟。
二、HTTP報文格式
1.HTTP請求報文
:上述的響應報文的實體為HTML文本
返回碼:
GET /somedir/page.html HTTP/1.1 Host: www.someschool.edu Connection:close User-agent:Mozilla/5.0 Accept-Language:fr1)第一行是請求行,包含了請求的方法、URL字段、HTTP版本字段 2)之後的叫首部行。Host為主機域名,Connection為連接方式(close短連接/Keep-Alive長連接),User-Agent為用戶代理,即向服務器發送請求的瀏覽器的類型,accpet——language即語言。 3)如果是Post,首部行之後接一個空行,然後是正文內容(表單之類的)。 4)Get通常用來向服務器請求一個對象,HEAD類似於GET,只不過服務器收到HEAD請求時只用一個HTTP報文響應,不會返回對象,常用來跟蹤調試。PUT與Web發行工具聯合使用,允許用戶上傳對象到指定的Web服務器上的指定路徑。Delete允許用戶刪除Web服務器上的對象。 2.HTTP響應報文
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)它分為三部分:初始狀態行、6個首部行、實體行。 初始狀態行:包含協議版本、狀態碼和對應的狀態信息。。 首部行:Connection連接方式,Date表示服務器產生並發送該響應報文的日期時間,Server服務器類型,Last-Modified表示該對象創建或者最後修改的日期時間,一般用於緩存更新的時間比較;Content-Length指示被發送對象的字節數;Content-type表示對象類型格式。 實體內容
- 200 OK:請求成功。
- 301 Move Permanently: 請求的對象已經被永久轉移,新的URL定義在響應報文的Location首部行中。
- 400 Bad Request:通用差錯代碼,指示該請求服務器無法理解。
- 404 Not Found:請求的資源不存在。
- 5xx :服務器的問題。
- 在HTTP響應報文中的一個cookie首部行:Set-cookie(第一次建立連接時如果無cookie或者cookie過期,服務器會返回一個新的給客戶端)。
- 在HTTP請求報文中的一個cookie首部行:cookie。
- 在用戶端系統中保留的一個cookie,並由用戶瀏覽器管理。
- 位於Web站點的後端數據庫的cookie
計算機網絡相關:應用層協議(二):HTTP