閱讀本文需要9分鐘。
大家好,給大家介紹一下,我是一個位元組。相比於你們人類據說即將達到的百歲人生的壽命,我的一生簡直不直一提(我只能存活零點幾個毫秒)。
也許只有那些碼農才會瞭解我,而且也只有一部分碼農。那些整天做業務的猿們想來也不會真正的瞭解我,更別提人類其他行業的人了。
我不甘心,雖然我微不足道,但是我對人類的貢獻實在是太大了。沒有我的世界根本無法想像:不能聽網易雲音樂,不能刷抖音,不能上拼多多,所有和網路相關的活動都無法進行。
所以,今天我要講講我的一生,讓更多的人知道我的存在,知道我的故事,也為證明自己曾經存在過吧。
誕生
我的主人是一個在西二旗知名網際網路公司上班的程式猿,過著1095(註:早10點晚9點,一週5天工作)的生活,很少能在晚霞中回家,自然也說不出“落霞與孤鶩齊飛”那樣的句子。
這一天,他9點半到家,第一件事開啟電腦,熟練地啟動chrome瀏覽器,在位址列敲下一個 z
字元,我所有的故事就從這裡開始。
當主人按下鍵盤上的 z
鍵時,系統了產生一個中斷訊號,通知CPU過來讀取鍵盤輸入,CPU讀取到 z
後,將 z
傳送給chrome瀏覽器, chrome收到後,將 z
顯示到瀏覽器的位址列上,同時後臺搜尋主人平時訪問過的地址,排名第一的 https://www.zhihu.com/
被快速補全了。
這時主人熟練地按下了回車鍵,chrome收到指令後,進行了一頓操作,在這電光火石之間,我誕生了,同時誕生的還有我的位元組兄弟們。
上路
話說 Chorme老大哥
接收到了URL後,首先拆解成自己能看懂的東西。 https://www.zhihu.com
會被拆解成三部分: https
、 www.zhihu.com
、 /
https
表示協議型別,透過這個 Chorme老大哥
知道他接下來該如何與遠方的網站伺服器通訊; www.zhihu.com
表示主機名,就是Chorme老大哥要通訊的物件了;第三部分則是它要向伺服器要的內容(註:這裡表明是空,實際上隱含的表示主目錄檔案的概念)。
有了這三項, Chorme老大哥
就能從伺服器那裡獲取它想要的內容了,從而展示給我的主人。
Chorme老大哥
跑到 HTTP資料包生產車間
,哼哧哼哧地倒騰半天,生產出了一個HTTP資料包(註:忽略https, 簡單起見我們當成http),這個資料包實際上就是我和我的一群位元組兄弟們,我們擠在一個集裝箱內,熙熙攘攘。
我們馬上就要搭乘 IP列車
到遠方的伺服器,見識外面的世界了。集裝箱被裝上了 TCP專車
,它將帶我們來到列車站。 TCP專車
很安全也很舒適,我從集裝箱的縫隙中看到車前貼上了車牌: 80
.
到了車站, TCP專車
直接開到了列車上。這樣也好, IP列車
上很臟,我們坐在專車上更好。 只是列車還不知道具體要去哪,所以我們就只能先在列車上等著了。
不對啊,列車應該去 www.zhihu.com
這個網站,不是已經知道了嗎?對的,但是 IP列車
挺笨的,也挺古板的,不認識這些字母。它只認識數字,人類稱之為ip.
Chorme老大哥
也有點抱怨,人類真是笨,連個ip都記不住,非得用域名來上網。害我還得拿著這個域名去問 DNS老大爺
,它知道所有域名對應的ip.
這不, Chorme老大哥
又跑到另外一個車間—— DNS資料包生產車間
裡倒騰出了一個DNS資料包,當然還是一群位元組兄弟們,不過這裡的兄弟就少一些了。它們在集裝箱裡嘰嘰喳喳,被裝上了 UDP敞篷車
,車雖然很快,但不太安全,我這些兄弟們坐在上面,提心吊膽,生怕掉下去,因為掉下去,就永遠消失了。
UDP敞篷車
也直接開到了 IP列車
上,車前貼了車牌:53.
這回Chrome老大哥直接從 作業系統大佬
那要到了 DNS老大爺
的ip, 貼到了 IP列車
的車頭, IP列車
馬上全速啟動,載著我這些位元組兄弟,趕到了 DNS老大爺
的城堡, UDP敞篷車
開下列車,按照車牌號53找到了 DNS老大爺
的住處。從它那拿到了 www.zhihu.com
對應的ip.
DNS老大爺
學問淵博,他也很仗義,從自己城堡裡的 DNS資料包生產車間
造出了DNS響應包,包裡也是我這些位元組兄弟們,它們拿著重要的資料資料—— www.zhihu.com
對應的ip, 坐上了另一趟返程的 IP列車
,而列車的終點就是我現在所在的地方。當然了,他們是由另一輛 UDP敞篷車
載著他們回來的。
Chorme老大哥
在車間接見了這些兄弟,非常感動。因為他們帶回了 www.zhihu.com
對應的ip. 那些兄弟爭先恐後的報告自己知道的東西,有些兄弟報告1, 有些兄弟報告0, Chorme老大哥
非常有經驗,它把這些訊息合併起來了,最終得到了它想要的ip: 118.89.204.192.
Chorme老大哥
拿著這個ip來到了我所在的列車前面,我激動地要叫起來了:終於我要出發了!它熟練地把 118.89.204.192
貼到了列車的前面,馬上列車就開動了,我上路了。
IP列車
的列車長在掌管著車頭的方向,決定著我們的命運走向。路網非常複雜,而車頭上只有一個ip地址,根本沒告訴列車長應該走哪條路。這不難,富有經驗的列車長根據車頭的ip地址查到了下一個大站(路由器)的地址,之後再根據這個大站地址查到(ARP協議)途經的下一個小站(交換機或集線器)應該走的軌道。在每個小站,對照這個大站地址,列車長就知道該走哪條路。搞定!
經過了很多的小站,我們終於到了下一個大站了。站點的工作人員看著我們車頭前的ip地址,查了下表(路由表)告訴我們下一個大站的地址,並且告訴我們途徑的下一個小站應該走哪條軌道。列車長就這樣,一路拿這張表,順利地把們帶到了終點: 118.89.204.192
.
不過,剛剛就在到終點的前一刻,列車被攔住了,一群荷槍實彈的警衛衝上來了,一些膽小的位元組兄弟們都哭了,我也是屏氣凝聲。他們先是查看了車頭的ip地址,再查看了列車長手裡的表,還看了下我們的 TCP專車
的車牌。很快就放行了,虛驚一場!
新生
到了終點站後,列車首先停下接受工作人員的檢查。列車長出示了他手裡的表,對了一下表上標註的下一站地址確實是:知乎。接著又看了下列車頭部標註的ip地址,就算檢查透過了,第一關很輕鬆。
接下來,我們坐的 TCP專車
開下列車了。進了一個 TCP車牌檢查站
,工作人員看了下車牌號80, 也揮手示意我們透過。
接著我們都下車走進了 主頁車間
,進去後,我們先按我們身上的標號排好了位置,工作人員將我們每個人所代表的資訊進行了聚攏。得到了各種關於主人的資訊,比如他所用的瀏覽器的版本,cookie等等資訊,我知道,我們的使命完成了。果然,一道光閃過,我們都消失了,完成了我們光榮的一生。
主頁車間
領導馬上下達生產命令:1組去倉庫拉取最新話題,2組去商業中心獲取今天的廣告主資訊……
很快,各組都完成了任務,車間在一陣轟鳴過後,新的一批位元組兄弟誕生了,他們帶著這些話題、廣告資訊,和我們當年出生的時候一樣,熙熙攘攘。但是我知道,我獲得了新生。
歸家
像我們當年一樣,這些新出生的位元組兄弟依次坐上了 TCP專車
, IP列車
一路跋涉,去往我出發的地方,那是我夢開始的地方。
我所經歷的,他們未曾少過一分。
定格
Chrome老大哥
終於等來了這些位元組兄弟,在他們排好隊後,老大哥看清了位元組兄弟們代表的內容:話題 如何在西二旗地鐵優雅地裝逼
,熱度10w, 廣告 上午植髮,下午上班
……
這些是 Chrome老大哥
最擅長的事情,分分鐘將他們顯示在了網頁上。位元組兄弟們終於完成了使命,定格在了retina螢幕上。
我的主人點開第一話題後,看了一會兒。然後瞅到了到植髮廣告,他偷偷地開啟了隱身樣式,仔細地研究了起來……
後記
第一次嘗試這種題材的文章,供大家一樂!有寫得不到位的地方,歡迎探討!
另外,推薦大家去看《網路是怎樣連線的》這本書,看完可以形成對網路的整體印象,寫得非常好!