http概念及請求信息和響應信息詳解

什麼是協議?javascript

​ 計算機中的協議和現實中的協議是同樣的,一式雙份、多份php

​ 雙方/多方都聽從共同的一個規範,這個規範就能夠稱爲協議html

​ 計算機之因此能全世界互通,協議功不可沒。若是沒有協議,計算機各說各話,誰都聽不懂誰。java

什麼是http協議?瀏覽器

​ http協議即按必定規則,向服務器請求數據,或發送數據,而服務器按必定規則,響應數據。bash

​ http是一種無狀態協議。無狀態是指客戶端和服務器端之間不須要創建持久的鏈接,客戶端發起一個請求,服務器端返回響應,這個鏈接就會被關閉,在服務器端不會保留該請求的有關信息。服務器

問:瀏覽器能發送HTTP協議,http協議必定要瀏覽器來發送嗎?app

答:不是,HTTP既然是一種協議,那麼只要知足這種協議,什麼工具均可以發。工具

http的工做流程測試

  1. 地址解析:HTTP協議是經過標準URL來請求指定的服務器中的指定服務的。

    標準URL :baidu.com:80/index.html?......

(1)http:協議類型。
(2)baidu.com : 主機名。經過主機名咱們能夠準肯定位到要訪問的服務器
(3) 80 : 端口號。經過端口號咱們能夠準確找到用戶須要訪問的那個服務器和應用
(4)index.html : 請求的文件名。經過文件名來訪問指定的文件
(5)?name=tom&age=18 : 請求參數。攜帶的參數不一樣來響應不一樣的用戶或者同一個用戶的不一樣請求的
複製代碼
  1. 封裝HTTP請求

    將URL以及本級的一些信息封裝成一個HTTP請求數據包

  2. 創建TCP鏈接:也就是咱們常說的「三次握手」

    」三次握手「:首先由客戶端發送創建鏈接的請求,客戶端發送一個syn包,等待服務器端的響應;服務器端收到SYN包以後,返回給客戶端一個表示確認的SYN包;最後客戶端收到確認SYN包以後向服務器端發送ACK包,發送完以後開始創建鏈接。

  1. 發送HTTP請求

    客戶端發送HTTP請求到服務器端,與請求相關的信息都會包含在請求頭和請求體中發送給服務器。

  2. 服務器處理請求並返回須要的數據

    服務器在收到請求以後,根據客戶端的請求發送給客戶端相應的信息。相關的響應信息都會放在響應頭和響應體中。

  3. 鏈接結束:關閉鏈接

    服務器端在發送完響應以後,就會關閉鏈接。若是客戶端的請求的頭信息中有Connection-alive,那麼服務器端在響應完這個請求以後不會關閉鏈接,直到該客戶端的全部請求都響應完畢,纔會關閉鏈接,這樣大大節省了帶寬和I/O資源。

​ http請求信息和響應信息

1.請求:

HTTP中的請求頭由三部分組成:請求行、請求頭和請求正文

(1)請求行

​ ①請求方法

​ GET POST PUT DELETE TRACE OPTIONS

//注意:這些請求方法雖然HTTP協議裏規定的,但WEB SERVER未必欲奴或支持這些方法

//HEAD和GET基本一致,只是HEAD不返回內容
//好比咱們只是肯定一個內容(好比照片)還正常存在,不須要返回照片的內容,這時用HEAD比較合適

//TRACE:是你用了代理上網,好比用代理訪問new.163.com,你想看看代理有沒有修改你的HTTP請求,能夠用TRACE來測試一下,163.com的服務器就會把最後收到的請求返回給你
複製代碼

​ ②請求路徑URL

​ 就是url的一部分

​ ③協議及版本

目前通常是HTTP/1.1,0.9,1.0 已經基本不用
複製代碼

(2)請求頭信息(key:value)

常見的請求頭域:

(1)Connetion:表示是否須要持久鏈接。若是服務器看到它的值爲keep-alive,或者請求協議使用的是HTTP/1.1(默認使用持久鏈接),同一個頁面若是包含多個資源,則只會使用一個鏈接,如Connection:keep-alive。若是設置了Connetion:close,則每個請求結束都會關閉鏈接,新的請求又會從新創建鏈接。一個網頁至少有幾十個資源請求,這樣很浪費帶寬和時間。

(2)Host:這個是必需的,表示請求的服務器地址是什麼,是從URL中提取出來的。好比www.baidu.com/的Host就是www.baidu.com。這裏是80端口,默認省略;若是是其餘端口,好比www.baidu.com:8080,則Host是www.baidu.com:8080

(3)Accept:瀏覽器能夠接受的媒體類型(MIME類型),如Accept:text/html表明瀏覽器能夠接受HTML文檔。「」表明接受任何類型,如Accept:/*。

(4)Accept-Encoding:瀏覽器申明本身接受的編碼方法,一般指定壓縮方法、是否支持壓縮、支持什麼格式的壓縮。

注:頭信息結束後和主體信息之間要空一行

(3)請求主體信息 (能夠沒有)

​ 也叫請求數據,在使用POST請求提交表單數據的時候,這些表單數據就會被放在HTTP請求的請求正文中,以加密的形式向服務器傳輸。

例:
POST/0606/02.php HTTP/1.1
HOST:localhost
Content-type:
application/x-www-form-urlencode
Content-length:5

Age = 3
複製代碼

2.響應:

(1)響應行

​ ①協議

​ ②狀態碼

​ ③狀態文字

(2)響應頭信息(key:value)

​ 注:頭信息結束後和主體信息之間要空一行

(3)響應主體信息

​ (接收的內容,能夠沒有)

例:
HTTP/1.1 200 OK
Content-type:text/html
Content-length:5

hello
複製代碼

​ http響應中的狀態碼

狀態碼 定義 說明
1XX 信息 接收到請求,繼續處理
2XX 成功 操做成功收到,理解和接收
3XX 重定向 爲了完成請求,必須採起進一步措施
4XX 客戶端錯誤 請求的語法有錯誤或不能徹底被知足
5XX 服務器錯誤 服務器沒法完成明顯有效的請求

常見:200 - 服務器成功返回網頁

​ 301/2 - 永久/臨時重定向

​ 304 Not Modified - 未修改

​ 500 - 服務器內部錯誤

失敗的狀態碼:

​ 404 - 請求的網頁不存在

​ 503 - 服務器暫時不可用

​ 500 - 服務器內部錯誤

相關文章
相關標籤/搜索