淺談 HTTP 協議

1、 HTTP簡介

  1. 超文本傳輸協議 Hyper Text Transfer Protocol
  2. 是一種用於分佈式、協做式和超媒體信息系統的應用層協議
  3. HTTP是萬維網的數據通訊的基礎
  4. HTTP有不少應用,但最著名的是用於web瀏覽器和web服務器之間的雙工通訊

2、 HTTP 請求/響應的步驟

  1. 客戶端鏈接到Web服務器
    • 一個HTTP客戶端,一般是瀏覽器,與Web服務器的HTTP端口(默認爲80)創建一個TCP套接字鏈接
  2. 發送HTTP請求
    • 經過TCP套接字,客戶端向Web服務器發送一個文本的請求報文,一個請求報文由請求行、請求頭部、空行和請求數據4部分組成
  3. 服務器接受請求並返回HTTP響應
    • Web服務器解析請求,定位請求資源,服務器將資源複本寫到TCP套接字,由客戶端讀取,一個響應由狀態行、響應頭部、空行和響應數據4部分組成
  4. 釋放鏈接TCP鏈接
    • 若connection 模式爲close,則服務器主動關閉TCP鏈接,客戶端被動關閉鏈接,釋放TCP鏈接;若connection 模式爲keepalive,則該鏈接會保持一段時間,在該時間內能夠繼續接收請求
  5. 客戶端瀏覽器解析HTML內容
    • 客戶端瀏覽器首先解析狀態行,查看代表請求是否成功的狀態代碼,而後解析每個響應頭,響應頭告知如下爲若干字節的HTML文檔和文檔的字符集,客戶端瀏覽器讀取響應數據HTML,根據HTML的語法對其進行格式化,並在瀏覽器窗口中顯示
  6. 面試題:在瀏覽器地址欄鍵入URL,按下回車以後會經歷的流程:
    • 瀏覽器向DNS服務器請求解析該URL中的域名所對應的IP地址
    • 解析出IP地址後,根據該IP地址和默認端口80,和服務器創建TCP鏈接
    • 瀏覽器發出讀取文件(URL 中域名後面部分對應的文件)的HTTP請求,該請求報文做爲TCP三次握手的第三個報文的數據發送給服務器
    • 服務器對瀏覽器請求做出響應,並把對應的html文本發送給瀏覽器
    • 釋放TCP鏈接
    • 瀏覽器將該html文本並顯示內容

3、 HTTP請求方法

  1. GET:獲取一個頁面、圖片(資源)
  2. POST:提交數據
  3. HEAD
  4. PUT
  5. DELETE
  6. TRACE
  7. OPTIONS
  8. CONNECT

4、 HTTP狀態碼

  1. 狀態代碼的第一個數字表明當前響應的類型:
    • 1xx消息——請求已被服務器接收,繼續處理
    • 2xx成功——請求已成功被服務器接收、理解、並接受
    • 3xx重定向——須要後續操做才能完成這一請求
    • 4xx請求錯誤——請求含有詞法錯誤或者沒法被執行
    • 5xx服務器錯誤——服務器在處理某個正確請求時發生錯誤
  2. 常見的:"200 OK","404 Not Found"

5、 URL:統一資源定位符

  1. URL包含的信息:
    • 傳送協議
    • 層級URL標記符號(爲 // ,固定不變)
    • 訪問資源須要的憑證信息(可省略)
    • 服務器(一般爲域名,有時爲IP地址)
    • 端口號(以數字方式表示,可省略,HTTP的默認值爲80,HTTPS的默認值爲443)
    • 路徑(以 / 字符區別路徑中的每個目錄名稱)
    • 查詢(GET模式的窗體參數,以 ? 字符爲起點,每一個參數以 & 隔開,再以 = 分開參數名稱與數據,一般以UTF8的URL編碼,避開字符衝突的問題)
    • 片斷(以「#」字符爲起點)
  2. 示例:http://www.luffycity.com:80/news/index.html?id=250&page=1
    • http,是傳送協議
    • www.luffycity.com,是服務器
    • 80,是服務器上的網絡端口號
    • /news/index.html,是路徑
    • ?id=250&page=1,是查詢

6、 HTTP請求格式

  1. 請求(request)html

    • 瀏覽器:服務器
    • GET 請求沒有請求數據
  2. 格式:web

    請求方式 url路徑 協議版本\r\n
    k1:v1\r\n
    k2:v2\r\n
    \r\n
    數據

7、 HTTP響應格式

  1. 響應(response)面試

    • 服務器:瀏覽器
  2. 格式:瀏覽器

    協議版本 狀態碼 狀態碼描述\r\n
    k1:v1\r\n
    k2:v2\r\n
    \r\n
    響應數據(響應體)
相關文章
相關標籤/搜索