大家好,給大家介紹一下,我是一個位元組。相比於你們人類據說即將達到的百歲人生的壽命,我的一生簡直不直一提(我只能存活零點幾個毫秒)。
也許只有那些碼農才會瞭解我,而且也只有一部分碼農。那些整天做業務的猿們想來也不會真正的瞭解我,更別提人類其他行業的人了。
我不甘心,雖然我微不足道,但是我對人類的貢獻實在是太大了。沒有我的世界根本無法想像:不能聽網易雲音樂,不能刷抖音,不能上拼多多,所有和網路相關的活動都無法進行。
所以,今天我要講講我的一生,讓更多的人知道我的存在,知道我的故事,也為證明自己曾經存在過吧。
誕生
我的主人是一個在西二旗知名網際網路公司上班的程式猿,過著1095(注:早10點晚9點,一週5天工作)的生活,很少能在晚霞中回家,自然也說不出“落霞與孤鶩齊飛”那樣的句子。
這一天,他9點半到家,第一件事開啟電腦,熟練地啟動chrome瀏覽器,在位址列敲下一個z
字元,我所有的故事就從這裡開始。
當主人按下鍵盤上的z
鍵時,系統了產生一箇中斷訊號,通知CPU過來讀取鍵盤輸入,CPU讀取到z
後,將z
傳送給chrome瀏覽器, chrome收到後,將z
顯示到瀏覽器的位址列上,同時後臺搜尋主人平時訪問過的地址,排名第一的https://www.zhihu.com/
被快速補全了。
這時主人熟練地按下了Enter鍵,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螢幕上。
我的主人點開第一話題後,看了一會兒。然後瞅到了到植髮廣告,他偷偷地開啟了隱身模式,仔細地研究了起來……
後記
第一次嘗試這種題材的文章,供大家一樂!有寫得不到位的地方,歡迎大家補充!
另外,推薦大家去看《網路是怎樣連線的》,看完可以形成對網路的整體印象。寫得非常好!