在瀏覽器中輸入網址后,會有哪些神奇的事情發生?
在瀏覽器中輸入網址后,網站便打開了。
你可能想不到,就這一個簡簡單單的步驟,背后藏著多么復雜的技術步驟。
為了方便理解,我們請出本文的主人公趙四和劉能,通過他們的視角,來了解從用戶輸入網址,到打開網站到底經歷了什么。
有一天,趙四聽說劉能建了一個個人網站,想去一探究竟。于是他在瀏覽器中輸入了zhaosi.com的域名并回車。
瀏覽器是劉能的小弟,劉能不論下什么命令,瀏覽器都會乖乖照做。但瀏覽器也是一個有原則的人,一些明顯錯誤的命令,它會馬上反饋給劉能,告訴他這是不對的。
瀏覽器首先會檢查劉能輸入的網址是否合法。如果劉能輸入的網址zha.osi.com或者zhao@si.com那么瀏覽器會立即告訴劉能,這是不對的。
為了自己方便,劉能下達的命令經常很模糊,比如這次訪問網站,他直接輸入zhaosi.com,并沒有告訴瀏覽器是用http協議還是https協議。
多嘴去問劉能又不太好,于是瀏覽器有自己的處理方法。如果老板沒有明確告訴我,那么我就默認使用http協議,如果明確告訴我要使用https,那么就打開https://zhaosi.com這個網站。
以上只是萬里長征的第一步。如果要建立劉能和趙四網站之間連接,打開zhaosi.com還有很長的路要走。
第一個攔路虎是TCP/IP,這是一家很大的公司,壟斷了整個快遞行業,如果你想寄快遞,只能通過這家公司,大家也都只認它。
它還不怕挨罰,前兩天阿里巴巴因壟斷行為被罰180億,TCP/IP只是笑笑不說話~
這家公司有一個規定:只認IP,不認網址(域名)。
你告訴TCP/IP要把這個包括寄到趙四的網站沒用,必須告訴它準確的地址,精確到門牌號(IP)。
可劉能并不知道趙四的網站IP地址是多少,咋辦?
于是瀏覽器找到了DNS公司,它的主營業務類似于114查號臺。114可以幫忙查電話號碼,而DNS可以幫忙查域名對應的IP地址。
劉能告訴DNS趙四的網站地址是zhaosi.com,委托它幫忙查詢一下對應的IP地址,再聯系TCP/IP。
DNS接受委托后,開始查詢。先查查自己內存里的DNS Cache,沒有找到!再查查本地硬盤的host文件,也沒有找到。最后它只能聯系自己的DNS服務器8.8.8.8。
漫長的查IP地址之路開始了。
DNS將自己的查詢打好包。
- 收件人地址:8.8.8.8
- 寄件人:1.1.1.1
負責收件的是UDP,接過包裹后,他在上面寫了幾筆:
- 收件人53號
- 發件人56002號
之所以要寫上門牌號,是因為一個地址可能對應很多個門牌號。
干完這些事后,他聯系IP司機,請求他把包裹送到目的地。IP司機查了IP路由表,發現要出關,出關的要求是,司機必須知道MAC地址。
怎么辦?IP司機想了一個好方法,問問當地的想到ARP不就行了?
ARP立馬喊了一聲,網關MAC地址妥妥的收入囊中:xx.xx.xx.xx.xx.xx
有了MAC地址,IP司機順利出關,上了Internet高速公路,一路狂奔……
最終包裹到達DNS服務器,DNS服務器一看,zhaosi.com的IP地址,剛好在本地緩存里有,直接告訴瀏覽器即可。
如果本地緩存沒有,怎么辦?
DNS會向根域名服務器發起查詢,他會先問根域名服務器:“你有zhaosi.com的IP地址嗎?”
根域名服務器告訴他:“去com服務器找。”
接著他去問com服務器,一層層下來,終于知道zhaosi.com的IP地址了,最后再告訴瀏覽器。
歷經千辛萬苦,DNS不負使命,終于拿到IP地址,這下可以聯系TCP/IP公司了。
根據TPC協議,劉能想要訪問趙四的網站,必須先問趙四在不在,要對方在才行。通常的要這樣聯系對方:
“在嗎?想去你家做客。”
趙四:“我在,歡迎啊!” “好的,馬上就到” |
經過這三次對話(三次握手)后,包裹便可以順利到達目的地。
劉能終于打開了趙四的個人網站。
劉能打死也不知道,自己一個動作,會產生如此復雜的計算量……