大家好,給大家介紹一下,我是一個字節。相比於你們人類據說即將達到的百歲人生的壽命,我的一生簡直不直一提(我只能存活零點幾個毫秒)。
也許只有那些碼農才會了解我,而且也只有一部分碼農。那些整天做業務的猿們想來也不會真正的了解我,更別提人類其他行業的人了。
我不甘心,雖然我微不足道,但是我對人類的貢獻實在是太大了。沒有我的世界根本無法想像:不能聽網易雲音樂,不能刷抖音,不能上拼多多,所有和網絡相關的活動都無法進行。
所以,今天我要講講我的一生,讓更多的人知道我的存在,知道我的故事,也為證明自己曾經存在過吧。
誕生
我的主人是一個在西二旗知名互聯網公司上班的程序猿,過着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屏幕上。
我的主人點開第一話題后,看了一會兒。然后瞅到了到植發廣告,他偷偷地開啟了隱身模式,仔細地研究了起來……
后記
第一次嘗試這種題材的文章,供大家一樂!有寫得不到位的地方,歡迎大家補充!
另外,推薦大家去看《網絡是怎樣連接的》,看完可以形成對網絡的整體印象。寫得非常好!

參考資料
【知乎回答】https://www.zhihu.com/question/292704461/answer/482549197
【當我們談網絡時】https://segmentfault.com/a/1190000004094420
【按下鍵盤時】https://www.zhihu.com/question/29707696
【mac地址和ip地址】http://blog.sciencenet.cn/blog-411071-1037673.html
