HTTP
HTTP全稱 HyperText Transfer Protocol 即超文本傳輸協(xié)議
是一種用于分布式、協(xié)作式和超媒體信息系統(tǒng)的應(yīng)用層協(xié)議。HTTP是萬維網(wǎng)的數(shù)據(jù)通信的基礎(chǔ)。
HTML 全稱:HyperText Markup Language 即超文本標(biāo)記語言
是一種用于創(chuàng)建網(wǎng)頁的標(biāo)準(zhǔn)標(biāo)記語言。
URI 全稱:Uniform Resource Identifier 即統(tǒng)一資源標(biāo)識(shí)符
URI分為URL和URN 我們一般使用URL作為網(wǎng)址
URN全稱:Uniform Resource Name 即統(tǒng)一資源名稱
通過URN可以確定一個(gè)【唯一的】資源
URL 全稱:Uniform Resource Locator 即統(tǒng)一資源定位符
通過URL可以確定一個(gè)【唯一的】地址(網(wǎng)址)
https://www.baidu.com/s?wd=hello&rsv_spt=1#5 就是一個(gè) URL,通過 URL 你可以確定一個(gè)「唯一的」地址(網(wǎng)址)。
[圖片上傳失敗...(image-7e3b8e-1525178150562)]
域名
以www.baidu.com為例
-
.com或.cn或.tt為一級(jí)域名(頂級(jí)域名)。 -
baidu.com為二級(jí)域名。 -
www.baidu.com為三級(jí)域名。 -
www.baidu.com和baidu.com共有一個(gè)二級(jí)域名。
DNS
DNS 全稱 Domain Name System 即網(wǎng)域名稱系統(tǒng)。
它作為將域名和IP地址相互映射的一個(gè)分布式數(shù)據(jù)庫,能夠使人更方便地訪問互聯(lián)網(wǎng)。DNS使用TCP和UDP端口53
DNS會(huì)根據(jù)一個(gè)域名返回一個(gè)IP
在本地設(shè)置hosts可以繞過DNS。使用命令sudo vi /etc/hosts設(shè)置。
[圖片上傳失敗...(image-876ce1-1525178150562)]
- 每一個(gè)電腦都有很多端口,每一個(gè)端口只做一件事情。從0到2048都是指定做某事情。80端口是用來服務(wù)HTTP協(xié)議的。
- 瀏覽器負(fù)責(zé)發(fā)起請求
- 服務(wù)器在80端口接受請求
- 服務(wù)器負(fù)責(zé)返回內(nèi)容
- 瀏覽器負(fù)責(zé)下載相應(yīng)內(nèi)容
- HTTP的作用是指導(dǎo)瀏覽器和服務(wù)器如何進(jìn)行溝通
HTTP請求
一個(gè)HTTP請求報(bào)文由請求行、請求頭部、空行和請求數(shù)據(jù)4個(gè)部分組成
請求的格式
1 動(dòng)詞 路徑 協(xié)議/版本
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 要上傳的數(shù)據(jù)
- 請求最多包含四部分,最少包含三部分。(也就是說第四部分可以為空)
- 第三部分永遠(yuǎn)都是一個(gè)回車(\n)
- 動(dòng)詞有 GET POST PUT PATCH DELETE HEAD OPTIONS 等
- 這里的路徑包括「查詢參數(shù)」,但不包括「錨點(diǎn)」
- 如果你沒有寫路徑,那么路徑默認(rèn)為 /
- 第 2 部分中的 Content-Type 標(biāo)注了第 4 部分的格式
用Chrome發(fā)請求
- 在谷歌瀏覽器空白處單擊右鍵,點(diǎn)擊檢查,打開
Network - 地址欄輸入網(wǎng)址
- 選中第一個(gè)請求
- 查看
Request Headers,點(diǎn)擊view source將會(huì)看到請求的前兩部分 - 查看
FormData或Payload將會(huì)看到請求的第四部分(如果有的話)
HTTP響應(yīng)
HTTP響應(yīng)也由四個(gè)部分組成,分別是:狀態(tài)行、消息報(bào)頭、空行、響應(yīng)正文。
響應(yīng)的格式
1 協(xié)議/版本號(hào) 狀態(tài)碼 狀態(tài)解釋
2 Key1: value1
2 Key2: value2
2 Content-Length: 17931
2 Content-Type: text/html
3
4 要下載的內(nèi)容
響應(yīng)示例
狀態(tài)碼是服務(wù)器對瀏覽器說的話
- 1xx:指示信息--表示請求已接收,繼續(xù)處理。
- 2xx:成功--表示請求已被成功接收、理解、接受。
- 3xx:重定向--要完成請求必須進(jìn)行更進(jìn)一步的操作。
- 4xx:客戶端錯(cuò)誤--請求有語法錯(cuò)誤或請求無法實(shí)現(xiàn)。
- 5xx:服務(wù)器端錯(cuò)誤--服務(wù)器未能實(shí)現(xiàn)合法的請求。
用Chrome查看響應(yīng)
- 打開
Network - 輸入網(wǎng)址
- 選中第一個(gè)響應(yīng)
- 查看
Response Headers,點(diǎn)擊view source將會(huì)看到響應(yīng)的前兩部分 - 查看
Response或者Preview將會(huì)看到響應(yīng)的第四部分。
CURL
在Linux中curl是一個(gè)利用URL規(guī)則在命令行下工作的文件傳輸工具,可以說是一款很強(qiáng)大的http命令行工具。它支持文件的上傳和下載,是綜合傳輸工具,但按傳統(tǒng),習(xí)慣稱url為下載工具。更多用法可以參考這篇網(wǎng)站