netword localhost与 127.0.0.1 与 ::1 与 0.0.0.0 区别

待我称王封你为后i 2022-05-17 04:52 376阅读 0赞

1、localhost:localhost 是个域名,不是地址,它可以被配置为任意的 IP 地址,不过通常情况下都指向 127.0.0.1(ipv4)和 [::1](ipv6)

2、127.0.0.1:127.0.0.1/8整个都是环回地址,用来测试本机的TCP/IP协议栈,发往这段A类地址数据包不会出网卡,网络设备不会对其做路由。

3、本机IP:本机 IP,本机有三块网卡,一块网卡叫做 loopback(这是一块虚拟网卡),另外一块网卡叫做 ethernet (这是有线网卡),另外一块网卡叫做 wlan(这是无线网卡)。本机 IP 就是真实网卡的 IP,具体来说有线无线各有一个,而 127.0.0.1 是那块叫做 loopback 的虚拟网卡的 IP。

4、localhost,127.0.0.1 和本机IP 三者在网络,传输,访问的区别如下图:

7dd98d1001e9390198f804ce7cec54e737d1964c.jpg

localhost

首先 localhost 是一个域名,在过去它指向 127.0.0.1 这个IP地址。在操作系统支持 ipv6 后,它同时还指向ipv6 的地址 [::1]
在 Windows 中,这个域名是预定义的,从 hosts 文件中可以看出:

而在 Linux 中,其定义位于 /etc/hosts 中:

  1. 127.0.0.1 localhost

注意这个值是可修改的,比如把它改成

  1. 192.068.206.1 localhost

然后再去 ping localhost,提示就变成了

  1. PING localhost (192.168.206.1) 56(84) bytes of data.

127.0.0.1

127.0.0.1 这个地址通常分配给 loopback 接口。loopback 是一个特殊的网络接口(可理解成虚拟网卡),用于本机中各个应用之间的网络交互。只要操作系统的网络组件是正常的,loopback 就能工作。Windows 中看不到这个接口,Linux中这个接口叫 lo:

  1. #ifconfig
  2. eth0 Link encap:Ethernet hwaddr 00:00:00:00:00:00
  3. inet addr :192.168.0.1 Bcase:192.168.0.255 Mask:255.255.255.0
  4. ......
  5. lo Link encap:Local Loopback
  6. inetaddr: 127.0.0.1 Mask: 255.0.0.0
  7. ......

可以看出 lo 接口的地址是 127.0.0.1。事实上整个 127.* 网段都算能够使用,比如你 ping 127.0.0.2 也是通的。
但是使用127.0.0.1作为loopback接口的默认地址只是一个惯例,比如下面这样:

  1. #ifconfig lo 192.168.128.1
  2. #ping localhost #糟糕,ping不通了
  3. #ping 192.128.128.1 # 可以通
  4. #ifconfig lo
  5. lo Link encap:Local Loopback
  6. inetaddr: 192.168.128.1 Mask: 255.255.255.0
  7. ......

如果随便改这些配置,可能导致很多只认 127.0.0.1 的软件挂掉。

本机IP

确切地说,“本机地址”并不是一个规范的名词。通常情况下,指的是“本机物理网卡所绑定的网络协议地址”。由于目前常用网络协议只剩下了IPV4,IPX/Apple Tak消失了,IPV6还没普及,所以通常仅指IP地址甚至ipv4地址。一般情况下,并不会把 127.0.0.1当作本机地址——因为没必要特别说明,大家都知道。
本机地址是与具体的网络接口绑定的。比如以太网卡、无线网卡或者PPP/PPPoE拨号网络的虚拟网卡,想要正常工作都要绑定一个地址,否则其他设备就不知道如何访问它。

● localhost 是个域名,不是地址,它可以被配置为任意的 IP 地址,不过通常情况下都指向 127.0.0.1(ipv4)和 ::1
● 整个127.* 网段通常被用作 loopback 网络接口的默认地址,按惯例通常设置为 127.0.0.1。这个地址在其他计算机上不能访问,就算你想访问,访问的也是自己,因为每台带有TCP/IP协议栈的设备基本上都有 localhost/127.0.0.1。
● 本机地址通常指的是绑定在物理或虚拟网络接口上的IP地址,可供其他设备访问到。
● 最后,从开发度来看
○ localhost是个域名,性质跟 “www.baidu.com” 差不多。不能直接绑定套接字,必须先gethostbyname转成IP才能绑定。
○ 127.0.0.1 是绑定在 loopback 接口上的地址,如果服务端套接字绑定在它上面,你的客户端程序就只能在本机访问

localHost是本地回环测试地址127.x.x.x中最开始的一个地址127.0.0.1。约定作为被本地测试的保留域名。通常通过ping这个地址来检查本地ip/tcp正不正常。大多的配置系统都讲localHost与127.0.0.1绑定到一起。可以被本地主机理解为本地主机 。翻译人话就是:这就是我。
Any(0.0.0.0)这个地址被称为通配地址,使用这个IP地址可以建立的服务器,IP为本地主机的IP。会在局域网上告诉其它主机(这是我)。如果在其他的主机上也运行一个同样的服务器,首先IP地址肯定不相同。等于说虽然都是使用通配地址(0.0.0.0)建立的服务器,但服务器的IP地址也就不相同了。

发表评论

表情:
评论列表 (有 0 条评论,376人围观)

还没有评论,来说两句吧...

相关阅读

    相关 |||,&&&区别

    &,&&:(与,短路与):一样的地方就是二者执行最后的结果是一样的,但是执行的过程有区别, 对于&:无论&左边是否为false,他都会继续检验右边的boolean值。 对于

    相关 i=i+1 i+=1 区别

    满脑子的黑人问号有没有,有的话点一波关注:) 起初我也是一脸蒙逼,随着知识的积累,有了新的思考,记录下来仅供参考。  从执行效率上来说,i+=1更优 我们先来看一段代