把URL五馬分尸

你一定每天工作顯得很忙,你一定各種資訊、八卦、娛樂信息一條不漏,下班后感覺一天頭昏腦脹,好像并沒有真正干什么事情,有木有?
不知道你啥樣,我基本每天早九晚九,渾渾噩噩,但是好像八卦一個(gè)都沒落下。
你每天打開幾十個(gè)頁面,是否觀察過它們的Url地址?今天帶你“庖丁”解牛(庖丁兩個(gè)字帶了引號哦,你應(yīng)該可以看出我是個(gè)很謙虛的人),讓Url跳段脫衣舞,把它拆開細(xì)細(xì)和每個(gè)部分談?wù)劇?/p>
一個(gè)標(biāo)準(zhǔn)的Url地址由這幾部分組成,protocol,hostname,port,path,parameters,query組成,這樣顯得太干巴了,還是舉個(gè)栗子來說明。
照葫蘆畫瓢,我們按照剛才說的幾個(gè)部分來拆解一下,杜撰一個(gè)鏈接如下:
http://news.qq.com/a/20160209/012154.htm?a=1&b=2&c=3
Protocol
指 http:// 這部分,是協(xié)議的意思,協(xié)議就是一套規(guī)則,它定義了數(shù)據(jù)如何封裝、打包、拆包和解釋的規(guī)則,比如我答應(yīng)過你,只愛你一個(gè)人,就是一套協(xié)議,我們兩個(gè)人的交往都是按照這套規(guī)則來進(jìn)行的,我同時(shí)找兩個(gè)妹子,你就可以說我沒有按照我們之間的協(xié)議來戀愛了。也即只有通過http這套規(guī)則訪問這個(gè)頁面資源。你是否還見過https、ftp、thunder這些協(xié)議頭,Url地址標(biāo)識一個(gè)資源,你可以通過不同的規(guī)則(協(xié)議)訪問到它,當(dāng)然前提是存放這些資源的服務(wù)器支持這個(gè)協(xié)議。
一個(gè)劇院,座位位置被看做資源,看客只有獲取到這個(gè)資源,才能看到這個(gè)劇目?,F(xiàn)在過年,人比較多,為了防止發(fā)生踩踏事件,不但開放正門,還多開放兩個(gè)側(cè)門。我們腦補(bǔ)一下,觀眾的票面上標(biāo)識了什么信息,一定有座位的信息(幾排幾號),也即相當(dāng)于Url的后半部分,但是這個(gè)Url的協(xié)議頭,有的票面標(biāo)了從正門進(jìn),有的標(biāo)識了從側(cè)門進(jìn),這就相當(dāng)于協(xié)議,一種是走正門的規(guī)則進(jìn)入,另一種是走側(cè)門的規(guī)則進(jìn)入,你拿著走正門的票從側(cè)門進(jìn)入,應(yīng)該是被拒絕的(正常情況下,大家都是拒絕后入的呢),否則你無法獲取到最終的資源(座位),所以采用何種協(xié)議,至關(guān)重要。前面所討論的前提都是要側(cè)門開放,也即服務(wù)器支持這種協(xié)議,不開放側(cè)門,你的地址就是失效的哦,訪問不到這個(gè)資源。
這部分就介紹完了,總之,協(xié)議頭標(biāo)識了用什么規(guī)則訪問具體的資源,以后你看到不同的協(xié)議頭,就想想這個(gè)例子。當(dāng)然你也可以設(shè)計(jì)一個(gè)協(xié)議,比如叫abc://也是可以的,這種就是自定義協(xié)議。
Hostname
Hostname稱為主機(jī)名,在例子中的Url中,news.qq.com就是Hostname,主機(jī)可以理解為一臺機(jī)器的名字叫news.qq.com,這臺主機(jī)在qq.com這個(gè)域名下,qzone.qq.com也在qq.com這個(gè)域名下,還有很多比如v.qq.com等等。
其實(shí)我所理解的,主機(jī)名跟域名是差不多的意思,反正我是一直沒區(qū)分開來理解,好像理解成一個(gè)意思,好像也沒出什么錯(cuò)。
順便介紹下qq.com叫做一級域名,尤其國內(nèi)很多人認(rèn)為www.qq.com是一級域名,其實(shí)大錯(cuò)特錯(cuò),它只不過是一個(gè)二級域名。www等同于剛才說的news。
www.qq.com/news.qq.com/qzone.qq.com/v.qq.com分別都是二級域名。
Path
/a/20160209/012154.htm,在host后面的一長串全部叫做path,翻譯過來就是路徑的意思。就是最終文件所在的路徑和文件名。例如:在我的電腦中,有一個(gè)路徑存儲著一些我喜歡的電影,只不過此地址是在我的本地電腦上,而上面的那個(gè)路徑是存儲在騰訊的服務(wù)器,也即news.qq.com這個(gè)域名下的若干臺機(jī)器上中的。
Parameters
?a=1&b=2&c=3,這一部分稱為參數(shù),也叫查詢。它的目的是在Url中帶上去一些本地的信息傳給服務(wù)器,a、b、c三個(gè)字符是我為了理解簡單杜撰的(在baidu的Url中的參數(shù)是這樣的:?ie=utf-8&f=8&rsv_bp=1&tn=baidu),這些Key-Value的鍵值對標(biāo)識了一些特定的意義,但最終是要服務(wù)器進(jìn)行判斷處理的。其中參數(shù)部分加上一些你隨便填寫的值并不會出錯(cuò),比如加上&d=4,只不過服務(wù)器不解析這部分罷了。
Port
Port稱為端口號,一般http的端口號為80,https為443,可以理解為計(jì)算機(jī)可以有很多個(gè)提供服務(wù)的點(diǎn),比如可以用默認(rèn)的80端口來提供服務(wù),同時(shí)也可以用81來服務(wù)。把一個(gè)主機(jī)比喻成一間房子的話,那么這間房子可以有65536個(gè)門,門就是端口號,這么多端口都可以達(dá)到進(jìn)出的目的。我們上面的Url沒有寫任何的端口號,即默認(rèn)為80。http://news.qq.com:8080/a/20160209/012154.htm?a=1&b=2&c=3#p=1,這個(gè)Url指定了從8080這個(gè)端口號,也即從這個(gè)門訪問資源,那這個(gè)網(wǎng)頁服務(wù)器必須在這個(gè)端口首先部署服務(wù)(也就是先把門打開,才能提供服務(wù)),才能供用戶訪問。
不管再長的Url都是由這幾個(gè)關(guān)鍵部分組成的,只要你會分割出上面介紹的幾個(gè)主要部件,就能看出各部分的意義,這是互聯(lián)網(wǎng)的基本功,希望親們能夠理解。
#專欄作家#
給產(chǎn)品經(jīng)理講技術(shù),微信公眾號(pm_teacher),人人都是產(chǎn)品經(jīng)理專欄作家。資深程序猿,專注客戶端開發(fā)若干年,對前端、后臺技術(shù)略懂,熱衷于對新的科技領(lǐng)域的探索。
本文原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)許可,不得轉(zhuǎn)載。
4P1H,簡稱在home里玩4p
看每部分都要返回去瞅瞅杜撰的那個(gè)域名,用戶體驗(yàn)?zāi)娜チ?。?!??
哈哈哈
標(biāo)題取的太抽象了,感覺對這類問題不敢興趣的人不會點(diǎn)進(jìn)來看啊。 ?
少說一個(gè)query
query就是問好,疑問的意思
regeist?a=1&b=2&c=3
這個(gè)?前面regeist其實(shí)是個(gè)方法名,而abc則是這個(gè)方法所需要的參數(shù)
a=1就是第一個(gè)參數(shù)
b=2就是第二個(gè)參數(shù)
c=3就是第三個(gè)參數(shù)
傳遞了這么一組數(shù)據(jù)給服務(wù)器,服務(wù)器接收到了數(shù)據(jù),進(jìn)行了處理
啊,掃噶!
多謝多謝! ??
謝謝你!!