HTTP
HTTP全稱 HyperText Transfer Protocol 即超文字傳輸協議 是一種用於分散式、協作式和超媒體資訊系統的應用層協議。HTTP是全球資訊網的資料通訊的基礎。
HTML 全稱:HyperText Markup Language 即超文字標記語言 是一種用於建立網頁的標準標記語言。
URI 全稱:Uniform Resource Identifier即統一資源識別符號
URI分為URL和URN 我們一般使用URL作為網址
URN全稱:Uniform Resource Name 即統一資源名稱 通過URN可以確定一個【唯一的】資源
URL 全稱:Uniform Resource Locator 即統一資源定位符 通過URL可以確定一個【唯一的】地址(網址)
例如:https://www.baidu.com/s?wd=hello&rsv_spt=1#5
就是一個 URL
域名
以www.baidu.com
為例
.com
或.cn
或.tt
為一級域名(頂級域名)。baidu.com
為二級域名。www.baidu.com
為三級域名。www.baidu.com
和baidu.com
共有一個二級域名。
DNS
DNS 全稱 Domain Name System 即網域名稱系統。
它作為將域名和IP地址相互對映的一個分散式資料庫,能夠使人更方便地訪問網際網路。DNS使用TCP和UDP埠53
DNS會根據一個域名返回一個IP
在本地設定hosts可以繞過DNS。使用命令sudo vi /etc/hosts
設定。
- 每一個電腦都有很多埠,每一個埠只做一件事情。從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 要上傳的資料
複製程式碼
- 請求最多包含四部分,最少包含三部分。(也就是說第四部分可以為空)
- 第三部分永遠都是一個回車(\n)
- 動詞有 GET POST PUT PATCH DELETE HEAD OPTIONS 等
- 這裡的路徑包括「查詢引數」,但不包括「錨點」
- 如果你沒有寫路徑,那麼路徑預設為 /
- 第 2 部分中的 Content-Type 標註了第 4 部分的格式
用Chrome檢視請求
- 在谷歌瀏覽器空白處單擊右鍵,點選檢查,開啟
Network
- 位址列輸入網址
- 選中第一個請求
- 檢視
Request Headers
,點選view source
將會看到請求的前兩部分 - 檢視
FormData
或Payload
將會看到請求的第四部分(如果有的話)
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檢視響應
- 開啟
Network
- 輸入網址
- 選中第一個響應
- 檢視
Response Headers
,點選view source
將會看到響應的前兩部分 - 檢視
Response
或者Preview
將會看到響應的第四部分。
CURL
在Linux中curl是一個利用URL規則在命令列下工作的檔案傳輸工具,可以說是一款很強大的http命令列工具。它支援檔案的上傳和下載,是綜合傳輸工具,但按傳統,習慣稱url為下載工具。更多用法可以參考這篇網站