作者:知乎用户
链接:https://www.zhihu.com/question/23940717/answer/26230963
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

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

而在 Linux 中,其定义位于 /etc/hosts 中:
  127.0.0.1     localhost
注意这个值是可修改的,比如我把它改成
  192.068.206.1     localhost
然后再去 ping localhost,提示就变成了
  PING localhost (192.168.206.1) 56(84) bytes of data.
当然一般人不会像我这么蛋疼。

————分割线—说完localhost再说127.0.0.1————
127.0.0.1 这个地址通常分配给 loopback 接口。loopback 是一个特殊的网络接口(可理解成虚拟网卡),用于本机中各个应用之间的网络交互。只要操作系统的网络组件是正常的,loopback 就能工作。Windows 中看不到这个接口,Linux中这个接口叫 lo:
  #ifconfig
  eth0   Link encap:Ethernet hwaddr 00:00:00:00:00:00
             inet addr :192.168.0.1 Bcase:192.168.0.255 Mask:255.255.255.0
              ......
  lo        Link encap:Local Loopback
             inetaddr: 127.0.0.1 Mask: 255.0.0.0
               ......

可以看出 lo 接口的地址是 127.0.0.1。事实上整个 127.* 网段都算能够使用,比如你 ping 127.0.0.2 也是通的。
但是使用127.0.0.1作为loopback接口的默认地址只是一个惯例,比如下面这样:
  #ifconfig lo  192.168.128.1
  #ping  localhost               #糟糕,ping不通了
  #ping  192.128.128.1     # 可以通
  #ifconfig  lo
  lo          Link encap:Local Loopback
                inetaddr: 192.168.128.1 Mask: 255.255.255.0
                ......

当然,一般人更不会像我这样蛋疼。如果随便改这些配置,可能导致很多只认 127.0.0.1 的软件挂掉。

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

————最后总结一下区别————

  • localhost 是个域名,不是地址,它可以被配置为任意的 IP 地址,不过通常情况下都指向 127.0.0.1(ipv4)和 [::1](ipv6)
  • 整个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 接口上的地址,如果服务端套接字绑定在它上面,你的客户端程序就只能在本机访问。
    • 如果主机中存在多个网卡,分别连接不同的物理网络,比如 192.168.0.1/255.255.255.0 和 192.168.1.1/255.255.255.0,那么当你的服务端套接字绑到 192.168.0.1 这个地址上时,位于 192.168.1.* 网段的其他计算机是无法连接的,只有位于192.168.0.* 网段的计算机才能访问你的服务端程序。

【转自知乎】:localhost、127.0.0.1 和 本机IP 三者的区别?相关推荐

  1. localhost,127.0.0.1 和 本机IP 三者的区别

    尚学堂给同学们带来全新的Java300集课程啦!java零基础小白自学Java必备优质教程_手把手图解学习Java,让学习成为一种享受_哔哩哔哩_bilibili 1.localhost 就是一个域名 ...

  2. 127.0.0.1、0.0.0.0和本机IP地址的区别和使用

    一.表面上的区别如下: 首先假设本机有多个网卡:eth0 :192.168.0.1       eth1:192.168.1.1     lo: 127.0.0.1 0.0.0.0 不能ping通,代 ...

  3. vue项目访问的时候,用localhost能访问,但是用本机ip就不能访问 的解决办法,亲测有效

    vue项目搭建好后,用localhost:8080  访问的时候,能够访问页面. 但是用本机ip:8080访问页面的时候失败 这时在config/index.html中修改dev下的host为:0.0 ...

  4. 详细谈电脑ip、域名、内网、外网、localhost、127.0.0.1、网关等通讯基础知识(易懂)

    1. ip地址与域名的定义以及其关系 ip地址的定义: IP地址(Internet Protocol Address)是指互联网协议地址,又译为网际协议地址. IP地址是IP协议提供的一种统一的地址格 ...

  5. localhost、127.0.0.1对网络编程造成不通的说明

    平时大家都有过网络编程的经验,一般地,我们为了方便经常用localhost或者127.0.0.1,代替本机IP地址,如下为Qt编写的一段网络应用程序的代码: m_UdpSocket = new QUd ...

  6. localhost,127.0.0.1,本机IP

    一.简述 使用 localhost 或 127.0.0.1 或直接输入本机 IP,这三者都可以访问到本机,那为什么会存在这三种形式呢?它们之间又有啥区别呢? 1️⃣本机IP 电脑主板上都内置了多种网卡 ...

  7. mysql h 127.0.0.1_MySQL 连接时尽量使用 127.0.0.1 而不是 localhost

    原因 Whenever you specify "localhost" or "localhost:port" as server, the MySQL cli ...

  8. 127.0.0.1和0.0.0.0和localhost的区别

    127.0.0.1和0.0.0.0和localhost的区别 127.0.0.1 172.0.0.1是本地还回地址,专供自己访问自己,速度快(不用经过整个协议栈),永远都不能出现在主机外部的网络中,所 ...

  9. ClickHouse报错解决:Code: 194. DB::Exception: Received from localhost:9000, 127.0.0.1. DB::Exception: Pas

    我的个人博客:zhang0peter的个人博客 下午在使用ClickHouse的时候遇到了报错: root@ubuntu:/home/zhang# clickhouse-client ClickHou ...

最新文章

  1. 如何将自己写的verilog模块封装成IP核(二)
  2. HttpWebRequest在GetResponse时总是超时
  3. nacos windows部署_Sentinel-Go 集成 Nacos 实现外部动态数据源
  4. 穿越五年的时空,重回三元湖畔
  5. 翻译 | 2015年的最佳Material Design集锦 【上篇】
  6. 计算机应用基础第九章在线测试答案,郑大计算机应用基础第9章节在线测试答案...
  7. loadrunner脚本设计:集合点(批量放行实现真正的并发)
  8. aspmysql发布_ASP.NET Entity Framework with MySql服务器发布环境配置
  9. 暗黑破坏神(背包)(内部模拟)
  10. Jetty插件实现热部署(开发时修改文件自动重启Jetty)
  11. @ControllerAdvice + @ExceptionHandler 处理 全部Controller层异常
  12. 两年经验,尽然斩获多家巨头offer,如:蚂蚁、头条、PingCAP~
  13. 教你用好手中的McAfee 杀毒软件和McAfee 企业集中管理工具EPO
  14. echarts3力引导布局,固定某节点
  15. 用python解决搬砖问题_如何像要饭一般”用“python (一)(非编程类工作/科研搬砖工)...
  16. 示波器使用方法,正确使用示波器
  17. 抖音便捷小空调特效 html+css+js
  18. Excel / WPS 下拉选择数据
  19. 阿塞拜疆对加密货币收入及利润征税
  20. 【开源】发布一个软件“WeNote 微便签”,比系统自带的便笺好用,每个便签可独立设倒计时

热门文章

  1. MFC_Combo_Box(组合框)的详细用法
  2. centos把mysql移到数据盘_Centos转移Mysql的数据位置
  3. VMware vCenter 6.0 安装及群集配置介绍
  4. mysql-atlas安装及使用教程
  5. 阿里云云市场全新升级 瞄准需求拓生态
  6. Theano - Numpy 新手
  7. 10个顶级的CSS UI开源框架
  8. 为什么很多人喜欢把软件装在D盘,而不是系统盘C
  9. 水很深,我还是下去了
  10. [Markdown] 数学公式