大家好,我是小林。
對(duì)于「訪問(wèn)一個(gè)百度的過(guò)程,期間發(fā)生了什么?」這個(gè)問(wèn)題面試中也很經(jīng)常問(wèn),我之前也寫(xiě)過(guò)詳細(xì)文章說(shuō)明:探究!一個(gè)數(shù)據(jù)包在網(wǎng)絡(luò)中的心路歷程
現(xiàn)在問(wèn)題來(lái)了。
大家知道,訪問(wèn)網(wǎng)站的時(shí)候,會(huì)有一個(gè)域名解析的過(guò)程,客戶端會(huì)先拿到網(wǎng)站的IP地址,然后通過(guò)IP地址來(lái)進(jìn)行后續(xù)的HTTP通信。
圖片
那既然如此,如果我已經(jīng)知道了網(wǎng)站的IP地址,是不是可以跳過(guò)域名解析的過(guò)程,直接拿著IP地址去請(qǐng)求呢?
以百度為例,我們ping一下百度的域名,拿到它的IP地址。
圖片
解析的IP地址是:14.119.104.189
那直接訪問(wèn)https://14.119.104.189,是不是也能打開(kāi)百度?
結(jié)果他試了一下,發(fā)現(xiàn)被拒絕了!
圖片
然后這位球友就想不通了,為啥我跳過(guò)了第一步,直接用IP訪問(wèn)就不行呢?網(wǎng)站是如何做到不讓直接用IP訪問(wèn)的?
從這個(gè)圖中就可以合理的懷疑,是不是第二步中,客戶端發(fā)過(guò)去的HTTP請(qǐng)求在使用域名和直接使用IP地址的時(shí)候有所不同,讓服務(wù)器“察覺(jué)”出來(lái)你是直接使用的IP地址在訪問(wèn)網(wǎng)站,跳過(guò)了第一步。
圖片
大膽假設(shè),小心論證,接下來(lái)我們就來(lái)看一下是不是這樣。
因?yàn)镠TTPS的通信是加了密的,為了看清楚通過(guò)域名訪問(wèn)和通過(guò)IP訪問(wèn)的時(shí)候,HTTP請(qǐng)求內(nèi)容的區(qū)別,我們使用Fildder抓包軟件,這樣可以看到HTTPS加密的正文內(nèi)容。
首先咱們通過(guò)域名來(lái)訪問(wèn)一下:
圖片
然后通過(guò)IP地址來(lái)訪問(wèn)一下:
圖片
放在一起一對(duì)比,在請(qǐng)求頭中就只有兩個(gè)地方不一樣:
圖片
分別是Host字段和Cookie字段。
這樣一看,真相基本就明確了,問(wèn)題多半出在這個(gè)Host字段。
為了進(jìn)一步驗(yàn)證,我們使用Postman來(lái)直接訪問(wèn)https://14.119.104.189,可以看到服務(wù)器返回了403錯(cuò)誤!
圖片
然后,我們通過(guò)Postman修改一下Host字段,將其設(shè)置為域名www.baidu.com,再試一次:
圖片
這次能成功訪問(wèn)了!
至此,這個(gè)問(wèn)題就得到解答了:
客戶端在發(fā)起HTTP請(qǐng)求的時(shí)候,會(huì)將其要訪問(wèn)的服務(wù)器地址填在Host字段。當(dāng)使用域名訪問(wèn)的時(shí)候,這個(gè)字段的值就是域名,而通過(guò)IP地址訪問(wèn)的時(shí)候,這個(gè)字段的內(nèi)容就是對(duì)應(yīng)的IP地址。而服務(wù)器正是通過(guò)請(qǐng)求中的Host字段,識(shí)別出了客戶端是直接通過(guò)IP訪問(wèn)的還是通過(guò)域名訪問(wèn)的。
最后給大家留一個(gè)思考題:
當(dāng)我用HTTPS直接訪問(wèn)https://14.119.104.189的時(shí)候,瀏覽器給了我這樣一個(gè)提示:
圖片
這不是百度自己的SSL證書(shū)嗎?為什么會(huì)有這個(gè)提示出現(xiàn)?
評(píng)論區(qū)說(shuō)說(shuō)看!
歷史好文:
拿了 7 個(gè)大廠 offer,我有話說(shuō)!
就按這個(gè)方向沖!
字節(jié)一面:網(wǎng)站顯示不出來(lái),怎么排查?
字節(jié)面試:連接一個(gè)不存在的 IP 地址,會(huì)發(fā)生什么?
-
通信
+關(guān)注
關(guān)注
18文章
6173瀏覽量
137367 -
HTTP
+關(guān)注
關(guān)注
0文章
521瀏覽量
32452 -
數(shù)據(jù)包
+關(guān)注
關(guān)注
0文章
269瀏覽量
24872
原文標(biāo)題:直接用IP訪問(wèn)百度,我發(fā)現(xiàn)了···
文章出處:【微信號(hào):小林coding,微信公眾號(hào):小林coding】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
請(qǐng)問(wèn)SRIO每次出傳輸數(shù)據(jù)包的個(gè)數(shù),數(shù)據(jù)包負(fù)載大小怎么設(shè)置?
請(qǐng)問(wèn)為什么ZigBee網(wǎng)絡(luò)組建中會(huì)頻繁地廣播一個(gè)數(shù)據(jù)包?
發(fā)送一個(gè)數(shù)據(jù)包,網(wǎng)絡(luò)什么也看不到
主動(dòng)網(wǎng)絡(luò)有什么安全威脅?
解決Labview報(bào)表問(wèn)題的一般思路
【睿賽德 RW007 WiFi 模塊試用連載】RW007模塊調(diào)試心路歷程
一個(gè)AVR新手藍(lán)牙模塊調(diào)試的心路歷程簡(jiǎn)介遇到的問(wèn)題
學(xué)習(xí)單片機(jī)的心路歷程分享
為什么一個(gè)數(shù)據(jù)包會(huì)收到兩個(gè)獨(dú)立的netbufs呢?
網(wǎng)絡(luò)數(shù)據(jù)包捕獲機(jī)制研究
ttl傳輸中過(guò)期可能是什么原因_ttl傳輸中過(guò)期怎么解決

黃仁勛分享作為工程師的心路歷程
一個(gè)AVR新手藍(lán)牙模塊調(diào)試的心路歷程

如何利用traceroute命令發(fā)現(xiàn)網(wǎng)絡(luò)中的負(fù)載均衡

評(píng)論