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