tunyk avatar

關於Localhost的科普知識,Localhost是什麼

🕡 by tunyk

什麼是Localhost

計算機機器名由它們的主機名 [主機名] 和IP位址標識。

在下文中介面代表我們常說的網卡

下圖簡要說明瞭它。

關於Localhost的科普知識,Localhost是什麼

同樣,我們也有一個通用名稱,用於所有用於調用自身的計算機系統稱為localhost。 在這裡,術語"localhost"與計算機網络的上下文相關聯。 它在我們作為開發人員或系統管理員的歷程中發揮著至關重要的作用。 "localhost"有很多用例,例如應用程式測試、文檔、網路性能測試和網站阻止。

讓我們更深入地瞭解它的細節。

什麼是localhost本地主機?

localhost是一個主機名,指的是運行調用程式的計算機系統,這意味著當我們調用localhost時,機器將與自己對話。

它幫助我們檢查機器中的網路服務,即使在網路硬體故障期間。 使用"localhost"時,訪問網路服務通過稱為迴環Loopback的邏輯網路介面。 Loopback介面的IP位址為 127.0.0.1。 因此,作為名稱解析的一部分,本地主機解析為127.0.0.1。

什麼是回環位址?

迴環介面是所有操作系統中都存在的邏輯網路介面。 通過該介面傳輸的數據包被返回(迴環)到同一台機器上的同一介面。 因此,該介面稱為迴環介面。

根據IPv4尋址的IETF標準,127.0.0.0/8的整個塊被分配用於迴環網路介面。 作為預設行為,每次安裝伺服器後都會配置Loopback介面。

讓我們看看下面的片段。

1
2
3
4
5
6
7
8
9
ip a show lo
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 76238871 bytes 6955286874 (6.9 GB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 76238871 bytes 6955286874 (6.9 GB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

複製

1
2
3
4
5
6
sudo cat /etc/hosts
127.0.0.1 localhost
127.0.1.1 sandbox1

# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback

複製

回環數據包處理內部結構

通常,Loopback報文通過位址與其他IP報文區分開來。 帶有環回位址的環迴數據包的處理發生在 TCP/IP協定棧的鏈路層。 此流量將在計算機系統本身內部傳遞。 它不會像其他IP數據包那樣通過硬體NIC卡。

例如,當我們請求 127.0.0.1 位址時。 由於第一個八位位元組 (127),請求不會轉發到 Internet。 在這裡,TCP/IP 堆疊識別請求並將其路由回同一台機器。

本地主機localhost和其他IP數據包的數據包流的快速說明如下。

關於Localhost的科普知識,Localhost是什麼

1
2
3
4
5
6
7
8
9
10
ping -c 4 localhost
PING localhost (127.0.0.1) 56(84) bytes of data.
64 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=64 time=0.035 ms
64 bytes from localhost (127.0.0.1): icmp_seq=2 ttl=64 time=0.043 ms
64 bytes from localhost (127.0.0.1): icmp_seq=3 ttl=64 time=0.041 ms
64 bytes from localhost (127.0.0.1): icmp_seq=4 ttl=64 time=0.040 ms

--- localhost ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3075ms
rtt min/avg/max/mdev = 0.035/0.039/0.043/0.008 ms

1
2
3
4
5
6
7
8
9
10
ping -c 4 google.com
PING google.com (142.250.71.46) 56(84) bytes of data.
64 bytes from maa03s35-in-f14.1e100.net (142.250.71.46): icmp_seq=1 ttl=120 time=2.14 ms
64 bytes from maa03s35-in-f14.1e100.net (142.250.71.46): icmp_seq=2 ttl=120 time=2.18 ms
64 bytes from maa03s35-in-f14.1e100.net (142.250.71.46): icmp_seq=3 ttl=120 time=2.19 ms
64 bytes from maa03s35-in-f14.1e100.net (142.250.71.46): icmp_seq=4 ttl=120 time=2.20 ms

--- google.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3004ms
rtt min/avg/max/mdev = 2.147/2.180/2.203/0.051 ms

使用本地主機測試應用程式

應用服務的可訪問性首先通過網路介面。 如果應用服務被映射到一個物理介面,它就可以從外部世界訪問。 同樣,如果應用程式映射到邏輯Loopback迴環介面,則只能從該特定計算機系統訪問它,而不能從外部世界訪問它。

從本地伺服器開發和測試代碼總是比從另一個遠端主機容易。 為此,我們將生產功能變數名稱映射到檔案中的新環回位址 (127.0.1.100) 。 /etc/hosts中的條目優先於 DNS。/etc/hosts

下面的代碼片段展示了從本地伺服器到遠端 myfreax Web 伺服器的自然ping回應。 域映射顯示在第二個片段中。 當我們將 127 段 IP 映射到主機檔中的 myfreax.com 後仔細檢查輸出時,流量被路由到環回網路介面。

1
2
3
4
5
6
7
8
9
10
ping -c 4 myfreax.com
PING  myfreax.com (172.67.74.167) 56(84) bytes of data.
64 bytes from 172.67.74.167 (172.67.74.167): icmp_seq=1 ttl=59 time=34.5 ms
64 bytes from 172.67.74.167 (172.67.74.167): icmp_seq=2 ttl=59 time=34.5 ms
64 bytes from 172.67.74.167 (172.67.74.167): icmp_seq=3 ttl=59 time=34.5 ms
64 bytes from 172.67.74.167 (172.67.74.167): icmp_seq=4 ttl=59 time=34.5 ms

---  myfreax.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3005ms
rtt min/avg/max/mdev = 34.521/34.529/34.541/0.227 ms

1
2
3
4
5
6
7
sudo cat /etc/hosts
127.0.0.1 localhost
127.0.1.1 sandbox1
127.0.1.100  myfreax.com

# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback

1
2
3
4
5
6
7
8
9
10
ping -c 4  myfreax.com
PING  myfreax.com (127.0.1.100) 56(84) bytes of data.
64 bytes from  myfreax.com (127.0.1.100): icmp_seq=1 ttl=64 time=0.074 ms
64 bytes from  myfreax.com (127.0.1.100): icmp_seq=2 ttl=64 time=0.094 ms
64 bytes from  myfreax.com (127.0.1.100): icmp_seq=3 ttl=64 time=0.042 ms
64 bytes from  myfreax.com (127.0.1.100): icmp_seq=4 ttl=64 time=0.055 ms

--- myfreax.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3062ms
rtt min/avg/max/mdev = 0.042/0.066/0.094/0.020 ms

結論

Localhost是我們程式運行的系統的預設名稱,它幫助我們測試應用程式和解決網路問題。 它是通過環回網路介面使用本地環回機制實現的。 它説明我們在沒有網路硬體配置依賴的情況下測試軟體。 作為計算機使用者,必須基本瞭解本地主機和Loopback環回網路介面這兩個術語。

💘 相关文章

写一条评论

Based on Golang + fastHTTP + sdb | go1.16.4 Processed in 1ms