当前位置: 首页 > web >正文

localhost和127.0.0.1的区别

前端项目在本地调试时,通常与localhost进行交互——只需运行npm run命令即可在浏览器中打开网页,地址栏会显示类似http://localhost:xxx/index.html的地址。

1. localhost

本质上是一个域名,与日常访问互联网使用的域名(如baidu.com)没什么根本差异,只是更便于记忆。作用范围仅限于本机:从名称中的"local"(本地)即可知,它指向当前设备本身。不同用户(如张三和李四)可以在各自电脑上互不干扰地使用localhost,访问的始终是本机的页面内容。
要理解localhost,需先了解用户通过域名访问程序的完整流程。以访问baidu.com为例:

1.1 浏览器输入baidu.com后,首先向DNS查询该域名对应的IP地址。

为什么需要IP地址?类比快递寄送:邮寄包裹需填写收件方公司地址、名称和接收人信息。快递系统依赖物理地址进行路由最终送达。网络世界中域名如同公司名称,IP地址则是物理地址。数据包传输必须依赖IP地址定位目标程序。

DNS就像企业通讯录,记录着域名与IP的映射关系。未注册的域名无法查询到IP,而某些域名可能对应多个IP(DNS会根据规则返回其中一个)。购买域名后,域名服务商通常会提供DNS解析服务,将域名与IP的对应关系注册到DNS系统中。

IP地址来源:所有联网设备都拥有IP地址,但个人电脑的IP通常不适合直接对外提供服务(如同公司内部位置只有内部人员清楚)。像Baidu这样的对外服务需要公网IP,一般由网络服务商(如中国移动)分配给企业网关服务器。网关服务器如同总机接线员,处理所有内外网通信,并通过转发规则将外部请求导向内部服务器。

1.2 获取IP后,浏览器向该地址发送请求

操作系统将请求打包为IP数据包,通过网络路由协议经由多个路由器传输,最终抵达绑定该IP的计算机。

1.3 单台计算机可能部署多个网络应用

如何确定接收请求的程序?此时端口(Port)发挥作用:每个网络应用可绑定一个或多个端口(系统禁止端口冲突)。请求中指定端口即可路由到正确程序。
访问Baidu时没有显式指定端口,是因为默认使用标准端口(HTTP为80,HTTPS为443)。启动网络程序时必须绑定端口,部分框架会自动选择本机空闲端口。

2. localhost与127.0.0.1的区别

• localhost是域名
• 127.0.0.1是IP地址,特指本地环回地址(loopback address),仅能在本机使用。该地址无需联网即可访问,极大便利网络程序的开发测试。我们调试的程序正是绑定在此IP上。

localhost如何解析为127.0.0.1?需要经过DNS吗?
答案是不需要。每台计算机都可不经DNS解析直接使用localhost和127.0.0.1。 解析由各设备自主完成:所有操作系统 hosts文件 中均预设了硬编码的DNS解析规则,其中包含"localhost → 127.0.0.1"的映射。你可以使用自定义名称(如wodehost)并映射到127.0.0.1,甚至可以将baidu.com指向127.0.0.1(仅对本机生效)。

补充:域名层级体系

localhost与常规域名(如www.juejin.cn、csdn.net)形态不同。为什么localhost不需要cn/com/net等后缀?

域名采用分层结构:
顶级域名(TLD):位于最右侧,分为通用顶级域(.com商业/.net网络/.org非营利)和国家代码顶级域(.cn中国/.uk英国)。
二级域名(SLD):注册者自选名称(如juejin.cn)。用户通常申请的就是二级域名,TLD的实际意义已被弱化 。
三级域名(3LD):用于指向特定服务器或子网(如blog.example.com中的"blog")。最常见的"www"仅是惯例(现多推荐直接使用二级域名访问)。

按照这种定义,localhost可视为保留的顶级域名,专用于访问本机。

http://www.xdnf.cn/news/18821.html

相关文章:

  • 不再让Windows更新!Edge游戏助手卸载及关闭自动更新
  • 雪花算法数据库主键
  • Shell 学习笔记 - Shell 三剑客篇
  • 【ABAP4】基本语法1
  • CI/CD企业案例详解
  • Linux下usb设备驱动涉及的结构体
  • 记一次生产环境Hbase填坑之路、Hbase客户端登陆、kerberos认证、端口列表、Pod上手撕代码【Hbase最佳实践】
  • 酶 EC number 预测工具CLEAN的安装和使用
  • Java 线程池详解:原理、使用与源码深度解析
  • 从全栈开发到微服务架构:一次真实的Java面试实录
  • 【图像处理基石】如何把非笑脸转为笑脸?
  • Git连接Github远程仓库的代理设置
  • Java:HashSet的使用
  • Linux shell脚本条件循环
  • 基础篇(下):神经网络与反向传播(程序员视角)
  • 【论文阅读 | arXiv 2025 | WaveMamba:面向RGB-红外目标检测的小波驱动Mamba融合方法】
  • Multitouch for mac 触控板手势增强软件
  • Zynq开发实践(Verilog、仿真、FPGA和芯片设计)
  • RAG智能问答为什么需要进行Rerank?
  • 【K8s】整体认识K8s之namespace
  • 低功耗模式DMA数据搬运问题解析
  • 模块测试与低功耗模式全攻略
  • 【Java】springboot的自动配置
  • 谷德红外温度传感器在 3D 打印领域应用探究
  • Rust 登堂 生命周期(一)
  • 纯血鸿蒙下的webdav库
  • 最近遇到的几个JVM问题
  • JVM OOM问题排查与解决思路
  • Flask蓝图:模块化开发的利器
  • HarmonyOS NEXT系列之元服务框架ASCF