網(wǎng)站開發(fā)知識要點(diǎn):打開全過程,從輸入url到頁面打開的過程
發(fā)布時(shí)間:2024-12-27 10:57:40 瀏覽次數(shù):2394
一、輸入地址
當(dāng)我們開始在瀏覽器中輸入網(wǎng)址的時(shí)候,瀏覽器其實(shí)就已經(jīng)在智能的匹配可能得url了,他會從歷史記錄,書簽等地方,找到已經(jīng)輸入的字符串可能對應(yīng)的url,然后給出智能提示,讓你可以補(bǔ)全url地址。對于 google的chrome 的瀏覽器,他甚至?xí)苯訌木彺嬷邪丫W(wǎng)頁展示出來,就是說,你還沒有按下 enter,頁面就出來了。
二、瀏覽器查找域名的 IP 地址
1、請求一旦發(fā)起,瀏覽器首先要做的事情就是解析這個(gè)域名,一般來說,瀏覽器會首先查看本地硬盤的 hosts 文件,看看其中有沒有和這個(gè)域名對應(yīng)的規(guī)則,如果有的話就直接使用 hosts 文件里面的 ip 地址。
2、如果在本地的 hosts 文件沒有能夠找到對應(yīng)的 ip 地址,瀏覽器會發(fā)出一個(gè)DNS請求到本地的DNS服務(wù)器 。本地DNS服務(wù)器一般都是你的網(wǎng)絡(luò)接入服務(wù)器商提供,比如中國電信,中國移動。
3、查詢你輸入的網(wǎng)站開發(fā)的網(wǎng)址的DNS請求到達(dá)本地DNS服務(wù)器之后,本地DNS服務(wù)器會首先查詢它的緩存記錄,如果緩存中有此條記錄,就可以直接返回結(jié)果,此過程是遞歸的方式進(jìn)行查詢。如果沒有,本地DNS服務(wù)器還要向DNS根服務(wù)器進(jìn)行查詢。
4、根DNS服務(wù)器沒有記錄具體的域名和IP地址的對應(yīng)關(guān)系,而是告訴本地DNS服務(wù)器,你可以到域服務(wù)器上去繼續(xù)查詢,并給出域服務(wù)器的地址。這種過程是迭代的過程。
5、本地DNS服務(wù)器繼續(xù)向域服務(wù)器發(fā)出請求,在這個(gè)例子中,請求的對象是.com域服務(wù)器。.com域服務(wù)器收到請求之后,也不會直接返回域名和IP地址的對應(yīng)關(guān)系,而是告訴本地DNS服務(wù)器,你的域名的解析服務(wù)器的地址。
6、最后,本地DNS服務(wù)器向域名的解析服務(wù)器發(fā)出請求,這時(shí)就能收到一個(gè)域名和IP地址對應(yīng)關(guān)系,本地DNS服務(wù)器不僅要把IP地址返回給用戶電腦,還要把這個(gè)對應(yīng)關(guān)系保存在緩存中,以備下次別的用戶查詢時(shí),可以直接返回結(jié)果,加快網(wǎng)絡(luò)訪問。
—知識擴(kuò)展—
1.什么是DNS?
DNS(Domain Name System,域名系統(tǒng)),因特網(wǎng)上作為域名和IP地址相互映射的一個(gè)分布式數(shù)據(jù)庫,能夠使用戶更方便的訪問互聯(lián)網(wǎng),而不用去記住能夠被機(jī)器直接讀取的IP數(shù)串。通過主機(jī)名,最終得到該主機(jī)名對應(yīng)的IP地址的過程叫做域名解析(或主機(jī)名解析)。
通俗的講,我們更習(xí)慣于記住一個(gè)網(wǎng)站的名字,比如www.baidu.com,而不是記住它的ip地址,比如:167.23.10.2。而計(jì)算機(jī)更擅長記住網(wǎng)站的ip地址,而不是像www.baidu.com等鏈接。因?yàn)椋珼NS就相當(dāng)于一個(gè)電話本,比如你要找www.baidu.com這個(gè)域名,那我翻一翻我的電話本,我就知道,哦,它的電話(ip)是167.23.10.2。
2.DNS查詢的兩種方式:遞歸查詢和迭代查詢
1、遞歸解析
4.DNS負(fù)載均衡
當(dāng)一個(gè)網(wǎng)站有足夠多的用戶網(wǎng)站開發(fā)的時(shí)候,假如每次請求的資源都位于同一臺機(jī)器上面,那么這臺機(jī)器隨時(shí)可能會蹦掉。處理辦法就是用DNS負(fù)載均衡技術(shù),它的原理是在DNS服務(wù)器中為同一個(gè)主機(jī)名配置多個(gè)IP地址,在應(yīng)答DNS查詢時(shí),DNS服務(wù)器對每個(gè)查詢將以DNS文件中主機(jī)記錄的IP地址按順序返回不同的解析結(jié)果,將客戶端的訪問引導(dǎo)到不同的機(jī)器上去,使得不同的客戶端訪問不同的服務(wù)器,從而達(dá)到負(fù)載均衡的目的?例如可以根據(jù)每臺機(jī)器的負(fù)載量,該機(jī)器離用戶地理位置的距離等等。
三、瀏覽器向 web 服務(wù)器發(fā)送一個(gè) HTTP 請求
拿到域名對應(yīng)的IP地址之后,瀏覽器會以一個(gè)隨機(jī)端口(1024<端口<65535)向服務(wù)器的WEB程序(常用的有httpd,nginx等)80端口發(fā)起TCP的連接請求。這個(gè)連接請求到達(dá)服務(wù)器端后(這中間通過各種路由設(shè)備,局域網(wǎng)內(nèi)除外),進(jìn)入到網(wǎng)卡,然后是進(jìn)入到內(nèi)核的TCP/IP協(xié)議棧(用于識別該連接請求,解封包,一層一層的剝開),還有可能要經(jīng)過Netfilter防火墻(屬于內(nèi)核的模塊)的過濾,最終到達(dá)WEB程序,最終建立了TCP/IP的連接。
當(dāng)局部DNS服務(wù)器自己不能回答客戶機(jī)的DNS查詢時(shí),它就需要向其他DNS服務(wù)器進(jìn)行查詢。此時(shí)有兩種方式,如圖所示的是遞歸方式。局部DNS服務(wù)器自己負(fù)責(zé)向其他DNS服務(wù)器進(jìn)行查詢,一般是先向該域名的根域服務(wù)器查詢,再由根域名服務(wù)器一級級向下查詢。最后得到的查詢結(jié)果返回給局部DNS服務(wù)器,再由局部DNS服務(wù)器返回給客戶端。
2、迭代解析
當(dāng)局部DNS服務(wù)器自己不能回答客戶機(jī)的DNS查詢時(shí),也可以通過迭代查詢的方式進(jìn)行解析,如圖所示。局部DNS服務(wù)器不是自己向其他DNS服務(wù)器進(jìn)行查詢,而是把能解析該域名的其他DNS服務(wù)器的IP地址返回給客戶端DNS程序,客戶端DNS程序再繼續(xù)向這些DNS服務(wù)器進(jìn)行查詢,直到得到查詢結(jié)果為止。也就是說,迭代解析只是幫你找到相關(guān)的服務(wù)器而已,而不會幫你去查。比如說:baidu.com的服務(wù)器ip地址在192.168.4.5這里,你自己去查吧,本人比較忙,只能幫你到這里了。
3.DNS域名稱空間的組織方式
我們在前面有說到根DNS服務(wù)器,域DNS服務(wù)器,這些都是DNS域名稱空間的組織方式。按其功能命名空間中用來描述 DNS 域名稱的五個(gè)類別的介紹詳見下表中,以及與每個(gè)名稱類型的示例
