寫于2017.07.27
一妄痪、與http有關(guān)的一些概念
- http:hypertext transfer protocol 超文本傳輸協(xié)議
- 服務(wù)器:
1哈雏、可以是電腦
2、也可以是程序(你訪問IP,我給你提供頁面裳瘪。運(yùn)行JS文件土浸,就是個(gè)程序) - DNS:網(wǎng)域名稱系統(tǒng),是一個(gè)分布式數(shù)據(jù)庫(DNS 服務(wù)器IP是由運(yùn)營商告訴你你的IP是多少彭羹,然后你的路由器會顯示)
- IP與網(wǎng)址:由DNS決定二者的映射關(guān)系黄伊,如下圖:
網(wǎng)址 | IP |
---|---|
baidu.com | 111.11.11 |
googe.com | 222.22.22 |
(一個(gè)域名可以對應(yīng)多個(gè)IP,一個(gè)IP也可以指向多個(gè)域名派殷。每個(gè)用戶在訪問的時(shí)候?qū)?yīng)的IP都不一致还最。百度買了很多服務(wù)器,根據(jù)你的位置返回最近的IP毡惜。<strong>ping 域名 可以得到IP</strong>)
總結(jié)兩句話:
1拓轻、一個(gè)域名對應(yīng)的IP由域名所有者指定的(比如我買了域名,決定IP是多少)
2经伙、由所有者決定域名對應(yīng)的IP扶叉,不在本機(jī),統(tǒng)一在運(yùn)營商DNS管理(也就是你遷的電信網(wǎng)帕膜,就由電信運(yùn)營商決定)
PS:
強(qiáng)制改IP
1辜梳、Linux: sudo vi /etc/hosts/ 127.0.0.1 baidu.com
2、Windows - 找到 hosts文(c/windows/system32/dvivers/etc/hosts)用管理員身份運(yùn)行泳叠,改IP
- 端口:TCP/UDP協(xié)議, 一個(gè)端口對應(yīng)一個(gè)服務(wù)
0--1023號端口是保留端口
1茶宵、FTP(傳文件危纫。默認(rèn)端口21)監(jiān)聽21
2、http 80端口
3乌庶、DNS 53端口
4种蝶、HTTPS 443端口
5、1080 socks代理端口
例如:https://baidu.com:443 瞒大; http://qq.com:80(默認(rèn)隱藏了端口)
二螃征、 請求&&響應(yīng)
- 瀏覽器(client)--------- 服務(wù)器 (sever)
交互過程:瀏覽器首先訪問DNS某網(wǎng)址的IP是什么。有了IP以后向服務(wù)器發(fā)送請求透敌,服務(wù)器就返回一個(gè)頁面給瀏覽器盯滚,就是響應(yīng)
瀏覽器也叫客戶端、用戶代理(user agent酗电,因?yàn)槭菫g覽器代替我上網(wǎng))
請求
curl -L https://baidu.com
curl -l http://101.200.33.143:8888/index.html(獲得請求信息)
一個(gè)請求的例子:
get/index.html http/1.1(我要index.html魄藕,遵循的版本是http1.1)
host:101.200.33.143:9999(我需要百度的這個(gè)IP訪問9999端口號)
connection:keep-alive
pragma:no-cache(不要緩存我)
upgrade-insecure-requests:1
user-agent:mogilla/5.0(macintosh;intel mac os x 10_12_3) applewebkit/537.36(khtml,like gecko)
chrome/56.0.2924.87 safari/537.36(用戶用什么工具訪問)
accept:text/html,application/xhtml+xml;application/xml0.9,image/webp,/*;q=0.8(返回HTML,如果沒有就XHTML)
accept-encoding;gzip,defiate,sdch *
如上的請求分為四部分:
1撵术、請求行:動詞( 9個(gè):get背率、post、delete、put寝姿、patch交排、head、track饵筑、options埃篓、connect )路徑 協(xié)議/版本號
get/ index.html http1.1.1
get head post put(給什么替換掉要改的) pacth(保留舊的) delete connect option trace
2、請求頭:域名(host)
host:1.2.3.4
accept:HTML翻翩、XHTML都许、XML
user-agent:chrome、Mac嫂冻、
<b>vcontent-type:application x/www-form-urlencoded 或者json/HTML/urlencoded(x表示這個(gè)東西還沒進(jìn)入標(biāo)準(zhǔn)胶征,但試行了很多年了、第二部分指定第四部分格式)</b>
cookie(難點(diǎn))
3桨仿、回車(把第二部分和第四部分隔開)
4睛低、消息體(formdata。內(nèi)容隨意服傍,可省略钱雷,格式由第二部分指定)
響應(yīng)
- 得到響應(yīng)頭(1 2部分)curl --head http://101.200.33.143:8888/index.html
- 得到第四部分 curl http://101.200.33.143:8888/index.html
- 得到頭和體 curl -D - http://101.200.33.143:8888/index.html
(F12 network respose)
一個(gè)響應(yīng)的例子:
HTTP/1.1 200 OK(版本號、狀態(tài)碼)
Server: bfe/1.0.8.18
Date: Tue, 28 Feb 2017 06:28:27 GMT
Content-Type: text/html; charset=utf-8(定義第四部分類型)
Transfer-Encoding: chunked
Connection: keep-alive
Vary: DontTrackMeHere
Set-Cookie: BDRCVFR[yRSRXBz7w1T]=-tUPB7bzJE6uZNBmi4WUvY; path=/; domain=.baidu.com
Set-Cookie: BDSVRTM=0; path=/
Set-Cookie: BD_HOME=0; path=/
Set-Cookie: H_PS_PSSID=1464_21081_22036; path=/; domain=.baidu.com
P3P: CP=" OTI DSP COR IVA OUR IND COM "
Cache-Control: private
Cxy_all: 56060048_4_pg+64bff61a52fe2c37f37a88f72cfc6228
Expires: Tue, 28 Feb 2017 06:28:02 GMT
X-Powered-By: HPHP
X-UA-Compatible: IE=Edge,chrome=1
Strict-Transport-Security: max-age=172800
BDPAGETYPE: 1
BDQID: 0xf209092c000026f8
BDUSERID: 0
Content-Encoding: gzip
Set-Cookie: __bsi=2050419762638780962_00_21_R_N_3_0303_C02F_N_I_I_0; expires=Tue, 28-Feb-17 06:28:32 GMT; domain=www.baidu.com; path=/
如上的響應(yīng)分為四部分:
1吹零、狀態(tài)行:協(xié)議/版本號 狀態(tài)碼 狀態(tài)描述
2罩抗、響應(yīng)頭
content--type:text/HTML charset =utf-8
server:bfe/1.0.8.18
date:thu,23 feb 2017
(定義第四部分格式)
3、回車
4灿椅、消息體(內(nèi)容隨便)
<html>
<body>
</body>
</html>
難點(diǎn):緩存
- 狀態(tài)碼:
- 1開頭:表示正在進(jìn)行中
- 2開頭:表示請求已成功被服務(wù)器接收套蒂、理解、并接受
200:成功 - 3開頭:指重定向
301:重新定向茫蛹;永久搬家(瀏覽器緩存結(jié)果操刀,以后不訪問這個(gè)網(wǎng)址)
302:臨時(shí)搬家
304:指緩沖的版本是最新的 - 4開頭:客戶端出錯
404:請求網(wǎng)址不存在 403:不允許你訪問
405:只能用特定方式請求,如只能用get
414:請求的網(wǎng)址太長
505:內(nèi)部服務(wù)器錯誤 502:網(wǎng)關(guān)問題
三婴洼、URI URL URN
URI(統(tǒng)一資源標(biāo)識符) = URL(統(tǒng)一資源定位符) + URN(統(tǒng)一資源名稱)
- 一個(gè)URI的組成部分
URL: http<b>(協(xié)議)</b>://www.baidu.com<b>(域名)</b>:443<b>(端口號)</b>/path/<b>(路徑)</b>?key=value&key2=value2<b>(查詢字符串)</b>#fraqid<b>(錨點(diǎn)定位符)</b>
URN:urn:example:mammal:monotreme:echidna(圖書isbn)
知識這東西骨坑,若只是嘴上說說,而不能轉(zhuǎn)化為見識和膽識柬采,那其實(shí)蛋用沒有