localhost是不經過網卡傳輸的,而127.0.0.1則要通過網卡傳輸的,這種說法正確嗎?

網上原文如下:

localhost的意思是本地伺服器,而127.0.0.1是本機地址,他們的關係是通過操作系統中的hosts文件,將localhost解析為127.0.0.1。而實際工作中,localhost是不經過網卡傳輸的,所以,它不受網路防火牆和與網卡相關的種種限制;而127.0.0.1則要通過網卡傳輸數據,是必須依賴網卡的。這一點是它們最大的區別。

其它說法:localhost與127.0.0.1的區別

我的看法:我感覺這種說法是不正解的,因為localhost 就是一個域名,域名指向 127.0.0.1 ,兩者是一樣的。用localhost連接時,也是先轉換成127.0.0.1,再請求,


不知道提問者是不是摘了php的mysql介紹。在php環境里,使用localhost連接mysql是不走TCP網路的,而是php.ini或者是編譯php時指定的unix socket進行連接。使用127.0.0.1才是通過TCP的3306埠連接mysql。


誰寫的?以後看著躲遠點兒。

題主的理解是正確的,localhost是個域名,只有把域名解析為127.0.0.1才能傳輸。上層是無法控制下層如何完成工作的,只能告訴下層工作的目的。

當然,有時會產生兩者有區別的錯覺在於使用域名請求伺服器和使用IP地址請求伺服器是不同的。特別對於HTTP伺服器而言,伺服器會根據你請求的具體域名來決定給你什麼服務。這個機制是用來允許一台HTTP伺服器在同一個埠上服務多個網站設計的。如果配置為只服務localhost,不服務127.0.0.1,或者防火牆上做了類似的配置,就可能產生題主提供的鏈接中的誤解。許多其他服務也有類似的配置能力,例如FTP。

有時網路棧的錯誤配置可能導致localhost不被解析,也是可能的原因。


host file裡面有localhost 127.0.0.1這一條


敲命令

ifconfig

127.0.0.1 是內核設備 loop,不走網卡,幾乎無性能損失。

否則本地通信大家全部都去用 UNIX Socket / Named Pipe了。

localhost -&> 127.0.0.1 的解析是 hosts 文件 完成的。

知乎上水貨也忒多了。


通過網卡是什麼意思?頂多會增加一次本地的域名解析。


推薦閱讀:

如何看待高精度IP數據?
在公司的無線區域網必須手動設置IP地址和DNS地址,而回家後的無線區域網自動分配以上地址才可以上網?
BT和PT有什麼區別?
請問從哪裡可以下載所有域名與IP相對應的DNS表?
有無辦法獲取指定國家或地區的全部google global cache伺服器IP地址?

TAG:網路安全 | 計算機網路 | IP地址 | TCPIP |