計算機網絡--HTTP協議

  • TCP/IP協議

    互聯網構建的初衷是信息的共享。在信息的傳遞過程當中,計算機不可避免的須要產生交流。就像咱們與別人交談須要懂得對方的語言才能明白對方表達的意思同樣,計算機的交流也須要一個約束了,稱之爲協議。例如:文件傳輸使用TCP協議,域名系統使用DNS協議。有了這些協議的存在,各類數據流按照約束傳送,這就構成了計算機的通訊。TCP/IP協議,即是這衆多協議中的一個集合。html

    TCP/IP協議的體系結構

    TCP/IP協議的體系結構只有四層。web

  • 網絡接口層:用來處理鏈接網絡的物理設備(網卡等)
  • 網際層:處理在網絡上流動的數據包。
  • 運輸層:負責向兩個主機進程之間的通訊提供通用的數據傳輸服務 (TCP協議、UDP協議)
  • 應用層:經過應用進程簡的交互來完成特定的網絡應用。(HTTP協議、DNS協議)

HTTP(超文本傳輸協議)協議分析

HTTP協議介紹

超文本傳輸協議(HTTP,HyperText Transfer Protocol)是互聯網上應用最爲普遍的一種網絡協議。全部的WWW文件都必須遵照這個標準。它可使瀏覽器更加高效,使網絡傳輸減小。它不只保證計算機正確快速地傳輸超文本文檔,還肯定傳輸文檔中的哪一部分,以及哪部份內容首先顯示(如文本先於圖形)等。瀏覽器

域名解析成IP地址

  1. 輸入域名

    這裏咱們使用交大的官網做爲實驗例子~
  2. 找到IP

    fiddler界面,一條條的請求很直觀的顯示在咱們面前。
    當咱們輸入域名並按下回車鍵的時候,瀏覽器會經過DNS服務器查詢到此域名所對應的IP。

    咱們經過ping命令查看一下IP的正確性。

    在控制檯咱們能夠看到IP地址與Fiddler顯示的是同樣的。

    發送請求Request

    客戶端發送一個HTTP請求到服務器的請求消息包括如下格式:服務器

    • 請求行(request line)
    • 請求頭部(header)
    • 空行
    • 請求數據

具體格式:

咱們能夠經過Fiddler的Raw查看一個請求的具體信息網絡

GET http://www.ecjtu.jx.cn/ HTTP/1.1 Host: www.ecjtu.jx.cn Connection: keep-alive Pragma: no-cache Cache-Control: no-cache Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.98 Safari/537.36 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 Accept-Encoding: gzip, deflate, sdch Accept-Language: zh-CN,zh;q=0.8 Cookie: UM_distinctid=15abb4abc1777b-01b1e80c9d3c39-67f1a39-1fa400-15abb4abc189b7
  1. 請求行,用來講明請求類型,要訪問的資源以及所使用的HTTP版本.
    GET http://www.ecjtu.jx.cn/ HTTP/1.1說明請求類型爲GET,訪問的資源爲http://www.ecjtu.jx.cn/,使用的HTTP版本爲GTTP1.1
  2. 請求頭部,緊接着請求行(即第一行)以後的部分,用來講明服務器要使用的附加信息
    • HOST將指出請求的目的地.
    • User-Agent,服務器端和客戶端腳本都能訪問它,它是瀏覽器類型檢測邏輯的重要基礎.該信息由你的瀏覽器來定義,而且在每一個請求中自動發送
    • Cookie,瀏覽器攜帶的Cookie信息。
    • 其餘參考:HTTP協議的頭信息詳解
  3. 空行,請求頭部後面的空行是必須的
  4. 請求數據,請求數據也叫主體,能夠添加任意的其餘數據。
    好比一些登陸信息。

響應請求Response

通常狀況下,服務器接收並處理客戶端發過來的請求後會返回一個HTTP的響應信息。一個響應也由四個部分組成。app

  • 狀態行
  • 消息頭部
  • 空行
  • 響應正文
    咱們能夠經過Fiddler的Raw查看一個響應的具體信息
HTTP/1.1 200 OK Date: Tue, 28 Mar 2017 13:30:59 GMT Server: Apache/2.2.31 (Unix) DAV/2 mod_jk/1.2.23 Accept-Ranges: bytes Keep-Alive: timeout=5, max=100 Connection: Keep-Alive Transfer-Encoding: chunked Content-Type: text/html 15b0 <!DOCTYPE html> <html> <head>
  1. 狀態行,由HTTP協議版本號, 狀態碼, 狀態消息 三部分組成。
    HTTP/1.1 200 OK,表示使用HTTP1.1協議,響應狀態嗎爲200,表示響應成功
  2. 消息頭部,用來講明客戶端要使用的一些附加信息
    • Date 時間
    • Server 服務器類型
    • Keep-Alive 是否保持鏈接
    • Content-Type 制動MIME類型的HTML
  3. 空行
  4. 響應正文,服務器返回給客戶端的文本信息。
    就是HTML信息。

HTTP狀態碼

狀態代碼有三位數字組成,第一個數字定義了響應的類別,共分五種類別:工具

  • 1xx:指示信息--表示請求已接收,繼續處理性能

  • 2xx:成功--表示請求已被成功接收、理解、接受測試

  • 3xx:重定向--要完成請求必須進行更進一步的操做spa

  • 4xx:客戶端錯誤--請求有語法錯誤或請求沒法實現

  • 5xx:服務器端錯誤--服務器未能實現合法的請求

常見狀態碼:

200 OK //客戶端請求成功 400 Bad Request //客戶端請求有語法錯誤,不能被服務器所理解 401 Unauthorized //請求未經受權,這個狀態代碼必須和WWW-Authenticate報頭域一塊兒使用  403 Forbidden //服務器收到請求,可是拒絕提供服務 404 Not Found //請求資源不存在,eg:輸入了錯誤的URL 500 Internal Server Error //服務器發生不可預期的錯誤 503 Server Unavailable //服務器當前不能處理客戶端的請求,一段時間後可能恢復正常

HTTP請求方法

根據HTTP標準,HTTP請求可使用多種請求方法。
HTTP1.0定義了三種請求方法: GET, POST 和 HEAD方法。
HTTP1.1新增了五種請求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法。

  • GET 請求指定的頁面信息,並返回實體主體。
  • HEAD 相似於get請求,只不過返回的響應中沒有具體的內容,用於獲取報頭
  • POST 向指定資源提交數據進行處理請求(例如提交表單或者上傳文件)。數據被包含在請求體中。POST請求可能會致使新的資源的創建和/或已有資源的修改。
  • PUT 從客戶端向服務器傳送的數據取代指定的文檔的內容。
  • DELETE 請求服務器刪除指定的頁面。
  • CONNECT HTTP/1.1協議中預留給可以將鏈接改成管道方式的代理服務器。
  • OPTIONS 容許客戶端查看服務器的性能。
  • TRACE 回顯服務器收到的請求,主要用於測試或診斷。

總結

相關連接:

做者: 我內心 連接:https://www.imooc.com/article/17272來源:慕課網

相關文章
相關標籤/搜索