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

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

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

評論