一個 URL 的自述

甦醒

雖然說如今是凌晨 3 點,但 acohome.cn 所在的服務器卻收到了一個請求:http://acohome.cn 。伴隨着警報響起,睡夢中的服務器冷不防打了個激靈。html

「快告訴我,你的傳輸協議是什麼?」瀏覽器

「咦?你是在問我嗎?」 我回答道。服務器

「這裏只有你一個,難不成我問空氣?哦這裏空氣是比較稀薄,你還好吧?」 服務器見我迷迷糊糊的樣子問道。網絡

「我是誰,我在哪裏?」 剛睡醒的我有點失憶。code

「你是一個 URL,這是個人地盤,剛被網卡送到這,都忘了嗎?」orm

「哦,對,我是一個 URL 大概 10 毫秒前被瀏覽器建立,並送出,終於到你這啦,這是個人傳輸協議 HTTP 給你。」 在經歷了一次長眠後,我想起了本身的使命,去服務器要一張網頁。htm

「好,HTTP 服務,你過來下,這裏有你的請求,快來領走。」 在獲得個人傳輸協議後,服務器向 HTTP 服務喊道,語氣顯有點不耐煩,多是由於個人短暫失憶讓他有點生氣了。token

「趕忙的,起來幹活了,這麼早就有請求過來了,還讓不讓人休息了。」 服務器在 HTTP 服務沒過來以前,又咕噥了一句。ip

我在一旁瑟瑟發抖,我已經記起了個人使命,只但願 HTTP 服務早點過來。過了不久,HTTP 服務走了過來。資源

「速度點,跟我過來!」 HTTP 服務也沒好氣的說道。

使命

跟着 HTTP 服務來到了一個陌生的環境,裏面高高掛着 80 443 8080 80004 個牌子。

「你端口號是多少?」

一摸口袋,居然找不到端口號,心中一虛,吞吞吐吐道

「那個,我好像沒有端口號。」

「沒有就沒有」 看到我吞吞吐吐的樣子,HTTP 服務更不耐煩了,但手上的動做卻沒停,狠狠的拉了一下 80 的牌子,而後頭也不回的走了。

「來了來了」 80 牌子的另外一頭響起一個略微耳熟的聲音,不一會來了一我的。

雖然說看起來有點陌生,但卻看到了熟悉的身影,我趕緊過去打了聲招呼。

「Hi JavaScript 你怎麼也在這啊?」

「咦?你是誰,你怎麼認識我?」

忽然間,我想起這是服務器,它不多是我認識的那我的。

「我認識一個長的很像你的人,生活在瀏覽器的那個?我剛從那邊過來。」

「哦~ 那是我哥。我和他不熟。」

「emmm...」

「把查詢參數給我,我須要處理一下。」 他看着我尷尬的樣子說道。

我一摸口袋,又是啥也沒有。只能說道:「我這沒有。」

「沒關係張,沒有就不用處理了,還能偷個懶。」

我鬆了口氣。

「接下來,把須要請求的內容路徑給我吧,我幫你去拿。」

我一摸口袋,有點發虛,說道:「我這也沒有請求內容。」

「那就是 index.html,那個 文件讀取小弟 過來一下,去讀 index.html,而後把文件內容給我。」 JavaScript 利落的說道。

「好嘞!稍等,立刻好!」 一旁的小弟說道。

對於這一幕,我早已經見怪不怪了,他哥和他同樣,老是使喚小弟幹着幹那的,本身就只負責處理小弟幹好的活。趁着他小弟忙活的時候,問了一句:

「服務器的生活環境怎麼樣?」

「環境穩定,API 穩定,資源強大,關鍵我還能操做硬件,小弟那是說來就來,個個身懷絕技,簡直是天堂。不像瀏覽器,真爲個人哥哥們感到可惜...」

「大哥,您要的數據已經準備好」 說話間,它的小弟帶着一箱箱的數據跑了過來。

「好的,你退下吧」

「吶,這是你要的東西,就是下次別這麼早了,身體要緊。我要去睡個回籠覺了,再見~」 熟人的態度就是不同。

「哦,對了,那邊有個傳送門,進去你就回到你誕生的地方了。」 JavaScript 補充道。

順着提示,我走向了傳送門,伴隨着陣陣眩暈,我又一次的進入了休眠狀態。

迴歸

瀏覽器一盆冷水把我潑醒。

「呀,你終於回來啦,快把頁面給我,用戶已經快等不及了。」

「你...」 髒話還沒來得及出口,瀏覽器卻一頭扎進一旁的箱子裏,對我無論不問了。

靜靜的呆在一旁,我知道個人使命已經結束,趁着頁面還在,我也還在,介紹下我本身。

我是誰

我,URLUniform Resource Locator,統一資源定位符,打錢!

謙虛謙虛,我呢,僅僅是一個普普統統的字符串,是千千萬萬字符串中較爲特殊的那一個,特殊在哪裏,且由我細細道來。

首先,先介紹下個人組成,一個完整的我定義以下:

<protocol>://<token>@<host>:<port>/<path>?<query>#<hash>

emmmm...

看起來是有點暈?不要緊,定義嘛,總歸是高度歸納的,先讓我來解釋解釋定義中的內容

  • <> 包裹的內容是組成個人一部分,也就是個人各個口袋,口袋裏裝了具體的內容。
  • 其餘內容爲分隔符,用來分隔個人口袋。

ok 在知曉了規則後,說說每一部分組成

protocol

學名:協議內容

做用:服務器大哥會根據該信息,將我轉給對應的應用層程序。這部分不能夠沒有,否則服務器大哥會很生氣,把我給丟了。

token

學名:用戶信息

做用:應用層會根據該信息,驗證當我是否是個合法公民,不合法的話我但是很慘的,可能會會被記錄,被加黑名單,但目前絕大部分的服務器是不會向我要這部分信息的,逍遙自在是我大部分的狀態。固然若是沒有 token 後面的 @ 符號也就不用了。

host

學名:主機名

做用:網絡投遞員會根據該信息把我投遞到對應的服務器。

port

學名:端口號

做用:在找到應用層程序後,應用層程序會根據該信息叫來對應的處理程序來和我對接,當沒有該信息時,那就是 80。不要問我爲何,要問就去問服務器。

path

學名:路徑

做用:在和處理程序和我對接的過程當中,會根據該字段獲取相應的資源。

query

學名:查詢參數

做用:處理程序會根據該信息,處理當前的請求。

hash

學名:錨點

做用:瀏覽器這哥們比較摳,個人這部分僅僅屬於他,因爲我是由他進行發送的,他把個人這部分給私藏了,在到達服務器時,個人 hash 的口袋裏,啥東西也沒有。

這就是我,在千千萬萬個字符串中比較帥的那一個。

銷燬

不知不覺來到了 4 點,在個人旁邊忽然多了個個人同類,和滿箱的包裹一塊兒,由瀏覽器出發,我仔細一瞧,裏面的數據居然寫着一個大大的標題 一個 URL 的自述,個人自述?哈哈~

但過了不久,他載着大大的 OK 回到瀏覽器,還沒來的急爲他慶祝,伴隨着瀏覽器的關閉,咱們兩眼一黑,永遠的消失了。

相關文章
相關標籤/搜索