localhost和127.0.0.1的區(qū)別是什么?
前端本地調(diào)試的時候,應(yīng)該沒少和localhost打交道,只需要執(zhí)行 npm run 就能在瀏覽器中打開頁面窗口,地址欄顯示的就是這個 http://localhost:xxx/index.html
localhost是什么?
localhost是一個域名,和大家上網(wǎng)使用的域名沒有什么本質(zhì)區(qū)別。
只是這個localhost的有效范圍只有本機(jī),看名字也能知道:local就是本地的意思。
張三和李四都可以在各自的機(jī)器上使用localhost,但獲取到的也是各自的頁面內(nèi)容,不會相互打架。
從域名到程序
要想真正的認(rèn)清楚localhost,我們還得從用戶是如何通過域名訪問到程序說起。
以訪問百度為例。
1、當(dāng)我們在瀏覽器輸入 baidu.com 之后,瀏覽器首先去DNS中查詢 baidu.com 的IP地址。
為什么需要IP地址呢?打個比方,有個人要寄快遞到你的公司,快遞單上會填寫:公司的通訊地址、公司名稱、收件人等信息,實(shí)際運(yùn)輸時快遞會根據(jù)通信地址進(jìn)行層層轉(zhuǎn)發(fā),最終送到收件人的手中。網(wǎng)絡(luò)通訊也是類似的,其中域名就像公司名稱,IP地址就像通信地址,在網(wǎng)絡(luò)的世界中只有通過IP地址才能找到對應(yīng)的程序。
DNS就像一個公司黃頁,其中記錄著每個域名對應(yīng)的IP地址,當(dāng)然也有一些域名可能沒做登記,就找不到對應(yīng)的IP地址,還有一些域名可能會對應(yīng)多個IP地址,DNS會按照規(guī)則自動返回一個。我們購買了域名之后,一般域名服務(wù)商會提供一個域名解析的功能,就是把域名和對應(yīng)的IP地址登記到DNS中。
這里的IP地址從哪里獲取呢?每臺上網(wǎng)的電腦都會有1個IP地址,但是個人電腦的IP地址一般是不行的,個人電腦的IP地址只適合內(nèi)網(wǎng)定位,就像你公司內(nèi)部的第幾棟第幾層,公司內(nèi)部人明白,但是直接發(fā)給別人,別人是找不到你的。如果你要對外部提供服務(wù),比如百度這種,你就得有公網(wǎng)的IP地址,這個IP地址一般由網(wǎng)絡(luò)服務(wù)運(yùn)營商提供,比如你們公司使用聯(lián)通上網(wǎng),那就可以讓聯(lián)通給你分配一個公網(wǎng)IP地址,綁定到你們公司的網(wǎng)關(guān)服務(wù)器上,網(wǎng)關(guān)服務(wù)器就像電話總機(jī),公司內(nèi)部的所有網(wǎng)絡(luò)通信都要通過它,然后再在網(wǎng)關(guān)上設(shè)置轉(zhuǎn)發(fā)規(guī)則,將網(wǎng)絡(luò)請求轉(zhuǎn)發(fā)到提供網(wǎng)絡(luò)服務(wù)的機(jī)器上。
2、有了IP地址之后,瀏覽器就會向這個IP地址發(fā)起請求,通過操作系統(tǒng)打包成IP請求包,然后發(fā)送到網(wǎng)絡(luò)上。網(wǎng)絡(luò)傳輸有一套完整的路由協(xié)議,它會根據(jù)你提供的IP地址,經(jīng)過路由器的層層轉(zhuǎn)發(fā),最終抵達(dá)綁定該IP的計算機(jī)。
3、計算機(jī)上可能部署了多個網(wǎng)絡(luò)應(yīng)用程序,這個請求應(yīng)該發(fā)給哪個程序呢?這里有一個端口的概念,每個網(wǎng)絡(luò)應(yīng)用程序啟動的時候可以綁定一個或多個端口,不同的網(wǎng)絡(luò)應(yīng)用程序綁定的端口不能重復(fù),再次綁定時會提示端口被占用。通過在請求中指定端口,就可以將消息發(fā)送到正確的網(wǎng)絡(luò)處理程序。
但是我們訪問百度的時候沒有輸入端口???這是因?yàn)槟J(rèn)不輸入就使用80和443端口,http使用80,https使用443。我們在啟動網(wǎng)絡(luò)程序的時候一定要綁定一個端口的,當(dāng)然有些框架會自動選擇一個計算機(jī)上未使用的端口。
localhost和127.0.0.1的區(qū)別是什么?
有了上邊的知識儲備,我們就可以很輕松的搞懂這個問題了。
localhost是域名,上文已經(jīng)說過了。
127.0.0.1 呢?是IP地址,當(dāng)前機(jī)器的本地IP地址,且只能在本機(jī)使用,你的計算機(jī)不聯(lián)網(wǎng)也可以用這個IP地址,就是為了方便開發(fā)測試網(wǎng)絡(luò)程序的。我們調(diào)試時啟動的程序就是綁定到這個IP地址的。
這里簡單說下,我們經(jīng)??吹降腎P地址一般都是類似 X.X.X.X 的格式,共32位,用"."分成四段,用10進(jìn)制表示。
那localhost是怎么解析到127.0.0.1的呢?經(jīng)過DNS了嗎?沒有。每臺計算機(jī)都可以使用localhost和127.0.0.1,這沒辦法讓DNS來做解析。
那就讓每臺計算機(jī)自己解決了。每臺計算機(jī)上都有一個host文件,其中寫死了一些DNS解析規(guī)則,就包括 localhost 到 127.0.0.1 的解析規(guī)則,這是一個約定俗成的規(guī)則。
如果你不想用localhost,那也可以,隨便起個名字,比如 wodehost,也解析到 127.0.0.1 就行了。
甚至你想使用 baidu.com 也完全可以,只是只能自己自嗨,對別人完全沒有影響。
多網(wǎng)站共用一個IP和端口
上邊我們說不同的網(wǎng)絡(luò)程序不能使用相同的端口,其實(shí)是有辦法突破的。
以前個人博客比較火的時候,大家都喜歡買個虛擬主機(jī),然后部署個開源的博客程序,抒發(fā)一下自己的感情。為了掙錢,虛擬主機(jī)的服務(wù)商會在一臺計算機(jī)上分配N多個虛擬主機(jī),大家使用各自的域名和默認(rèn)的80端口進(jìn)行訪問,也都相安無事。這是怎么做到的呢?
如果你有使用Nginx、Apache或者IIS等Web服務(wù)器的相關(guān)經(jīng)驗(yàn),你可能會接觸到主機(jī)頭這個概念。主機(jī)頭其實(shí)就是一個域名,通過設(shè)置主機(jī)頭,我們的程序就可以共用1個網(wǎng)絡(luò)端口。
首先在Nginx等Web程序中部署網(wǎng)站時,我們會進(jìn)行一些配置,此時在主機(jī)頭中寫入網(wǎng)站要使用的域名。
然后Nginx等Web服務(wù)器啟動的時候,會把80端口占為己有。
然后當(dāng)某個網(wǎng)站的請求到達(dá)Nginx的80端口時,它會根據(jù)請求中攜帶的域名找到配置了對應(yīng)主機(jī)頭的網(wǎng)絡(luò)程序。
然后再轉(zhuǎn)發(fā)到這個網(wǎng)絡(luò)程序,如果網(wǎng)絡(luò)程序還沒有啟動,Nginx會把它拉起來。
私有IP地址
除了127.0.0.1,其實(shí)還有很多私有IP地址,比如常見的 192.168.x.x。這些私有IP地址大部分都是為了在局域網(wǎng)內(nèi)使用而預(yù)留的,因?yàn)榻o每臺計算機(jī)都分配一個獨(dú)立的IP不太夠用,所以只要局域網(wǎng)內(nèi)不沖突,大家就可勁的用吧。你公司可以用 192.168.1.1,我公司也可以用192.168.1.1,但是如果你要訪問我,就得通過公網(wǎng)IP進(jìn)行轉(zhuǎn)發(fā)。
大家常用的IPv4私有IP地址段分為三類:
A類:從10.0.0.0至10.255.255.255
B類:從172.16.0.0至172.31.255.255
C類:從192.168.0.0至192.168.255.255。
這些私有IP地址僅供局域網(wǎng)內(nèi)部使用,不能在公網(wǎng)上使用。
除了上述三個私有的IPv4地址段外,還有一些保留的IPv4地址段:
用于本地回環(huán)測試的127.0.0.0至127.255.255.255地址段,其中就包括題目中的127.0.0.1,如果你喜歡也可以給自己分配一個127.0.0.2的IP地址,效果和127.0.0.1一樣。
用于局域網(wǎng)內(nèi)部的169.254.0.0至169.254.255.255地址段,這個很少接觸到,如果你的電腦連局域網(wǎng)都上不去,可能會看到這個IP地址,它是臨時分配的一個局域網(wǎng)地址。
這些地址段也都不能在公網(wǎng)上使用。
IPv6
你可能也聽說過IPv6,因?yàn)镮Pv4可分配的地址太少了,不夠用,使用IPv6甚至可以為地球上的每一粒沙子分配一個IP。只是喊了很多年,大家還是喜歡用IPv4,這里邊原因很多,這里就不多談了。文章來源:http://www.zghlxwxcb.cn/news/detail-816995.html
IPv6地址類似:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX
它是128位的,用":"分成8段,每個X是一個16進(jìn)制數(shù)(取值范圍:0-F),IPv6地址空間相對于IPv4地址有了極大的擴(kuò)充。比如:2001:0db8:3c4d:0015:0000:0000:1a2f:1a2b 就是一個有效的IPv6地址。文章來源地址http://www.zghlxwxcb.cn/news/detail-816995.html
到了這里,關(guān)于localhost和127.0.0.1的區(qū)別是什么?的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!