您好,登錄后才能下訂單哦!
本篇內(nèi)容介紹了“在瀏覽器輸入了baidu.com按下回車后會發(fā)生什么”的有關(guān)知識,在實(shí)際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
你真的理解URL是什么?
我們經(jīng)常使用瀏覽器上網(wǎng),在想要查詢某些網(wǎng)站的時(shí)候,我們都會在瀏覽器的地址欄中輸入一段字符串,也就是我們常說的「網(wǎng)址」,其實(shí)我們說的這個(gè)「網(wǎng)址」,指的就是URL,URL的全稱是Uniform Resource Location, 叫做 「統(tǒng)一資源定位」。
比如我們想要訪問 Google,應(yīng)該會在瀏覽器的地址欄中輸入:
http://www.google.com。
這時(shí)候我們可以看到 URL 中兩個(gè)比較重要的部分,一個(gè)是協(xié)議,一個(gè)是資源名稱,它們被 「://」分隔開,左邊的 http 就是協(xié)議,右邊的 www.google.com 就是資源名稱。
我們這里用到的協(xié)議是 HTTP 協(xié)議,他的全稱叫做超文本傳輸協(xié)議,網(wǎng)絡(luò)上的請求協(xié)議有許多,例如我們比較熟悉的其它協(xié)議有 ftp 協(xié)議,https 協(xié)議等等。
為什么要用協(xié)議呢?
因?yàn)闆]有規(guī)矩,不成方圓,我們在傳輸數(shù)據(jù)的時(shí)候,需要通過相應(yīng)的規(guī)則才能獲取相應(yīng)的資源,比如你在家里,突然餓了,想要點(diǎn)外賣,那么你需要找到你想吃的,然后付錢,商家才給你做,外賣小哥哥才笑嘻嘻的給你送,如果你不遵循這一規(guī)則,你不給錢,你能吃到嗎?外賣小哥會笑嘻嘻給你送嗎?除非很帥。
所以我們這里使用的 HTTP 協(xié)議,可以給我們提供超文本文檔。
資源名稱
資源名稱是一個(gè)完整的地址,它的格式是完全取決于協(xié)議而定,不過在大多數(shù)的協(xié)議里面,資源名稱都包括:
1.Host Name :主機(jī)名,也就是服務(wù)器的名稱,一般是域名,也就是域名對應(yīng)的這臺服務(wù)器的 ip 地址, 例如http://www.google.com 中的 www.google.com 就是主機(jī)名。
2.FileName :文件名,也就是我們要訪問服務(wù)器上某個(gè)位置上的文件,這個(gè)文件所在的路徑名就是FileName,例如我們要訪問 a 服務(wù)器上的老師目錄下的照片,那么我們就可以這樣訪問:
http://www.a.com/teacher/照片.jpg
這里的 teacher/照片.jpg 就是FileName。
3.Port Number: 端口號,這個(gè)是用于連接的端口,我們默認(rèn)訪問不需要輸入端口,是因?yàn)?80 是默認(rèn)的連接端口,一般服務(wù)器上有 0-65535 個(gè)端口,他開放哪個(gè)端口給你訪問,你就只能通過它給你的端口進(jìn)行訪問,就好比你要去開房,發(fā)現(xiàn)酒店有65536 個(gè)房間,然后客服人員告訴你第 8000 個(gè)房間可以住,那么你就交完錢拿著房卡去 8000 號的房玩耍,總不會去 65536 個(gè)房間玩?zhèn)€遍吧!
這個(gè)端口后一般是在尾部添加冒號,在冒號寫上端口號。例如:http://www.google.com:80
4.Parameters :請求參數(shù),我們可以通過參數(shù)去訪問特定的資源,一般在訪問的地址后面添加 key-value 的相識的值去訪問,例如我們要訪問 a 這個(gè)網(wǎng)站的老師目錄下第一到第十張波多野結(jié)衣的照片就可以這樣呀訪問:
http://www.a.com/teacher/pic/boduoyejieyi?start=1&end=10
好了,接下來就說說你在瀏覽器輸入baidu.com后,都發(fā)生了什么
你在 Chrome 的地址欄輸入baidu.com
2.Chrome通過 DNS 去查找 baidu.com 這個(gè)域名對應(yīng)的IP地址:
DNS的查找過程是這樣的:
Chrome瀏覽器會先查找有沒有緩存的 DNS 記錄,如果在瀏覽器緩存沒有找到需要的記錄,就會去做一個(gè)系統(tǒng)的調(diào)用,獲取系統(tǒng)緩存的記錄;
如果沒有記錄請求會繼續(xù)到路由器上,路由器上有自己的 DNS 緩存;
如果沒有記錄就會到 ISP 的 DNS 緩存中查看記錄;
如果沒有記錄就會在 ISP 的 DNS 服務(wù)器從根服務(wù)器域名服務(wù)器開始遞歸搜索最后得到 IP 地址。
3.瀏覽器給 baidu 服務(wù)器發(fā)送一個(gè) HTTP 請求
獲取到 baidu 的 ip 地址之后,就可以給 baidu 這個(gè)服務(wù)器發(fā)送 HTTP 請求了,我們通過 URL 地址去發(fā)送的時(shí)候是一個(gè)GET 的請求,這時(shí)候會向 baidu 服務(wù)器發(fā)送一個(gè) header 信息:
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8 Accept-Encoding:gzip, deflate, br Accept-Language:zh-CN,zh;q=0.8 Cache-Control:no-cache Connection:keep-alive Cookie:PSTM=1506157985; BIDUPSID=DA662DF344C147D17FB4828CCD795292; ... Host:www.baidu.com Pragma:no-cache Upgrade-Insecure-Requests:1 User-Agent:Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36
經(jīng)常寫反反爬的話你應(yīng)該知道其中
User-Agent是向 baidu 服務(wù)器提供瀏覽器的類型,操作系統(tǒng)版本,瀏覽插件,瀏覽器語言等信息。
Accept是告訴服務(wù)器說我們需要接收的類型是什么樣子的。
Connection:keep-alive 是為了后邊請求不要關(guān)閉TCP連接。
Cookie 是以文本形式存儲,每次請求的時(shí)候就會發(fā)送給服務(wù)器,它可以存儲用戶的狀態(tài),用戶名等信息。
4.baidu服務(wù)器301重定向響應(yīng)
因?yàn)閯倓偽覀冊?Chrome 瀏覽器中輸入的是 baidu.com 而不是www.baidu.com,這時(shí)候 baidu 服務(wù)器就會將我們的請求響應(yīng)一個(gè) 301 永久重定向到 www.baidu.com。
5.Chrome瀏覽器請求重定向來的地址
這時(shí)候 Chrome 瀏覽器知道 www.baidu.com 才是 baidu 希望訪問的地址,那么這時(shí)候 Chrome 瀏覽器就會給 baidu 服務(wù)器發(fā)送另一個(gè)請求。
6.baidu服務(wù)器處理請求
baidu服務(wù)器在這個(gè)時(shí)候接收到了請求,它會去查看請求它的參數(shù)還有 cookie 信息,然后會進(jìn)行一些操作處理,例如對數(shù)據(jù)進(jìn)行存儲,從數(shù)據(jù)庫中獲取需要被請求的數(shù)據(jù)等。
7.baidu服務(wù)器返回HTML響應(yīng)
當(dāng) baidu 服務(wù)器處理好之后,就會給瀏覽器返回?cái)?shù)據(jù)了,這個(gè)時(shí)候會有一個(gè) Response Headers 發(fā)送給瀏覽器:
Bdpagetype:1 Bdqid:0xddf2be49000b5995 Bduserid:0 Cache-Control:private Connection:Keep-Alive Content-Encoding:gzip Content-Type:text/html; charset=utf-8 Cxy_all:baidu+09720a4fa84e5493ae7506a57de6bc05 Date:Sat, 14 Oct 2017 09:39:32 GMT Expires:Sat, 14 Oct 2017 09:39:32 GMT Server:BWS/1.1 Set-Cookie:BDSVRTM=49; path=/ Set-Cookie:BD_HOME=0; path=/ Set-Cookie:H_PS_PSSID=1440_13551_21103_24658; path=/; domain=.baidu.com Strict-Transport-Security:max-age=172800 Transfer-Encoding:chunked Vary:Accept-Encoding X-Powered-By:HPHP X-Ua-Compatible:IE=Edge,chrome=1
Response Headers 說明了是否緩存這個(gè)頁面,怎么去解釋響應(yīng)信息,cookie 的設(shè)置,隱私信息等。
其中
Content-Encoding:gzip告訴瀏覽器整個(gè)響應(yīng)體是用gzip算法壓縮的。
Content-Type:text/html; charset=utf-8 告訴瀏覽器將響應(yīng)的內(nèi)容以HTML的形式呈現(xiàn)出來,字符集是utf-8。
8.Chrome瀏覽器顯示baidu頁面
這時(shí)候 Chrome 瀏覽器獲得了響應(yīng)內(nèi)容,就開始顯示 baidu 的HTML頁面了,瀏覽器在顯示的時(shí)候,發(fā)現(xiàn)需要獲取其他的標(biāo)簽內(nèi)容,比如圖片、css 樣式表、JavaScript 文件,那么瀏覽器就會繼續(xù)對 baidu 服務(wù)器去發(fā)送請求這些內(nèi)容,這些靜態(tài)的文件baidu 會把它進(jìn)行緩存,利用內(nèi)容分發(fā)網(wǎng)絡(luò)(CDN)進(jìn)行分發(fā),所以這些靜態(tài)文件在很多 CDN 數(shù)據(jù)中心都有備份,所以瀏覽器很快就能獲取到這些靜態(tài)文件。
從而進(jìn)行頁面吧的完整的顯示:
“在瀏覽器輸入了baidu.com按下回車后會發(fā)生什么”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。