首頁 > 書法

當你登入B站的0.5秒裡,你的電腦揹著你做了n件事

作者:由 網工老楊 發表于 書法日期:2022-05-25

b站號一次能登幾個手機

今天是星期二,你好不容易今天準點下班,6點打卡。

心情因為下班的到來正美,恰好外賣小哥在小區門口遇見你,把你點的奢華外賣送到你手上。哎呀,心情更美了。

進門開啟電腦,把外賣放在桌上,極具儀式感準備登入b站開一部快樂肥宅劇配飯時,你發現:在瀏覽器網址框內輸入www。bilibili。com之後,經過0。5秒的反應時間,就會看到b站的主頁。

當你登入B站的0.5秒裡,你的電腦揹著你做了n件事

這時,你的筷子一頓,腦海裡開始不受控制的思考起一個神秘的問題:“這0。5秒的時間內,電腦是做了多少操作,才找到b站這個頁面的?”

這就是老楊今天要分析的問題:在這簡單的0。5秒反應時間的背後,為了找到b站這個頁面,你的電腦到底飛速幹了多少活兒、

1、分析這個問題前,你需要了解的基礎問題

(1)IP地址和域名有啥區別?

首先,我們要知道,平時我們在這個瀏覽器搜尋的網址並不是IP地址,而是域名。

當你登入B站的0.5秒裡,你的電腦揹著你做了n件事

像www。bilibili。com,它就是一個典型的域名,圖上的知乎也是。那B站的IP地址是啥?是110。76。40。240。

域名的出現主要是方便人們記憶,一大串數字對於你來說記起來肯定不如bilibili快。

問你百度的IP地址是啥,你不太清楚;

但問你百度的網址是啥,你馬上就能想起www。baidu。com,就是這麼個道理。

IP地址究竟是啥?

簡單來說,IP地址是人們在Internet上為了區分數以億計的主機而給每臺主機分配的一個專門的地址,透過IP地址就可以訪問到每一臺主機。

TCP/IP中也是使用IP地址和埠號來確定網路上某一臺主機上的某一個程式。

IP本身沒有什麼實際的意義,很難記憶,所以才有了域名。但是路由器只認識二進位制的IP地址,所以,你記住了域名,電腦記不住,就會出現一個問題:

當你使用域名訪問某一個網站時,需要先將域名翻譯成對應的IP地址,這個過程叫做“域名解析”。

誒?我平時輸入的時候可沒有翻譯過啊,這背後是誰再操作?

老楊第二點就給你說明白。

補充一個小技巧:如果你想檢視某一個網站的IP地址,要咋整?

老楊平時喜歡用ping來檢視:透過win+R開啟cmd ,輸入ping+空格+域名就可以了。

(2)DNS又是啥?

DNS(Domain Name System)是指域名系統,它主要是提供一種從主機名到IP地址的目錄服務。

而DNS協議是指將域名轉換為IP地址的一個規則。

這就是第一點裡提及的“域名解析”。

你平時輸入網址的時候,沒有人給你翻譯成IP地址,但是客戶端自動就是可以跳轉到對應的頁面去,就是DNS在後面的默默奉獻。

為啥要特地整一個DNS呢?

因為一開始,咱們的域名和IP的對應關係都存在host的檔案裡。如果一個新的計算機要接入網路,或者某個IP需要改改,都要去資訊中心定期對檔案裡的內容進行更新,延遲了很久,操作起來也賊麻煩。

所以才有了自動翻譯機——DNS系統。

所以,當你輸入www。bilibili。com時,再你按下回車鍵後,停頓的1-2秒內,DNS系統已經悄悄地幫你把這個b站的域名翻譯成110。76。40。240給路由器看,這才能跳到你想要看到的二次元頁面。

當你登入B站的0.5秒裡,你的電腦揹著你做了n件事

(3)HTTP是啥?

看到下面這張圖,你就會發現你幾乎時時刻刻都在能看到它:

當你登入B站的0.5秒裡,你的電腦揹著你做了n件事

但老楊這裡想講的是HTTP協議。HTTP協議超文字傳輸協議(英文:Hyper Text Transfer Protocol,縮寫:HTTP)是一個應用層協議,也是網際網路上應用最為廣泛的一種網路協議。

而HTTP報文是HTTP協議一種純文字的資料格式,分為請求報文和響應報文,兩種報文都具有類似的結構,分別由三個部分構成:起始行、首部、主體。

當你登入B站的0.5秒裡,你的電腦揹著你做了n件事

當一個你用你的電腦登入一個網站時,透過HTTP協議將這個你請求的這個“內容”封裝到HTTP請求報文之中,然後,伺服器收到這個請求報文之後,根據協議規範解析報文,然後給你返回相應報文之後,你才能看到你想要看的網站頁面。

(4)TCP的三次握手

TCP的中文名叫做傳輸控制協議,是供已經連線因特網的計算機進行通訊的通訊協議。TCP是網際網路協議之一,也是主要的協議之一。

TCP/IP 定義了電子裝置(比如計算機)如何連入因特網,以及資料如何在它們之間傳輸的標準。所以討論這個問題,必須要涉及到TCP這個東西。

當你登入B站的0.5秒裡,你的電腦揹著你做了n件事

2、計算機是怎麼在全球這麼多裝置裡,找到我要的那個網站的?

說完上面四個基礎概念,我們再繞回題目本身。老楊首先要糾個錯啊,計算機本身是不會找到你想要的那個網站的,它只是瞭解到你的“需求”之後,再去找“別人”處理這件事。

這個“別人”就是路由器。路由器的世界也是層級分明,計算機問離它最近的路由器,這個村子裡的路由器不知道的話,就會網上稟報,報到縣裡的、鎮裡的、城裡的、全國的,一個個往上稟報,總有一個路由器會知道。

畢竟骨幹的路由器知道網路世界裡的所有“路徑”,最後找到你需要的那個伺服器,路由器發起了請求連線,你就能登入上。

當你登入B站的0.5秒裡,你的電腦揹著你做了n件事

並且,老楊還要再解釋一點,IP地址並不是像大海撈針一樣的搜尋的。因為全球的IP地址都已經是固定好且唯一的標識,這就和我們的世界地圖一樣, 具有唯一性。

地址們都在嗷嗷待哺的等待著人們的“需求”,這個“需求”不僅可以被動的靠路由器一層一層傳輸,也可以靠0。0。0。0這個“萬能喇叭”來實現。

一旦對應的網站伺服器能接收到你的請求,就會雙眼放光,開始一番猛如虎的連線操作,在1-2秒內,你就能看到對應的網站頁面。那路由器,到底是怎麼具體的找到我想要的那個網站的呢?

3、當你在登入網站的2秒內,計算機到底做了多複雜的工作?

根據前面兩個大點,我們再捋一遍背後的整個操作過程。(終於可以用上第一點裡的知識點了)小楊下班回家開啟電腦,把外賣放在桌上,極具儀式感準備登入b站開一部快樂肥宅劇配飯。

他在瀏覽器網址框內輸入www。bilibili。com,這裡的網址是域名,所以需要“翻譯”成計算機能看懂的語言,就需要“DNS”出場。

所以,在你按下回車鍵enter之後:你的瀏覽器會率先使用DNS獲得對應的IP地址。

如果本地的DNS伺服器沒有,就像更高階的DNS伺服器求助,一直到你獲得了B站的IP地址:110。76。40。240。

獲取到了110。76。40。240之後,登入這個IP地址的需求就變成了你的“請求”。

瀏覽器會把你的這個“請求”變成HTTP請求報文傳送給TCP。

在這個傳送的過程裡,就出現了最經典的“TCP的三次握手”場景。

當你登入B站的0.5秒裡,你的電腦揹著你做了n件事

具體是咋握手的,我們看這裡:首先,TCP先收到了伺服器發來的請求“有個使用者要登入B站看番”。

這時候它有點慌,心裡想:這個請求靠不靠譜啊?必須要測試一下,驗證驗證可不可靠!

所以,TCP設計的“三次握手”出現了,為的是讓這倆貨接觸一下,自證清白,獲取TCP的信任。

你的計算機給伺服器發訊息,“誒哥們,我能不能登個B站啊?”

伺服器說:“可以啊大兄弟,這點小事算啥,你收得到我的資訊嗎?”

計算機說:“收到了!真是太好了,感恩的心感謝有你,祝哥們發大財!”

透過這三次握手,TCP確認了“我要登入B站看番”是ok的,接下來,它就會把你這個請求再次打包成一個IP報文,傳送給B站的伺服器。

在B站確認你的請求之後,它也會發送一個IP報文給你,以此表示確認建立連結。

經歷上述幾個過程以後,(也就是你在輸入框裡輸入網址並按回車後的0。5秒內)你順利打開了B站,開始看起快樂肥宅劇。

寫到這裡,覺得用這句話結尾,應該是最好的:

哪有什麼歲月靜好,不過是有人在替你負重前行。

原創:老楊丨8年資深網路工程師,更多網工提升乾貨,請關注公眾號:網路工程師俱樂部