localhost和127.0.0.1的区别

localhost和127.0.0.1的区别

💡 原文中文,约1900字,阅读约需5分钟。
📝

内容提要

本文讲解了localhost和127.0.0.1的区别,指出了一些错误的理解。作者通过验证得出结论:localhost会按照DNS解析流程进行解析,然后和127.0.0.1一样。在特殊的程序中比如MySQL命令行会对localhost提前做特别处理。作者通过ping和tcpdump等命令进行了验证,并解释了如果/etc/hosts中没有写死localhost 127.0.0.1会怎么样的问题。最后,作者强调了动手验证的重要性。

🎯

关键要点

  • localhost和127.0.0.1的区别是错误理解,localhost会解析成127.0.0.1。
  • 在MySQL命令行中,localhost会绕过DNS解析,直接使用unix-socket连接。
  • 动手验证是重要的能力,不应仅依赖结论。
  • 使用ping和tcpdump可以验证localhost经过网卡。
  • 即使/etc/hosts中没有localhost的定义,localhost仍然可以解析成127.0.0.1。
  • 标准DNS服务器不会返回127.0.0.1,但某些实现会为方便解析。
  • 使用strace可以观察localhost解析过程,确认两者相同。
  • 欢迎有理有据的质疑,验证手段包括nslookup、tcpdump和strace。
➡️

继续阅读