URL的組成部分
URL的組成有:協(xié)議、域名忠售、路徑、查詢(xún)參數(shù)迄沫、錨點(diǎn)稻扬。接下來(lái)將依次分析這五部分。
協(xié)議
主要有HTTP協(xié)議和HTTPS協(xié)議羊瘩,HTTP協(xié)議默認(rèn)使用端口號(hào)80, HTTPS協(xié)議默認(rèn)使用端口號(hào)443
域名
ip
ip地址是用來(lái)定位互聯(lián)網(wǎng)世界中的一臺(tái)設(shè)備泰佳,每個(gè)上網(wǎng)的設(shè)備都有自己獨(dú)立的IP地址
IP分為外網(wǎng)IP和內(nèi)網(wǎng)IP
可以用Ping命令查看域名的IP地址
如上圖,域名taobao.com對(duì)應(yīng)的IP地址是140.205.220.96
還可以用nslookup查看域名的ip地址:
端口
一臺(tái)服務(wù)器可以提供很多服務(wù)困后,每個(gè)服務(wù)有不同的號(hào)碼乐纸,這個(gè)號(hào)碼就是端口衬廷。類(lèi)似于摇予,在麥當(dāng)勞點(diǎn)餐,有咖啡窗口吗跋、快餐窗口侧戴、甜品站窗口宁昭,只能在咖啡窗口點(diǎn)咖啡、甜品站窗口點(diǎn)甜品酗宋。
一臺(tái)機(jī)器可以提供很多不同的服務(wù)
- 80端口:HTTP服務(wù)
- 443端口: HTTPS服務(wù)
- 21端口: FTP服務(wù)
域名
域名是IP的別稱(chēng)
一個(gè)域名可以對(duì)應(yīng)多個(gè)IP积仗, 這叫負(fù)載均衡,防止一臺(tái)機(jī)器無(wú)法同時(shí)為大量用戶(hù)提供服務(wù)
不同地區(qū)ping taobao.com會(huì)看到不同的ip地址
一個(gè)IP也可以對(duì)應(yīng)多個(gè)域名蜕猫,這叫主機(jī)共享
域名通過(guò) DNS 解析成 IP
當(dāng)你輸入www.baidu.com
chrome瀏覽器會(huì)向電信/聯(lián)通提供的DNS服務(wù)器詢(xún)問(wèn)www.baidu.com對(duì)應(yīng)什么IP
然后電信/聯(lián)通會(huì)回復(fù)一個(gè)IP
然后chrome瀏覽器會(huì)向?qū)?yīng)IP地址的80/ 443端口發(fā)送請(qǐng)求
服務(wù)器默認(rèn)用80端口提供HTTP服務(wù)
服務(wù)器默認(rèn)用443端口提供HTTPS服務(wù)
請(qǐng)求內(nèi)容是查看www.baidu.com的首頁(yè)
關(guān)于域名的其他知識(shí)
www.baidu.com和baidu.com是不同的域名
- .com是頂級(jí)域名
- baidu.com是二級(jí)域名(俗稱(chēng)一級(jí)域名)
- www.baidu.com 是三級(jí)域名(俗稱(chēng)二級(jí)域名)
- 所以www.baidu.com是baidu.com的子域名
- 例如寂曹,github.io是github的域名, userid.github.io是每個(gè)用戶(hù)的域名
路徑
如何請(qǐng)求同一服務(wù)器上不同網(wǎng)頁(yè)回右?
用路徑即可
路徑是沒(méi)有必要有后綴的
https://developer.mozilla.org/zh-CN/docs/Web/HTML
https://developer.mozilla.org/zh-CN/docs/Web/CSS
查詢(xún)參數(shù)
請(qǐng)求同一個(gè)頁(yè)面隆圆,能得到不同內(nèi)容嗎?
用查詢(xún)參數(shù)即可
http://www.baidu.com/s?wd=hello
錨點(diǎn)
同一內(nèi)容翔烁,不同位置渺氧?
用錨點(diǎn)即可
https://developer.mozilla.org/zh-CN/docs/Web/CSS#教程
錨點(diǎn)不支持中文,會(huì)把中文進(jìn)行編碼
注意蹬屹!
錨點(diǎn)不會(huì)經(jīng)過(guò)服務(wù)器侣背,因?yàn)槭潜镜貎?nèi)容
所以服務(wù)器不會(huì)閱讀井號(hào) # 之后的內(nèi)容,不可以拿這個(gè)傳參數(shù)慨默!
URL舉例
最后我們?cè)賮?lái)看看URL的不同部分
https默認(rèn)用443端口
所以www.baidu.com 等同于 www.baidu.com:443
curl使用示例
curl -v http://www.baidu.com
整個(gè)過(guò)程:
向DNS查詢(xún)域名對(duì)應(yīng)的IP地址
建立TCP連接贩耐,TCP連接建立好之后,開(kāi)始發(fā)送HTTP請(qǐng)求
下圖中以大于號(hào)開(kāi)始的
GET / HTTP/1.1到 > Accept: /是請(qǐng)求頭
之后服務(wù)器會(huì)發(fā)送回來(lái)一個(gè)響應(yīng)
分為響應(yīng)頭和響應(yīng)體
以下內(nèi)容是響應(yīng)頭
響應(yīng)體就是HTML頁(yè)面
響應(yīng)結(jié)束后厦取,關(guān)閉TCP連接
HTTP請(qǐng)求結(jié)束