1硼身、URL是什么
全稱URL(uniform resource locator),即統(tǒng)一資源定位符覆享。
統(tǒng)一資源定位符是對可以從互聯(lián)網(wǎng)上得到的資源的位置和訪問方法的一種簡潔的表示佳遂,是互聯(lián)網(wǎng)上標準資源的地址∪龆伲互聯(lián)網(wǎng)上的每個文件都有一個唯一的URL丑罪,它包含的信息指出文件的位置以及瀏覽器應(yīng)該怎么處理它。
它最初是由蒂姆·伯納斯·李發(fā)明用來作為萬維網(wǎng)的地址『苏海現(xiàn)在它已經(jīng)被萬維網(wǎng)聯(lián)盟編制為互聯(lián)網(wǎng)標準RFC1738了巍糯。
2、URL的結(jié)構(gòu)
基本URL包含模式(或稱協(xié)議)客扎、服務(wù)器名稱(或IP地址)祟峦、路徑和文件名。
- 第一部分:模式/協(xié)議:它告訴瀏覽器如何處理將要打開的文件徙鱼。我偶們最常用的就是http宅楞,除此之外還有常用的在本地電腦打開文件的file協(xié)議针姿,等等。
- 第二部分:文件所在的服務(wù)器的名稱或IP地址厌衙,后面是到達這個文件的路徑和文件本身的名稱距淫。服務(wù)器的名稱或IP地址后面有時還跟一個冒號和一個端口號,它也可以包含接觸服務(wù)器必須的用戶名稱和密碼婶希。路徑部分包含等級結(jié)構(gòu)的路徑定義榕暇,一般來說不同部分之間以斜線(/)分隔。詢問部分一般用來傳送對服務(wù)器上的數(shù)據(jù)庫進行動態(tài)詢問時所需要的參數(shù)喻杈。
3彤枢、輸入url到頁面返回的全過程(簡寫)
我們輸入一個域名:[www.baidu.com](http://www.baidu.com/)
瀏覽器查找瀏覽器緩存,如果有域名的IP地址則返回筒饰,如果沒有繼續(xù)查找缴啡;
系統(tǒng)查找系統(tǒng)緩存,如果有域名的IP地址則返回瓷们,如果沒有繼續(xù)查找业栅;
路由器查找路由器緩存,如果有域名的IP地址則返回谬晕,如果沒有繼續(xù)查找碘裕;
本地域名服務(wù)器采用迭代查詢,它先向一個根域名服務(wù)器查詢固蚤;
根域名服務(wù)器告訴本地域名服務(wù)器娘汞,下一次應(yīng)查詢的頂級域名服務(wù)器dns.com的IP地址;
本地域名服務(wù)器向頂級域名服務(wù)器dns.com進行查詢夕玩;
頂級域名服務(wù)器dns.com告訴本地域名服務(wù)器,下一次應(yīng)查詢的權(quán)限域名服務(wù)器dns.baidu.com的IP地址惊豺;
本地域名服務(wù)器向權(quán)限域名服務(wù)器dns.baidu.com進行查詢燎孟;
- 權(quán)限域名服務(wù)器dns.baidu.com告訴本地域名服務(wù)器,所查詢的主機www.baidu.com的IP地址尸昧;
- 本地域名服務(wù)器最后把查詢結(jié)果告訴主機揩页;
- 主機瀏覽器獲取到Web服務(wù)器的IP地址后,與服務(wù)器建立TCP連接烹俗;
- 瀏覽器所在的客戶機向服務(wù)器發(fā)出連接請求報文爆侣;
- 服務(wù)器接收報文后,同意建立連接幢妄,向客戶機發(fā)出確認報文兔仰;
- 客戶機接收到確認報文后,再次向服務(wù)器發(fā)出報文蕉鸳,確認已接收到確認報文乎赴;
- 此處客戶機與服務(wù)器之間的TCP連接建立完成忍法,開始通信;
- 瀏覽器發(fā)出取文件命令:GET榕吼;
- 服務(wù)器給出響應(yīng)饿序,將指定文件發(fā)送給瀏覽器;
- 瀏覽器釋放TCP連接羹蚣;
- 瀏覽器所在主機向服務(wù)器發(fā)出連接釋放報文原探,然后停止發(fā)送數(shù)據(jù);
- 服務(wù)器接收到釋放報文后發(fā)出確認報文顽素,然后將服務(wù)器上未傳送完的數(shù)據(jù)發(fā)送完踢匣;
- 服務(wù)器數(shù)據(jù)傳輸完畢后,向客戶機發(fā)送連接釋放報文戈抄;
- 客戶機接收到報文后离唬,發(fā)出確認,然后等待一段時間后划鸽,釋放TCP連接输莺;
- 瀏覽器顯示頁面中所有文本。
4裸诽、輸入url到頁面返回的全過程(詳細)
因為覺得寫得很好很清晰嫂用,此處引用同學的答案
第一步、在本地DNS緩存和hosts文件查找對應(yīng)ip
在本地DNS緩存中查找域名對應(yīng)ip瀏覽器和操作系統(tǒng)在獲取網(wǎng)站域名的實際IP地址后會對其IP進行緩存丈冬,在短時間內(nèi)重復訪問同一域名時嘱函,會直接在DNS緩存中讀取域名對應(yīng)的IP地址,以減少網(wǎng)絡(luò)請求的損耗(先在瀏覽器DNS緩存中查找埂蕊,如果沒有找到往弓,則會在操作系統(tǒng)DNS緩存中查找)。瀏覽器和操作系統(tǒng)都有一個固定的DNS緩存時間蓄氧,其中Chrome的過期時間是1分鐘函似,在這個期限內(nèi)不會重新請求DNS。2喉童、查詢hosts文件如果在本地DNS緩存中沒有找到域名對應(yīng)的IP地址撇寞,則會查詢hosts文件,看其中是否已經(jīng)有與當前域名對應(yīng)的 IP 地址堂氯,如果有就會直接采用蔑担,如果沒有,那么就得由DNS服務(wù)器進行域名解析完成域名與IP的轉(zhuǎn)換工作咽白。
第二步啤握、域名解析
DNS域名系統(tǒng)DNS(Domain Name System):用來把人們使用的域名轉(zhuǎn)換為IP地址的系統(tǒng)。它是一個聯(lián)機分布式數(shù)據(jù)庫系統(tǒng)局扶,采用客戶服務(wù)器方式恨统。2叁扫、DNS解析域名到IP地址的解析:當瀏覽器需要把域名解析為IP地址時,會調(diào)用解析程序畜埋,并成為DNS的一個客戶莫绣,把帶解析的域名放在DNS請求報文中,以UDP用戶數(shù)據(jù)報方式發(fā)送給本地域名服務(wù)器可以是路由器或者是運營商服務(wù)器)悠鞍。本地域名服務(wù)器在查找域名后对室,把對應(yīng)的IP地址放在回答報文中返回。瀏覽器在獲取相應(yīng)的IP地址后即可進行下一步的通信咖祭。
第三步掩宜、瀏覽器發(fā)送請求給服務(wù)器
當瀏覽器得到域名對應(yīng)的IP地址后,則會使用TCP協(xié)議么翰,和服務(wù)器建立連接(三次握手)牺汤。2、和服務(wù)器建立連接后浩嫌,瀏覽器則會使用相關(guān)協(xié)議(http或https)檐迟,向服務(wù)器發(fā)送請求。3码耐、HTTP協(xié)議請求方法主要有:get追迟、post、put骚腥、delete等幾種方式敦间。
第四步、服務(wù)器請求并返回結(jié)果
服務(wù)器上的web server來處理這些請求束铭。以MVC框架為例廓块,當服務(wù)器收到來自用戶的請求后,首先Controller(控制器)根據(jù)用戶的請求調(diào)用相應(yīng)的Model(模型)去處理用戶請求相關(guān)的業(yè)務(wù)邏輯(包括對數(shù)據(jù)庫的增刪改查)纯露,然后將處理結(jié)果傳遞給對應(yīng)的View(視圖)剿骨,構(gòu)造顯示頁面(HTML文件)。最后服務(wù)器使用HTTP響應(yīng)返回相應(yīng)的資源(HTML文件)埠褪。
第五步、瀏覽器處理響應(yīng)
瀏覽器收到來自服務(wù)器的響應(yīng)后挤庇,會將響應(yīng)中的HTML字符串一句句讀取解析钞速,解析到link標簽后重新發(fā)送請求下載css文件,解析到script標簽后重新發(fā)送請求下載js文件嫡秕,并執(zhí)行代碼渴语,解析到img標簽后重新發(fā)送請求獲取圖片資源。