最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

當(dāng)你在瀏覽器中輸入了網(wǎng)址訪問時(shí)產(chǎn)生了哪些技術(shù)步驟

2023-08-24 11:26 作者:馳網(wǎng)科技idc-艾西  | 我要投稿

當(dāng)你在瀏覽器中輸入了網(wǎng)址訪問時(shí)產(chǎn)生了哪些技術(shù)步驟

前段時(shí)間在知乎上了看一些網(wǎng)絡(luò)方面的知識(shí),剛好小編自己也是從事這一塊的相關(guān)工作由對(duì)網(wǎng)絡(luò)方面有一定的了解。今天我們來講講,當(dāng)你在瀏覽器中輸入本站域名并回車后,這背后到底發(fā)生來什么事情?

(因平臺(tái)原因本文中www即為xxx ,com即為zzz,http/ccccc即為cccc/ccccc)

?

大致總結(jié)歸納了下,發(fā)生的事情如下圖:

?


看到這里,大部分人都是蒙的。哪怕你有一點(diǎn)網(wǎng)絡(luò)知識(shí)的基礎(chǔ),看起來也是蒙的。為了跟大家生動(dòng)形象地說明原理,下面,我們用擬人的手法,講述從輸入一個(gè)網(wǎng)址,到最終顯示出頁面,這背后所發(fā)生的事情。

?

某天,小明心血來潮,想去艾西服務(wù)器論壇看一下有沒有更新的博文,于是他打開了chrome瀏覽器,稍微回憶了一下網(wǎng)址,輸入了:27server.zzz,并按下了回車。

?

一 ,瀏覽器格式化檢查

chrome檢查了一下,嗯?這好像是一個(gè)蠻標(biāo)準(zhǔn)的網(wǎng)址。但如果小明輸入的是27server@zzz或者27server.zzz1這樣的,chrome就會(huì)無情的拒絕小明的提議,并提示他網(wǎng)址出錯(cuò)。

所以在第一步,瀏覽器對(duì)網(wǎng)址進(jìn)行了格式化檢驗(yàn),確定這是一個(gè)有效的網(wǎng)址,才會(huì)進(jìn)入下一步。但是,在訪問之前,瀏覽器必須知道,用了什么協(xié)議,是http呢,還是https呢?顯然chrome對(duì)這種事情已經(jīng)見怪不怪了,他有自己的一套方案,這里小明沒有給定是什么協(xié)議的,于是chrome默認(rèn)用了http協(xié)議,于是將網(wǎng)址修改成了:cccc://27server.zzz

?

二 DNS分級(jí)查詢

在互聯(lián)網(wǎng)上,有一家名叫TCP/IP的快遞公司,專門負(fù)責(zé)運(yùn)送用戶的包裹。

于是chrome聯(lián)系了TCP/IP快遞公司,但卻被告知:需要知道對(duì)方的IP地址,才能把包裹寄給對(duì)方!chrome并不是一個(gè)灰心的孩子,于是它找到了“黃頁公司”-DNS。

求DNS幫忙查詢下“27server.zzz”的IP地址是多少?DNS于是著手開始查找。首先看了下本地的hosts文件,沒有找到對(duì)應(yīng)!然后看了下本地內(nèi)存,也沒有!沒辦法,DNS只好聯(lián)系了村口的一家名叫路由器的公司,192.168.1.1。路由器查看了下,最近村里沒人訪問過這個(gè)域名呀,要不你去市里的DNS公司問問?這是市里的DNS公司地址:114.114.114.114

于是DNS又聯(lián)系了市里的DNS公司,卻被告知最近市里最近也沒人訪問過這個(gè)域名。但是市里的DNS公司畢竟是專業(yè)的DNS公司,不會(huì)隨便推卸責(zé)任,對(duì)DNS說,你等一等,我找我的上級(jí)查詢下。于是市里的DNS公司聯(lián)系了它的上級(jí),根域名服務(wù)器。這個(gè)根域名服務(wù)器可了不得,全球只有13臺(tái),掌控著全球的DNS根域名查詢。市里的DNS公司找到了離他最近的根域名服務(wù)器,說:“老哥,麻煩幫我查下.com頂級(jí)域名的服務(wù)器地址?!?/p>

沒過一會(huì)兒,根域名服務(wù)器回復(fù)道:“你好,你要查詢的地址是1.2.3.4?!?/p>

于是市里的DNS公司又聯(lián)系到了1.2.3.4,詢問 27server這個(gè)二級(jí)域名的域名服務(wù)器地址。

同樣,1.2.3.4回復(fù)給了市里的DNS公司,地址是2.3.4.5。

市里的DNS公司又找2.3.4.5問了下,地址是:27server.zzz.w.kunluncan.zzz。等等,這怎么是一個(gè)別名(CNAME)?

于是市里的DNS公司又不厭其煩的重復(fù)了上面的幾個(gè)步驟,一級(jí)一級(jí)地查找了 com > kunluncan > w > com > 27server的域名服務(wù)器地址,一直找到了馳網(wǎng)云的CDN域名服務(wù)器,DNS聯(lián)系了對(duì)方,對(duì)方回復(fù)道:“查詢到25個(gè)IP地址,分別是xxxxxxxx,幫你找到了離你最近的地址,3.4.5.6,已經(jīng)打包,收件人地址:114.114.114.114 發(fā)件人地址:3.3.3.3,已委托TCP/IP快遞公司的UDP小哥發(fā)送給你?!?/p>

?

三,網(wǎng)關(guān) ARP原理

UDP是這一行的老司機(jī),隨手在包裹上寫著:

收件人門牌號(hào):53

發(fā)件人門牌號(hào):56002

因?yàn)閁DP知道,同一個(gè)地址會(huì)有很多的門牌號(hào),為了避免混淆,必須要寫。

UDP隨手聯(lián)系了TCP/IP公司的貨車司機(jī),讓他捎帶一下這個(gè)包裹。

司機(jī)來了,把包裹放進(jìn)了駕駛室,坐上車準(zhǔn)備開車。

司機(jī)打開了導(dǎo)航(路由表),發(fā)現(xiàn)要出關(guān)(網(wǎng)關(guān)),但是要知道關(guān)口的編號(hào)(mac地址)。但是導(dǎo)航信息里并沒有關(guān)口的編號(hào)。于是司機(jī)找到了當(dāng)?shù)氐南驅(qū)RP,問這個(gè)關(guān)口的編號(hào)是多少?ARP吼了一嗓子,關(guān)口回復(fù)說:“我的編號(hào)是xxxxx”。司機(jī)很快就到達(dá)了關(guān)口,關(guān)口放行,載著快遞,上了Internet高速公路,一路狂奔不止。

?

四,建立DNS緩存

市里的DNS公司收到結(jié)果后,又通過村口的路由器公司聯(lián)系到了DNS,并把結(jié)果告訴給了對(duì)方。同時(shí)村口的路由器公司和DNS都在自己的小本本上默默地記下了這個(gè)對(duì)應(yīng)關(guān)系。

最后,DNS又把結(jié)果告訴給了已經(jīng)等得不耐煩的chrome了。

??

五 ,TCP的三次握手

知道了27server.zzz的IP地址,chrome又立即聯(lián)系了TCP/IP快遞公司,快遞公司派出了TCP小哥來接洽此時(shí)。和UDP小哥不同的是,TCP小哥是一個(gè)做事一絲不茍的人,知道chrome想要去拜訪3.4.5.6,就要先和對(duì)方聯(lián)系一下,確定在不在,這是通過TCP三次握手實(shí)現(xiàn)的。

TCP小哥:在嗎?有人想要去拜訪您。

對(duì)方:在啊,隨時(shí)歡迎。

TCP小哥:馬上到。

這三次消息,要通過TCP/IP公司的司機(jī)來來回回運(yùn)輸三次。DNS查詢也是同樣的道理,這里就不贅述了。

通過這三次握手,TCP小哥建立起了一條chrome到3.4.5.6的通道。

chrome將http請(qǐng)求消息(我是誰,要找誰等),打包給了TCP小哥,寄件人IP地址:2.2.2.2 門牌號(hào):23755。收件人IP地址:3.4.5.6 門牌號(hào):80

然后TCP小哥聯(lián)系了司機(jī),將包裹送到了3.4.5.6的80門牌號(hào)上。

?

六 Nginx的工作原理

3.4.5.6的80門牌號(hào)的門衛(wèi)是nginx老大爺。老大爺一看,是送給家里的27server.zzz的。

路上老大爺看了下nginx.conf里找人的順序:首先找index.php,如果找不到就找index.htm,再找不到就找index.html。

于是敲開了27server.zzz的門,里面只有index.html在家。index.html頭也不回地告訴nginx老大爺,告訴chrome,我們已經(jīng)搬家了,去找ccccc://xxx.27server.zzz(強(qiáng)制跳轉(zhuǎn))。

?

七 https加密原理

chrome收到了這個(gè)消息,立馬又重復(fù)了上面的所有步驟,聯(lián)系了“黃頁公司”DNS,費(fèi)了很大一番周折,找到了 xxx.27server.zzz的IP地址。

其實(shí)這兩次訪問,整體流程相似,不一樣的地方如下:

查找到 xxx.27server.zzz的IP地址后,chrome這回沒有直接把包裹給TCP小哥,而是聯(lián)系了TLS安保大叔,讓他全權(quán)負(fù)責(zé)包裹的安全問題,確保包裹在運(yùn)輸過程中的安全,即包裹的內(nèi)容保密,包裹內(nèi)容不能被篡改、替換。

TLS大叔需要先和對(duì)方溝通安保措施,溝通的渠道,就是上文三次握手建立的渠道。

TLS大叔先發(fā)言:你好,我支持TLS版本1.2,以及我的認(rèn)證算法、加密算法、數(shù)據(jù)校驗(yàn)算法,此外還有我的隨機(jī)碼,收到請(qǐng)回復(fù)。

TLS服務(wù)器回復(fù):你好,我也支持1.2版本,那我們就使用xx認(rèn)證算法、xx加密算法、xx數(shù)據(jù)校驗(yàn)算法,我的隨機(jī)碼是xx,來實(shí)現(xiàn)安保措施,你看好嗎?

TLS大叔:沒問題啊,能出示一下你的證件(數(shù)字證書)嗎?

TLS服務(wù)器:okay,這是我的證件,請(qǐng)過目。

TLS大叔發(fā)現(xiàn)對(duì)方發(fā)過來的證書:

?


TLS大叔不放心,驗(yàn)證了下證書,過程如下:

1.?用DigiCert Global Root CA的公鑰解密證書Encryption Everywhere DV的簽名

作為一個(gè)權(quán)威CA,已經(jīng)被瀏覽器預(yù)先安裝在可信任根證書列表,那么我們信任該CA的一切,當(dāng)然包括其公鑰,在該證書里包含了明文的公鑰。

解開了,證明是該CA私鑰加密的,由于CA私鑰只有CA知道,證書有效,并信任Encryption Everywhere DV的公鑰。

2.?同樣原理用Encryption Everywhere DV的公鑰解密DigiCert Global Root CA的簽名。

如果上述2個(gè)步驟都成功了,就有了27server.zzz的公鑰。

3.?再檢查下證書的有效期,如果沒有過期,那么進(jìn)入下一個(gè)步驟。

TLS大叔用“27server.zzz“公鑰加密一段隨機(jī)的字符串,發(fā)送給TLS服務(wù)器。

TLS服務(wù)器用自己的私鑰解密,得到明文字符串。

至此,雙方分享了這個(gè)神秘的字符串,雙方還有早前分享的隨機(jī)碼(nonce),雙方使用同樣的算法,可以推導(dǎo)出相同的master key,進(jìn)而推導(dǎo)出session key、HMAC key。

Session Key用于加密/解密數(shù)據(jù), HMAC Key主要用于保護(hù)數(shù)據(jù)的完整性,以防被第三方篡改。

整個(gè)TLS溝通過程就算完成了,TLS大叔把瀏覽器扔給自己的包裹,外面加了一層保險(xiǎn)箱,密碼鎖(session key)只有TLS大叔、TLS服務(wù)器知道。

然后TLS大叔把包裹給了TCP小哥,TCP小哥看了下包裹,沒啥兩樣,就是收件人的門牌號(hào)從80變成了443。

包裹到達(dá)后,443門牌號(hào)的門衛(wèi)是TLS服務(wù)器,TLS服務(wù)器用自己的密碼打開了包裹,包裹里有個(gè)小紙條,上面寫著“Application Data =http”,知道這是http的東西,于是轉(zhuǎn)手又讓nginx老大爺把包裹送到 xxx.27server.zzz的房間。

?

八 CDN(內(nèi)容分發(fā)網(wǎng)絡(luò))原理

這回nginx老大爺一看index.php不在家,但是留了個(gè)字條,說對(duì)方如果要圖片這些靜態(tài)資源,那么直接給他,如果要找我們,請(qǐng)到IP地址:5.6.7.8來找我。沒辦法,nginx老大爺又委托TLS大叔跟對(duì)方的服務(wù)器5.6.7.8的TLS對(duì)接了下,商量下包裹加密,又TCP/IP快遞公司,把包裹寄到了5.6.7.8的443門牌,送給了index.php。index.php發(fā)現(xiàn)需要主頁,這需要進(jìn)行計(jì)算。于是找來了php家族,計(jì)算完了又把主頁打包成了html樣式,返回給了chrome。

chrome收到了html樣式的包裹,這是一種標(biāo)記語言,需要經(jīng)過解釋才能把原來的頁面還原出來。

于是chrome又埋頭計(jì)算,終于通過里面寫的規(guī)則,把圖片文字拼拼湊湊,拼成了一個(gè)完整的頁面,展示給了小明。

?

小明怎么也不會(huì)想到,按下了一次回車,在后臺(tái)居然觸發(fā)了這么大的計(jì)算量。。。

?對(duì)于以上的內(nèi)容,這里我們用稍微專業(yè)點(diǎn)的語言解釋一下:

訪問網(wǎng)址,首先通過域名查詢IP地址。

瀏覽器會(huì)先查詢hosts文件,然后查詢內(nèi)存中是否有對(duì)應(yīng)的DNS緩存。如果電腦連接路由器上網(wǎng),而DNS又是自動(dòng)獲取的話,DNS服務(wù)器就會(huì)被指定為路由器(局域網(wǎng)網(wǎng)關(guān)),如果局域網(wǎng)中沒人訪問過這個(gè)地址,那么在路由器的內(nèi)存中不會(huì)存在這條DNS解析記錄。于是又往上查找各層級(jí)的DNS服務(wù)器,從家里到區(qū),到城市的DNS服務(wù)器,能不能找到緩存,取決于這個(gè)區(qū)域有沒有人訪問過這個(gè)域名。一直查到最上層,如果都沒有找到的話,就會(huì)請(qǐng)求根域名服務(wù)器,從找到com域名服務(wù)器地址,再從com上找到27server二級(jí)域名服務(wù)器地址….以此類推,最終找到完整域名的服務(wù)器地址。

找到地址后,是一個(gè)CNAME形式,解析到了阿里云CDN的DNS服務(wù)器上,阿里云的DNS服務(wù)器又通過用戶的訪問IP判斷出用戶的地理位置,返回最靠近用戶的CDN服務(wù)器地址。CDN通俗點(diǎn)說,就是把你的網(wǎng)站資源鏡像到全國各地的服務(wù)器上,從而實(shí)現(xiàn)不同地區(qū)用戶的訪問加速。

用戶通過這兩層DNS查詢后,得到了離自己最近的CDN服務(wù)器地址,訪問這個(gè)地址,CDN服務(wù)器根據(jù)配置的緩存規(guī)則,返回了靜態(tài)資源,其他則通過訪問源服務(wù)器進(jìn)行返回(CDN回源)。

因?yàn)閷?duì)應(yīng)27server.zzz這個(gè)地址,我只放了一個(gè)index.html。訪問這個(gè)頁面,會(huì)自動(dòng)跳轉(zhuǎn)到?ccccc://xxx.27server.zzz。瀏覽器訪問27server.zzz后,又繼續(xù)訪問ccccc://xxx.27server.zzz,此時(shí)通過兩次DNS查詢,CDN返回圖片,js,css等靜態(tài)資源,然后php的內(nèi)容則通過CDN回源,源服務(wù)器的php計(jì)算后,轉(zhuǎn)化為html樣式,返回給訪問者。

?

你對(duì) 27server.zzz的一次訪問,一共觸發(fā)了4次完整的DNS查詢,1次www強(qiáng)行跳轉(zhuǎn),1次https強(qiáng)行跳轉(zhuǎn),1次CDN回源,2次CDN地址解析,更有數(shù)不清的資源文件從各個(gè)地方被傳輸?shù)搅四愕碾娔X。這些都是通過TCP的三次握手協(xié)議,網(wǎng)關(guān),ARP,UDP,nginx,CDN,DNS服務(wù)器聯(lián)合工作。

我是艾西,今天的分享就到這里啦希望對(duì)有需要的小伙伴有幫助我們下期見

擁有一臺(tái)服務(wù)器可以做很多有趣的事情!

?

?


當(dāng)你在瀏覽器中輸入了網(wǎng)址訪問時(shí)產(chǎn)生了哪些技術(shù)步驟的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
南木林县| 彭阳县| 陆川县| 阿图什市| 河北区| 杭锦旗| 大埔县| 太白县| 淮阳县| 镇安县| 博客| 临夏县| 贡觉县| 景东| 来宾市| 大荔县| 土默特右旗| 襄城县| 丹寨县| 宁陕县| 平遥县| 易门县| 南康市| 左云县| 普兰店市| 吉安县| 临邑县| 自贡市| 香格里拉县| 布尔津县| 深州市| 海丰县| 黑山县| 临潭县| 焦作市| 北票市| 葫芦岛市| 房产| 黑龙江省| 雷州市| 潼关县|