初識HTTP

劍指天涯心有夢發表於2018-05-23

HTTP

HTTP全稱 HyperText Transfer Protocol 即超文字傳輸協議 是一種用於分散式、協作式和超媒體資訊系統的應用層協議。HTTP是全球資訊網的資料通訊的基礎。

HTML 全稱:HyperText Markup Language超文字標記語言 是一種用於建立網頁的標準標記語言。

URI 全稱:Uniform Resource Identifier統一資源識別符號

URI分為URLURN 我們一般使用URL作為網址

URN全稱:Uniform Resource Name統一資源名稱 通過URN可以確定一個【唯一的】資源

URL 全稱:Uniform Resource Locator統一資源定位符 通過URL可以確定一個【唯一的】地址(網址)

例如:https://www.baidu.com/s?wd=hello&rsv_spt=1#5 就是一個 URL

初識HTTP

域名

www.baidu.com為例

  • .com.cn.tt 為一級域名(頂級域名)。
  • baidu.com為二級域名。
  • www.baidu.com為三級域名。
  • www.baidu.combaidu.com共有一個二級域名。

DNS

DNS 全稱 Domain Name System網域名稱系統。 它作為將域名和IP地址相互對映的一個分散式資料庫,能夠使人更方便地訪問網際網路。DNS使用TCPUDP埠53 DNS會根據一個域名返回一個IP 在本地設定hosts可以繞過DNS。使用命令sudo vi /etc/hosts設定。

初識HTTP

  • 每一個電腦都有很多埠,每一個埠只做一件事情。從0到2048都是指定做某事情。80埠是用來服務HTTP協議的。
  • 瀏覽器負責發起請求
  • 伺服器在80埠接受請求
  • 伺服器負責返回內容
  • 瀏覽器負責下載相應內容
  • HTTP的作用是指導瀏覽器和伺服器如何進行溝通

HTTP請求

一個HTTP請求報文由請求行、請求頭部、空行和請求資料4個部分組成 請求的格式

1 動詞 路徑 協議/版本
2 Key1: value1
2 Key2: value2
2 Key3: value3
2 Content-Type: application/x-www-form-urlencoded
2 Host: www.baidu.com
2 User-Agent: curl/7.54.0
3 
4 要上傳的資料
複製程式碼
  1. 請求最多包含四部分,最少包含三部分。(也就是說第四部分可以為空)
  2. 第三部分永遠都是一個回車(\n)
  3. 動詞有 GET POST PUT PATCH DELETE HEAD OPTIONS 等
  4. 這裡的路徑包括「查詢引數」,但不包括「錨點」
  5. 如果你沒有寫路徑,那麼路徑預設為 /
  6. 第 2 部分中的 Content-Type 標註了第 4 部分的格式

用Chrome檢視請求

  1. 在谷歌瀏覽器空白處單擊右鍵,點選檢查,開啟Network
  2. 位址列輸入網址
  3. 選中第一個請求
  4. 檢視Request Headers,點選view source將會看到請求的前兩部分
  5. 檢視FormDataPayload將會看到請求的第四部分(如果有的話)

HTTP響應

HTTP響應也由四個部分組成,分別是:狀態行、訊息報頭、空行、響應正文。 響應的格式

1 協議/版本號 狀態碼 狀態解釋
2 Key1: value1
2 Key2: value2
2 Content-Length: 17931
2 Content-Type: text/html
3
4 要下載的內容
複製程式碼

響應示例 狀態碼是伺服器對瀏覽器說的話

  • 1xx:指示資訊--表示請求已接收,繼續處理。
  • 2xx:成功--表示請求已被成功接收、理解、接受。
  • 3xx:重定向--要完成請求必須進行更進一步的操作。
  • 4xx:客戶端錯誤--請求有語法錯誤或請求無法實現。
  • 5xx:伺服器端錯誤--伺服器未能實現合法的請求。

用Chrome檢視響應

  1. 開啟Network
  2. 輸入網址
  3. 選中第一個響應
  4. 檢視Response Headers,點選view source將會看到響應的前兩部分
  5. 檢視Response或者Preview將會看到響應的第四部分。

CURL

在Linux中curl是一個利用URL規則在命令列下工作的檔案傳輸工具,可以說是一款很強大的http命令列工具。它支援檔案的上傳和下載,是綜合傳輸工具,但按傳統,習慣稱url為下載工具。更多用法可以參考這篇網站