把URL五馬分尸

8 評論 18291 瀏覽 282 收藏 8 分鐘

你一定每天工作顯得很忙,你一定各種資訊、八卦、娛樂信息一條不漏,下班后感覺一天頭昏腦脹,好像并沒有真正干什么事情,有木有?

不知道你啥樣,我基本每天早九晚九,渾渾噩噩,但是好像八卦一個都沒落下。

你每天打開幾十個頁面,是否觀察過它們的Url地址?今天帶你“庖丁”解牛(庖丁兩個字帶了引號哦,你應該可以看出我是個很謙虛的人),讓Url跳段脫衣舞,把它拆開細細和每個部分談談。

一個標準的Url地址由這幾部分組成,protocol,hostname,port,path,parameters,query組成,這樣顯得太干巴了,還是舉個栗子來說明。

照葫蘆畫瓢,我們按照剛才說的幾個部分來拆解一下,杜撰一個鏈接如下:

http://news.qq.com/a/20160209/012154.htm?a=1&b=2&c=3

Protocol

指 http:// 這部分,是協議的意思,協議就是一套規則,它定義了數據如何封裝、打包、拆包和解釋的規則,比如我答應過你,只愛你一個人,就是一套協議,我們兩個人的交往都是按照這套規則來進行的,我同時找兩個妹子,你就可以說我沒有按照我們之間的協議來戀愛了。也即只有通過http這套規則訪問這個頁面資源。你是否還見過https、ftp、thunder這些協議頭,Url地址標識一個資源,你可以通過不同的規則(協議)訪問到它,當然前提是存放這些資源的服務器支持這個協議。

一個劇院,座位位置被看做資源,看客只有獲取到這個資源,才能看到這個劇目?,F在過年,人比較多,為了防止發生踩踏事件,不但開放正門,還多開放兩個側門。我們腦補一下,觀眾的票面上標識了什么信息,一定有座位的信息(幾排幾號),也即相當于Url的后半部分,但是這個Url的協議頭,有的票面標了從正門進,有的標識了從側門進,這就相當于協議,一種是走正門的規則進入,另一種是走側門的規則進入,你拿著走正門的票從側門進入,應該是被拒絕的(正常情況下,大家都是拒絕后入的呢),否則你無法獲取到最終的資源(座位),所以采用何種協議,至關重要。前面所討論的前提都是要側門開放,也即服務器支持這種協議,不開放側門,你的地址就是失效的哦,訪問不到這個資源。

這部分就介紹完了,總之,協議頭標識了用什么規則訪問具體的資源,以后你看到不同的協議頭,就想想這個例子。當然你也可以設計一個協議,比如叫abc://也是可以的,這種就是自定義協議。

Hostname

Hostname稱為主機名,在例子中的Url中,news.qq.com就是Hostname,主機可以理解為一臺機器的名字叫news.qq.com,這臺主機在qq.com這個域名下,qzone.qq.com也在qq.com這個域名下,還有很多比如v.qq.com等等。

其實我所理解的,主機名跟域名是差不多的意思,反正我是一直沒區分開來理解,好像理解成一個意思,好像也沒出什么錯。

順便介紹下qq.com叫做一級域名,尤其國內很多人認為www.qq.com是一級域名,其實大錯特錯,它只不過是一個二級域名。www等同于剛才說的news。

www.qq.com/news.qq.com/qzone.qq.com/v.qq.com分別都是二級域名。

Path

/a/20160209/012154.htm,在host后面的一長串全部叫做path,翻譯過來就是路徑的意思。就是最終文件所在的路徑和文件名。例如:在我的電腦中,有一個路徑存儲著一些我喜歡的電影,只不過此地址是在我的本地電腦上,而上面的那個路徑是存儲在騰訊的服務器,也即news.qq.com這個域名下的若干臺機器上中的。

Parameters

?a=1&b=2&c=3,這一部分稱為參數,也叫查詢。它的目的是在Url中帶上去一些本地的信息傳給服務器,a、b、c三個字符是我為了理解簡單杜撰的(在baidu的Url中的參數是這樣的:?ie=utf-8&f=8&rsv_bp=1&tn=baidu),這些Key-Value的鍵值對標識了一些特定的意義,但最終是要服務器進行判斷處理的。其中參數部分加上一些你隨便填寫的值并不會出錯,比如加上&d=4,只不過服務器不解析這部分罷了。

Port

Port稱為端口號,一般http的端口號為80,https為443,可以理解為計算機可以有很多個提供服務的點,比如可以用默認的80端口來提供服務,同時也可以用81來服務。把一個主機比喻成一間房子的話,那么這間房子可以有65536個門,門就是端口號,這么多端口都可以達到進出的目的。我們上面的Url沒有寫任何的端口號,即默認為80。http://news.qq.com:8080/a/20160209/012154.htm?a=1&b=2&c=3#p=1,這個Url指定了從8080這個端口號,也即從這個門訪問資源,那這個網頁服務器必須在這個端口首先部署服務(也就是先把門打開,才能提供服務),才能供用戶訪問。

不管再長的Url都是由這幾個關鍵部分組成的,只要你會分割出上面介紹的幾個主要部件,就能看出各部分的意義,這是互聯網的基本功,希望親們能夠理解。

#專欄作家#

給產品經理講技術,微信公眾號(pm_teacher),人人都是產品經理專欄作家。資深程序猿,專注客戶端開發若干年,對前端、后臺技術略懂,熱衷于對新的科技領域的探索。

本文原創發布于人人都是產品經理,未經許可,不得轉載。

更多精彩內容,請關注人人都是產品經理微信公眾號或下載App
評論
評論請登錄
  1. 4P1H,簡稱在home里玩4p

    來自廣東 回復
  2. 看每部分都要返回去瞅瞅杜撰的那個域名,用戶體驗哪去了。。。 ?

    來自北京 回復
    1. 哈哈哈

      來自湖北 回復
  3. 標題取的太抽象了,感覺對這類問題不敢興趣的人不會點進來看啊。 ?

    來自上海 回復
  4. 少說一個query

    來自北京 回復
    1. query就是問好,疑問的意思
      regeist?a=1&b=2&c=3
      這個?前面regeist其實是個方法名,而abc則是這個方法所需要的參數
      a=1就是第一個參數
      b=2就是第二個參數
      c=3就是第三個參數
      傳遞了這么一組數據給服務器,服務器接收到了數據,進行了處理

      來自上海 回復
    2. 啊,掃噶!
      多謝多謝! ??

      來自北京 回復
    3. 謝謝你!!

      來自四川 回復