日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 前端技术 > HTML >内容正文

HTML

web前端常识之浏览器原理

發(fā)布時(shí)間:2025/4/14 HTML 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 web前端常识之浏览器原理 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、HTTP協(xié)議定義

URL的組成

例如:http://www.alimama.com/membersvc/index.htm。它的含義如下:

  • http://:代表超文本傳輸協(xié)議,通知baidu.com服務(wù)器顯示W(wǎng)eb頁(yè),通常不用輸入;
  • www:代表一個(gè)Web(萬(wàn)維網(wǎng))服務(wù)器;
  • alimama.com/:這是裝有網(wǎng)頁(yè)的服務(wù)器的域名,或站點(diǎn)服務(wù)器的名稱(chēng);
  • membersvc/:為該服務(wù)器上的子目錄,就好像我們的文件夾;
  • index.htm:index.htm是文件夾中的一個(gè)HTML文件(網(wǎng)頁(yè))。

HTTP 協(xié)議的基本特點(diǎn):

  • 支持客戶 / 服務(wù)器模式。
  • 簡(jiǎn)單快速 : 客戶向服務(wù)器請(qǐng)求服務(wù)時(shí) , 只需傳送請(qǐng)求方法和路徑 。 請(qǐng)求方法常用的有 GET 、 POST 。 每種方法規(guī)定了客戶與服務(wù)器聯(lián)系的類(lèi)型不同 。 由于 HTTP 協(xié)議簡(jiǎn)單 , 使得 HTTP 服務(wù)器的程序規(guī)模小,因而通信速度很快。
  • 靈活: HTTP 允許傳輸任意類(lèi)型的數(shù)據(jù)對(duì)象。正在傳輸?shù)念?lèi)型由 Content-Type 加以標(biāo)記。
  • 無(wú)連接 : 無(wú)連接的含義是限制每次連接只處理一個(gè)請(qǐng)求 。 服務(wù)器處理完客戶的請(qǐng)求 , 并收到客戶的應(yīng)答后,即斷開(kāi)連接。采用這種方式可以節(jié)省傳輸時(shí)間。
  • 無(wú)狀態(tài): HTTP 協(xié)議是無(wú)狀態(tài)協(xié)議。無(wú)狀態(tài)是指協(xié)議對(duì)于事務(wù)處理沒(méi)有記憶能力。缺少狀態(tài)意味著如果后續(xù)處理需要前面的信息,則它必須重傳,這樣可能導(dǎo)致每次連接傳送的數(shù)據(jù)量增大。另一方面 , 在服務(wù)器不需要先前信息時(shí)它的應(yīng)答就較快。

Internet的基本協(xié)議是TCP/IP協(xié)議,然而在TCP/IP模型最上層的是應(yīng)用層(Application layer),它包含所有高層的協(xié)議。高層協(xié)議有:文件傳輸協(xié)議FTP、電子郵件傳輸協(xié)議SMTP、域名系統(tǒng)服務(wù)DNS、網(wǎng)絡(luò)新聞傳輸協(xié)議NNTP和HTTP協(xié)議等。

HTTP協(xié)議(HyperText Transfer Protocol,超文本傳輸協(xié)議)是用于從WWW服務(wù)器傳輸超文本到本地瀏覽器的傳送協(xié)議。它可以使瀏覽器更加高效,使網(wǎng)絡(luò)傳輸減少。它不僅保證計(jì)算機(jī)正確快速地傳輸超文本文檔,還確定傳輸文檔中的哪一部分,以及哪部分內(nèi)容首先顯示(如文本先于圖形)等。

二、HTTP協(xié)議通信過(guò)程

當(dāng)我們?cè)跒g覽器的地址欄輸入“www.baidu.com”然后按回車(chē),這之后發(fā)生了什么事,我們直接看到的是打開(kāi)了對(duì)應(yīng)的網(wǎng)頁(yè),那么內(nèi)部客戶端和服務(wù)端是如何通信的呢?

基于HTTP協(xié)議的客戶/服務(wù)器模式的信息交換過(guò)程,它分四個(gè)過(guò)程:建立連接、發(fā)送請(qǐng)求信息、發(fā)送響應(yīng)信息、關(guān)閉連接。

  • URL自動(dòng)解析?HTTP URL包含了用于查找某個(gè)資源的足夠信息,基本格式如下:HTTP://host[“:”port][abs_path],其中HTTP表示桶蓋HTTP協(xié)議來(lái)定位網(wǎng)絡(luò)資源;host表示合法的主機(jī)域名或IP地址,port指定一個(gè)端口號(hào),缺省80;abs_path指定請(qǐng)求資源的URI;如果URL中沒(méi)有給出abs_path,那么當(dāng)它作為請(qǐng)求URI時(shí),必須以“/”的形式給出,通常這個(gè)工作瀏覽器自動(dòng)幫我們完成。例如:輸入www.taobao.com;瀏覽器會(huì)自動(dòng)轉(zhuǎn)換成:http://www.taobao.com/
  • 獲取IP,建立TCP連接?瀏覽器地址欄中輸入”HTTP://www.xxx.com/”并提交之后,首先它會(huì)在DNS本地緩存表中查找,如果有則直接告訴IP地址。如果沒(méi)有則要求網(wǎng)關(guān)DNS進(jìn)行查找,如此下去,找到對(duì)應(yīng)的IP后,則返回會(huì)給瀏覽器。當(dāng)獲取IP之后,就開(kāi)始與所請(qǐng)求的Tcp建立三次握手連接,連接建立后,就向服務(wù)器發(fā)出HTTP請(qǐng)求。
  • 客戶端瀏覽器向服務(wù)器發(fā)出HTTP請(qǐng)求?一旦建立了TCP連接,Web瀏覽器就會(huì)向Web服務(wù)器發(fā)送請(qǐng)求命令,接著以報(bào)頭信息的形式向Web服務(wù)器發(fā)送一些別的信息,之后瀏覽器發(fā)送了一空白行來(lái)通知服務(wù)器,它已經(jīng)結(jié)束了該頭信息的發(fā)送。http請(qǐng)求由三部分組成,分別是:請(qǐng)求行、消息報(bào)頭、請(qǐng)求正文。
  • Web服務(wù)器應(yīng)答,并向?yàn)g覽器發(fā)送數(shù)據(jù)?客戶機(jī)向服務(wù)器發(fā)出請(qǐng)求后,服務(wù)器會(huì)客戶機(jī)回送應(yīng)答,HTTP/1.1 200 OK應(yīng)答的第一部分是協(xié)議的版本號(hào)和應(yīng)答狀態(tài)碼,正如客戶端會(huì)隨同請(qǐng)求發(fā)送關(guān)于自身的信息一樣,服務(wù)器也會(huì)隨同應(yīng)答向用戶發(fā)送關(guān)于它自己的數(shù)據(jù)及被請(qǐng)求的文檔。Web服務(wù)器向?yàn)g覽器發(fā)送頭信息后,它會(huì)發(fā)送一個(gè)空白行來(lái)表示頭信息的發(fā)送到此為結(jié)束,接著,它就以Content-Type應(yīng)答頭信息所描述的格式發(fā)送用戶所請(qǐng)求的實(shí)際數(shù)據(jù)
  • Web服務(wù)器關(guān)閉TCP連接?一般情況下,一旦Web服務(wù)器向?yàn)g覽器發(fā)送了請(qǐng)求數(shù)據(jù),它就要關(guān)閉TCP連接,然后如果瀏覽器或者服務(wù)器在其頭信息加入了這行代碼Connection:keep-aliveTCP連接在發(fā)送后將仍然保持打開(kāi)狀態(tài),于是,瀏覽器可以繼續(xù)通過(guò)相同的連接發(fā)送請(qǐng)求。保持連接節(jié)省了為每個(gè)請(qǐng)求建立新連接所需的時(shí)間,還節(jié)約了網(wǎng)絡(luò)帶寬。
  • 四、實(shí)例分析HTTP通信

    先介紹一個(gè)工具,HTTP Analyzer ,為一款實(shí)時(shí)分析 HTTP/HTTPS 數(shù)據(jù)流的工具。它可以實(shí)時(shí)捕捉HTTP/HTTPS 協(xié)議數(shù)據(jù),可以顯示許多信息(包括:文件頭、內(nèi)容、Cookie、查詢字符竄、提交的數(shù)據(jù)、重定向的URL地址),可以提供緩沖區(qū)信息、清理對(duì)話內(nèi)容、HTTP狀態(tài)信息和其他過(guò)濾選項(xiàng)。同時(shí)還是一個(gè)非常有用的分析、調(diào)試和診斷的開(kāi)發(fā)工具。

    下面我們?cè)L問(wèn)http://www.google.cn/ ,HTTP analyzer將抓包來(lái)分析訪問(wèn)瀏覽器和服務(wù)器通信的過(guò)程。
    1、 運(yùn)行HTTP Analyzer,選擇菜單Action—start開(kāi)始抓包;
    2、 瀏覽器中輸入 http://www.google.cn/,網(wǎng)頁(yè)打開(kāi)后,在HTTP Analyzer中選擇Action—stop停止抓包;工具已經(jīng)詳細(xì)列出了訪問(wèn)的數(shù)據(jù)包信息。通過(guò)截圖見(jiàn)到了解下抓包信息。

    抓包結(jié)果和文件頭信息(下圖)

    一次請(qǐng)求的html正文內(nèi)容(下圖)

    本次請(qǐng)求是否存在cookies信息(下圖)

    一次請(qǐng)求的整個(gè)數(shù)據(jù)包信息,包括頭信息和正文(下圖)。

    你會(huì)發(fā)現(xiàn)瀏覽器中只點(diǎn)擊了一個(gè)超級(jí)鏈接,卻發(fā)送了多個(gè)數(shù)據(jù)包。那是因?yàn)?我們請(qǐng)求的網(wǎng)頁(yè)文件中有很多圖片、音樂(lè)、電影等信息時(shí),服務(wù)器返回的信息中并不直接包含圖片數(shù)據(jù),而只是保存該圖片的鏈接,當(dāng)瀏覽器進(jìn)行解釋的時(shí)候,遇到圖片的url時(shí),才向服務(wù)器發(fā)出對(duì)圖片的請(qǐng)求信息。

    下面我們來(lái)詳細(xì)分析HTTP的請(qǐng)求和響應(yīng)信息:

    HTTP請(qǐng)求消息

    當(dāng)客戶端和服務(wù)端建立TCP連接后,客戶端就會(huì)向服務(wù)器發(fā)送一個(gè)請(qǐng)求信息。http 請(qǐng)求由三部分組成,分別是:請(qǐng)求行、消息報(bào)頭、請(qǐng)求正文,如:
    [1]GET / HTTP/1.1
    [2]Accept: image/gif, image/x-xbitmap, imag
    e/jpeg, image/pjpeg, application/x-shockwave-flash, application/x-silverlight, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */* 客戶端可識(shí)別的內(nèi)容類(lèi)型列表。
    [3]Accept-Language: zh-cn 客戶端所能解釋的語(yǔ)言:簡(jiǎn)體中文
    [4]UA-CPU: x86
    [5]Accept-Encoding: gzip, deflate 客戶端可以解釋的類(lèi)型
    [6]User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Maxthon; EmbeddedWB 14.52 from: http://www.bsalsa.com/ EmbeddedWB 14.52; .NET CLR 2.0.50727; InfoPath.1; CIBA) 客戶端瀏覽器型號(hào)
    [7]Host: http://www.google.cn/ 提交請(qǐng)求頁(yè)面
    [8]Connection: Keep-Alive TCP連接保持打開(kāi)
    [9]

    該請(qǐng)求信息主要由4部分組成:
    請(qǐng)求方法URI協(xié)議/版本:以上代碼第[1]行“GET”表示請(qǐng)求方法,,“HTTP/1.1代表協(xié)議和協(xié)議的版本,HTTP請(qǐng)求可以使用多種請(qǐng)求方法,最常用的為GET和POST方法
    請(qǐng)求報(bào)頭:[2]-[8]行,包含許多有關(guān)客戶端環(huán)境和請(qǐng)求正文的有用信息。
    空行 :[9] 請(qǐng)求報(bào)頭和請(qǐng)求正文之間是一個(gè)空行,這個(gè)行非常重要,表示請(qǐng)求報(bào)頭已經(jīng)結(jié)束,接下來(lái)是正文,這個(gè)行非常重要,它表示請(qǐng)求報(bào)頭已經(jīng)結(jié)束,接下來(lái)是請(qǐng)求正文。
    請(qǐng)求正文:請(qǐng)求正文中可以包含客戶提交的查詢字符串信息,如用戶名和密碼等。這里沒(méi)有。

    這里有一點(diǎn)值得說(shuō)明的是:請(qǐng)求方法中的GET和POST方法;
    GET方法是默認(rèn)的HTTP請(qǐng)求方法,我們?nèi)粘S肎ET方法來(lái)提交表單數(shù)據(jù),然而用GET方法提交的表單數(shù)據(jù)只經(jīng)過(guò)了簡(jiǎn)單的編碼,同時(shí)它將作為URL的一部分向Web服務(wù)器發(fā)送,因此,如果使用GET方法來(lái)提交表單數(shù)據(jù)就存在著安全隱患上,同時(shí)這個(gè)URL長(zhǎng)度還有限制,不允許超過(guò)1k。

    POST方法是GET方法的一個(gè)替代方法,它主要是向Web服務(wù)器提交表單數(shù)據(jù),尤其是大批量的數(shù)據(jù)。POST方法克服了GET方法的一些缺點(diǎn)。通過(guò)POST方法提交表單數(shù)據(jù)時(shí),數(shù)據(jù)不是作為URL請(qǐng)求的一部分而是作為標(biāo)準(zhǔn)數(shù)據(jù)傳送給Web服務(wù)器,這就克服了GET方法中的信息無(wú)法保密和數(shù)據(jù)量太小的缺點(diǎn)。因此,出于安全的考慮以及對(duì)用戶隱私的尊重,通常表單提交時(shí)采用POST方法。

    HTTP響應(yīng)消息

    響應(yīng)跟請(qǐng)求類(lèi)似,HTTP 響應(yīng)也是由三個(gè)部分組成,分別是:狀態(tài)行、消息報(bào)頭、響應(yīng)正文,如:
    [1]HTTP/1.1 200 OK
    [2]Cache-Control: private, max-age=0
    [3]Date: Fri, 27 Feb 2009 07:53:36 GMT
    [4]Expires: -1
    [5]Content-Type: text/html; charset=UTF-8
    [6]Set-Cookie: PREF=ID=cc4a31ab6792ef2c:NW=1:TM=1235721216:LM=1235721216:S=q1hQBu-1KdamAWK-; expires=Sun, 27-Feb-2011 07:53:36 GMT; path=/; domain=.google.cn
    [7]Cont
    ent-Encoding: gzip
    [8]Server: gws
    [9]Transfer-Encoding: chunked
    [10]
    [11]ddc

    該響應(yīng)信息也以對(duì)應(yīng)的4部分組成:

    協(xié)議狀態(tài)描述,HTTP/1.1表示協(xié)議版本,200 OK表示服務(wù)器已經(jīng)成功處理了客戶端發(fā)出的請(qǐng)求。200表示HTTP的應(yīng)答碼成功。HTTP應(yīng)答碼由3位數(shù)字構(gòu)成,其中首位數(shù)字定義了應(yīng)答碼的類(lèi)型:
    1XX-信息類(lèi)(Information),表示收到Web瀏覽器請(qǐng)求,正在進(jìn)一步的處理中
    2XX-成功類(lèi)(Successful),表示用戶請(qǐng)求被正確接收,理解和處理例如:200 OK
    3XX-重定向類(lèi)(Redirection),表示請(qǐng)求沒(méi)有成功,客戶必須采取進(jìn)一步的動(dòng)作。
    4XX-客戶端錯(cuò)誤(Client Error),表示客戶端提交的請(qǐng)求有錯(cuò)誤 例如:404 NOT Found,意味著請(qǐng)求中所引用的文檔不存在。
    5XX-服務(wù)器錯(cuò)誤(Server Error)表示服務(wù)器不能完成對(duì)請(qǐng)求的處理:如 500

    響應(yīng)報(bào)頭:跟請(qǐng)求報(bào)頭一樣,它指出服務(wù)器的功能,標(biāo)識(shí)出響應(yīng)數(shù)據(jù)的細(xì)節(jié)。
    空行:也是屬于響應(yīng)報(bào)頭和響應(yīng)正文之間必須存在的一個(gè)空行,表示響應(yīng)報(bào)頭結(jié)束,接下來(lái)是響應(yīng)正文
    響應(yīng)正文:也就是服務(wù)器返回的網(wǎng)頁(yè)內(nèi)容。
    根據(jù)上文的描述,再結(jié)合工具實(shí)際驗(yàn)證一回,相信應(yīng)該能對(duì)HTTP協(xié)議和其通信流程有個(gè)大致的了解。

    五、擴(kuò)展知識(shí)

    高層協(xié)議有:文件傳輸協(xié)議 FTP 、電子郵件傳輸協(xié)議 SMTP 、域名系統(tǒng)服務(wù) DNS 、網(wǎng)絡(luò)新聞傳輸協(xié)議NNTP 和 HTTP 協(xié)議等。

    中介由三種:代理 (Proxy) 、網(wǎng)關(guān) (Gateway) 和通道 (Tunnel) ,一個(gè)代理根據(jù) URI 的絕對(duì)格式來(lái)接受請(qǐng)求,重寫(xiě)全部或部分消息,通過(guò) URI 的標(biāo)識(shí)把已格式化過(guò)的請(qǐng)求發(fā)送到服務(wù)器。網(wǎng)關(guān)是一個(gè)接收代理,作為一些其它服務(wù)器的上層,并且如果必須的話,可以把請(qǐng)求翻譯給下層的服務(wù)器協(xié)議。一個(gè)通道作為不改變消息的兩個(gè)連接之間的中繼點(diǎn) 。 當(dāng)通訊需要通過(guò)一個(gè)中介 ( 例如 : 防火墻等 ) 或者是中介不能識(shí)別消息的內(nèi)容時(shí),通道經(jīng)常被使用。

    • 代理 (Proxy):一個(gè)中間程序 , 它可以充當(dāng)一個(gè)服務(wù)器 , 也可以充當(dāng)一個(gè)客戶機(jī) , 為其它客戶機(jī)建立請(qǐng)求。請(qǐng)求是通過(guò)可能的翻譯在內(nèi)部或經(jīng)過(guò)傳遞到其它的 服務(wù)器中。一個(gè)代理在發(fā)送請(qǐng)求信息之前,必須解釋并且如果可能重寫(xiě)它 。 代理經(jīng)常作為通過(guò)防火墻的客戶機(jī)端的門(mén)戶 , 代理還可以作為一個(gè)幫助應(yīng)用來(lái)通過(guò)協(xié)議處理沒(méi)有被用戶代理完成的請(qǐng)求。
    • 網(wǎng)關(guān) (Gateway):一個(gè)作為其它服務(wù)器中間媒介的服務(wù)器。與代理不同的是,網(wǎng)關(guān)接受請(qǐng)求就好象對(duì)被請(qǐng)求的資源來(lái)說(shuō)它就是源服務(wù)器;發(fā)出請(qǐng)求的客戶機(jī)并沒(méi)有意識(shí)到它在同網(wǎng)關(guān)打交道。 網(wǎng)關(guān)經(jīng)常作為通過(guò)防火墻的服務(wù)器端的門(mén)戶 , 網(wǎng)關(guān)還可以作為一個(gè)協(xié)議翻譯器以便存取那些存儲(chǔ)在非HTTP 系統(tǒng)中的資源。
    • 通道 (Tunnel):是作為兩個(gè)連接中繼的中介程序。一旦激活,通道便被認(rèn)為不屬于 HTTP 通訊,盡管通道可能是被一 個(gè) HTT P 請(qǐng)求初始化的 。 當(dāng)被中繼的連接兩端關(guān)閉時(shí),通道便消失 。 當(dāng)一個(gè)門(mén)戶 (Portal)必須存在或中介 (Intermediary) 不能解釋中繼的通訊時(shí)通道被經(jīng)常使用。

    轉(zhuǎn)載于:https://www.cnblogs.com/hnrainll/archive/2011/09/19/2180961.html

    總結(jié)

    以上是生活随笔為你收集整理的web前端常识之浏览器原理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。