久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

你在瀏覽器輸入了baidu.com 并按下回車后,,背后到底發(fā)生了什么?

 千鋒Python學(xué)堂 2019-06-28

有些找過工作面試的朋友(特別是爬蟲的崗位)應(yīng)該常常被問到,,你知道你在瀏覽器輸入百度的網(wǎng)址之后,,背后做了什么操作嗎?其實這主要是想看看你對計算機網(wǎng)絡(luò)協(xié)議的了解,,今天小帥b就跟你淺談一下這個問題,,在此之前,我們先來了解一下什么是 URL ,。

你真的理解URL是什么,?

我們經(jīng)常使用瀏覽器上網(wǎng),在想要查詢某些網(wǎng)站的時候,,我們都會在瀏覽器的地址欄中輸入一段字符串,,也就是我們常說的「網(wǎng)址」,其實我們說的這個「網(wǎng)址」,,指的就是URL,,URL的全稱是Uniform Resource Location, 叫做 「統(tǒng)一資源定位」,。

比如我們想要訪問 Google,,應(yīng)該會在瀏覽器的地址欄中輸入:

http://www.google.com。

這時候我們可以看到 URL 中兩個比較重要的部分,,一個是協(xié)議,,一個是資源名稱,它們被 「://」分隔開,,左邊的 http 就是協(xié)議,,右邊的 www.google.com 就是資源名稱。

我們這里用到的協(xié)議是 HTTP 協(xié)議,,他的全稱叫做超文本傳輸協(xié)議,,網(wǎng)絡(luò)上的請求協(xié)議有許多,例如我們比較熟悉的其它協(xié)議有 ftp 協(xié)議,,https 協(xié)議等等,。

為什么要用協(xié)議呢?

因為沒有規(guī)矩,,不成方圓,,我們在傳輸數(shù)據(jù)的時候,需要通過相應(yīng)的規(guī)則才能獲取相應(yīng)的資源,,比如你在家里,,突然餓了,想要點外賣,,那么你需要找到你想吃的,,然后付錢,商家才給你做,,外賣小哥哥才笑嘻嘻的給你送,,如果你不遵循這一規(guī)則,你不給錢,,你能吃到嗎,?外賣小哥會笑嘻嘻給你送嗎?除非很帥,。

所以我們這里使用的 HTTP 協(xié)議,,可以給我們提供超文本文檔,。

資源名稱

資源名稱是一個完整的地址,它的格式是完全取決于協(xié)議而定,,不過在大多數(shù)的協(xié)議里面,,資源名稱都包括:

1.Host Name :主機名,也就是服務(wù)器的名稱,,一般是域名,,也就是域名對應(yīng)的這臺服務(wù)器的 ip 地址, 例如http://www.google.com 中的 www.google.com 就是主機名,。

2.FileName :文件名,,也就是我們要訪問服務(wù)器上某個位置上的文件,這個文件所在的路徑名就是FileName,,例如我們要訪問 a 服務(wù)器上的老師目錄下的照片,,那么我們就可以這樣訪問:

http://www./teacher/照片.jpg

這里的 teacher/照片.jpg 就是FileName。

3.Port Number: 端口號,,這個是用于連接的端口,,我們默認訪問不需要輸入端口,是因為 80 是默認的連接端口,,一般服務(wù)器上有 0-65535 個端口,,他開放哪個端口給你訪問,你就只能通過它給你的端口進行訪問,,就好比你要去開房,,發(fā)現(xiàn)酒店有65536 個房間,然后客服人員告訴你第 8000 個房間可以住,,那么你就交完錢拿著房卡去 8000 號的房玩耍,,總不會去 65536 個房間玩?zhèn)€遍吧!

這個端口后一般是在尾部添加冒號,,在冒號寫上端口號,。例如:http://www.google.com:80

4.Parameters :請求參數(shù),我們可以通過參數(shù)去訪問特定的資源,,一般在訪問的地址后面添加 key-value 的相識的值去訪問,,例如我們要訪問 a 這個網(wǎng)站的老師目錄下第一到第十張波多野結(jié)衣的照片就可以這樣呀訪問:

http://www./teacher/pic/boduoyejieyi?start=1&end=10

好了,接下來就說說你在瀏覽器輸入baidu.com后,,都發(fā)生了什么

  1. 你在 Chrome 的地址欄輸入baidu.com

你在瀏覽器輸入了baidu.com 并按下回車后,,背后到底發(fā)生了什么?

2.Chrome通過 DNS 去查找 baidu.com 這個域名對應(yīng)的IP地址:

你在瀏覽器輸入了baidu.com 并按下回車后,,背后到底發(fā)生了什么,?

DNS的查找過程是這樣的:

Chrome瀏覽器會先查找有沒有緩存的 DNS 記錄,如果在瀏覽器緩存沒有找到需要的記錄,就會去做一個系統(tǒng)的調(diào)用,,獲取系統(tǒng)緩存的記錄,;

如果沒有記錄請求會繼續(xù)到路由器上,路由器上有自己的 DNS 緩存,;

如果沒有記錄就會到 ISP 的 DNS 緩存中查看記錄,;

如果沒有記錄就會在 ISP 的 DNS 服務(wù)器從根服務(wù)器域名服務(wù)器開始遞歸搜索最后得到 IP 地址。

3.瀏覽器給 baidu 服務(wù)器發(fā)送一個 HTTP 請求

你在瀏覽器輸入了baidu.com 并按下回車后,,背后到底發(fā)生了什么?

獲取到 baidu 的 ip 地址之后,,就可以給 baidu 這個服務(wù)器發(fā)送 HTTP 請求了,,我們通過 URL 地址去發(fā)送的時候是一個GET 的請求,這時候會向 baidu 服務(wù)器發(fā)送一個 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)該知道其中

  1. User-Agent是向 baidu 服務(wù)器提供瀏覽器的類型,,操作系統(tǒng)版本,,瀏覽插件,瀏覽器語言等信息,。

  2. Accept是告訴服務(wù)器說我們需要接收的類型是什么樣子的,。

  3. Connection:keep-alive 是為了后邊請求不要關(guān)閉TCP連接。

  4. Cookie 是以文本形式存儲,,每次請求的時候就會發(fā)送給服務(wù)器,,它可以存儲用戶的狀態(tài),用戶名等信息,。

4.baidu服務(wù)器301重定向響應(yīng)

你在瀏覽器輸入了baidu.com 并按下回車后,,背后到底發(fā)生了什么?

因為剛剛我們在 Chrome 瀏覽器中輸入的是 baidu.com 而不是www.baidu.com,,這時候 baidu 服務(wù)器就會將我們的請求響應(yīng)一個 301 永久重定向到 www.baidu.com,。

5.Chrome瀏覽器請求重定向來的地址

你在瀏覽器輸入了baidu.com 并按下回車后,背后到底發(fā)生了什么,?

這時候 Chrome 瀏覽器知道 www.baidu.com 才是 baidu 希望訪問的地址,,那么這時候 Chrome 瀏覽器就會給 baidu 服務(wù)器發(fā)送另一個請求。

6.baidu服務(wù)器處理請求

baidu服務(wù)器在這個時候接收到了請求,,它會去查看請求它的參數(shù)還有 cookie 信息,,然后會進行一些操作處理,例如對數(shù)據(jù)進行存儲,,從數(shù)據(jù)庫中獲取需要被請求的數(shù)據(jù)等,。

7.baidu服務(wù)器返回HTML響應(yīng)

你在瀏覽器輸入了baidu.com 并按下回車后,背后到底發(fā)生了什么,?

當(dāng) baidu 服務(wù)器處理好之后,,就會給瀏覽器返回數(shù)據(jù)了,這個時候會有一個 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 說明了是否緩存這個頁面,怎么去解釋響應(yīng)信息,,cookie 的設(shè)置,,隱私信息等。

其中

  • Content-Encoding:gzip告訴瀏覽器整個響應(yīng)體是用gzip算法壓縮的,。

  • Content-Type:text/html; charset=utf-8 告訴瀏覽器將響應(yīng)的內(nèi)容以HTML的形式呈現(xiàn)出來,,字符集是utf-8。

8.Chrome瀏覽器顯示baidu頁面

這時候 Chrome 瀏覽器獲得了響應(yīng)內(nèi)容,,就開始顯示 baidu 的HTML頁面了,,瀏覽器在顯示的時候,發(fā)現(xiàn)需要獲取其他的標簽內(nèi)容,,比如圖片,、css 樣式表、JavaScript 文件,,那么瀏覽器就會繼續(xù)對 baidu 服務(wù)器去發(fā)送請求這些內(nèi)容,,這些靜態(tài)的文件baidu 會把它進行緩存,利用內(nèi)容分發(fā)網(wǎng)絡(luò)(CDN)進行分發(fā),,所以這些靜態(tài)文件在很多 CDN 數(shù)據(jù)中心都有備份,,所以瀏覽器很快就能獲取到這些靜態(tài)文件。

從而進行頁面吧的完整的顯示:

你在瀏覽器輸入了baidu.com 并按下回車后,,背后到底發(fā)生了什么,?

當(dāng)然,這只是淺談一下,,讓你有一個清晰的了解,,如果你對網(wǎng)絡(luò)方面感興趣的話,可以去了解一下計算機網(wǎng)絡(luò)的組成,,什么是報文,,什么是分組交換,如何握手以及各層之間的關(guān)系,,比如物理層,,數(shù)據(jù)鏈路層,運輸層等,。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點,。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,謹防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點擊一鍵舉報,。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多