1>瀏覽器向服務(wù)器發(fā)送請(qǐng)求報(bào)文
http:/www/baidu.com:80/login.aspx
- 第一步:根據(jù)這個(gè)www/baidu.com的域名來(lái)找DNS服務(wù)器酝枢,解析成對(duì)應(yīng)的IP地址赔桌。
- 第二步:瀏覽器解析到IP地址后,對(duì)指定的URL進(jìn)行HTTP封裝额划,把URL封裝成http報(bào)文妙啃。
- 第三步:瀏覽器把URL封裝成HTTP報(bào)文后,將這個(gè)HTTP請(qǐng)求報(bào)文發(fā)送到服務(wù)器俊戳。(注:瀏覽器是如何把http請(qǐng)求報(bào)文發(fā)送到服務(wù)器的呢揖赴? 答案:瀏覽器會(huì)在內(nèi)部建立一個(gè)Socket對(duì)象,把http請(qǐng)求報(bào)文轉(zhuǎn)變成byet[]字節(jié)抑胎,然后調(diào)用Socket.Sent()方法把這些數(shù)據(jù)發(fā)送到服務(wù)器的)
2>服務(wù)器向?yàn)g覽器響應(yīng)
在服務(wù)器端:
- 第一步:服務(wù)器獲取到瀏覽器發(fā)送過(guò)來(lái)的HTTP請(qǐng)求報(bào)文
(注:服務(wù)器是如何獲取到瀏覽器發(fā)送過(guò)來(lái)的HTTP請(qǐng)求報(bào)文的呢燥滑?答案:服務(wù)器也是通過(guò)Socket.Receive()方法接收到了瀏覽器發(fā)送過(guò)來(lái)的http請(qǐng)求報(bào)文數(shù)據(jù)) - 第二步:服務(wù)器對(duì)接收到的http請(qǐng)求報(bào)文數(shù)據(jù)進(jìn)行處理:
1> 先解析http請(qǐng)求報(bào)文
2> 根據(jù)解析好的http報(bào)文,在服務(wù)器端查找用戶請(qǐng)求的資源(如果瀏覽器請(qǐng)求的是靜態(tài)資源阿逃,則服務(wù)器直接通過(guò)文件操作讀取這些資源然后把資源通過(guò)調(diào)用服務(wù)器端socket的send()方法直接發(fā)送給瀏覽器铭拧,如果瀏覽器請(qǐng)求的是動(dòng)態(tài)網(wǎng)頁(yè),則web服務(wù)器會(huì)調(diào)用對(duì)于的.NET FreameWork來(lái)執(zhí)行對(duì)應(yīng)的動(dòng)態(tài)網(wǎng)頁(yè)中的代碼恃锉,執(zhí)行完畢后生成的HTML代碼再通過(guò)調(diào)用Socket.Sent()發(fā)送給瀏覽器)
3>瀏覽器解析渲染服務(wù)器響應(yīng)的報(bào)文(HTML代碼)
瀏覽器端:
瀏覽器通過(guò)Socket.Receive()方法收到服務(wù)器發(fā)送過(guò)來(lái)的HTML代碼搀菩,然后對(duì)這些HTML代碼進(jìn)行渲染。
瀏覽器怎么解析這些HTML代碼呢破托?答案:瀏覽器接收到服務(wù)器發(fā)送過(guò)來(lái)的html代碼肪跋,然后瀏覽器會(huì)對(duì)這些HTML代碼從上到下一句一句的解析。
- 遇到一些標(biāo)簽土砂,比如<div>州既,<a> ,<span> ,<p>等標(biāo)簽萝映,瀏覽器會(huì)調(diào)用渲染引擎對(duì)這些標(biāo)簽進(jìn)行渲染易桃,然后把結(jié)果顯示到頁(yè)面。
-
遇到語(yǔ)義解釋性的標(biāo)簽嵌入文件(image,JS腳本锌俱,CSS樣式)例如:遇到
的時(shí)候?yàn)g覽器會(huì)首先顯示一個(gè)圖片的框(窗口)晤郑,如果img標(biāo)簽里設(shè)置了寬度和高度,它會(huì)立即將這個(gè)框(窗口)的大小給固定,如果沒(méi)有寬度和高度造寝,就顯示一個(gè)小的默認(rèn)大小的的框(窗口)磕洪,然后再次通過(guò)Socket向服務(wù)器發(fā)送請(qǐng)求報(bào)文,來(lái)請(qǐng)求123.png這張圖片诫龙,請(qǐng)求到123.png這張圖片后析显,如果img之前沒(méi)有設(shè)置過(guò)寬度和高度,這個(gè)時(shí)候才重新渲染它 的高度和寬度签赃,如果img之前已經(jīng)設(shè)置過(guò)高度和寬度了谷异,這時(shí)候只要把123.png這張圖片填到框里就可以了。
- 遇到 <link href="StyleSheet1.css" rel="stylesheet" />的時(shí)候?yàn)g覽器會(huì)再次通過(guò)Socket向服務(wù)器發(fā)送請(qǐng)求報(bào)文锦聊,來(lái)請(qǐng)求這個(gè)StyleSheet1.css文件
- 遇到<script src="jquery-1.11.2.js"></script>的時(shí)候歹嘹,瀏覽器又會(huì)像服務(wù)器發(fā)送請(qǐng)求報(bào)文,來(lái)請(qǐng)求這個(gè)jquery-1.11.2.js文件