localhost 与 127.0.0.1 在本地开发中有什么区别

在进行前端开发时,我们经常使用localhost,只需运行npm run就能在浏览器中打开网页,地址栏显示类似于http://localhost:xxx/index.html,但是很多人并不了解更深层次的原理,不知道 localhost 与 127.0.0.1 到底有什么区别。

了解localhost是什么?

localhost是一个域名,从本质上来说和用于互联网访问的域名没有太大不同,只是更容易记忆。

localhost的范围仅限于本地机器,其名称清楚地表明:“local”指的是在本地范围内的东西。

我们都可以在各自的机器上使用localhost,而互不干扰,访问各自的页面内容。

从域名到程序

为了真正理解localhost,我们需要讨论用户通过域名访问程序的方式,以谷歌为例。

  1. 在浏览器中输入google.com,首先会查询DNS获取google.com的IP地址。

    为什么需要IP地址?类比一下,如果有人向你的公司发送一个包裹,交付单上会包括公司的地址、名称和收件人等详细信息。交付的过程依赖于地址进行路由,最终到达收件人。类似地,在网络中,域名就像公司名称,而IP地址就像物理地址。在网络世界中,IP地址对于定位相应的程序至关重要。

    DNS就像公司目录,列出了每个域名对应的IP地址。一些域名可能没有注册,导致它们的IP地址无法找到,而其他域名可能有多个IP地址,DNS会根据某些规则自动返回其中一个。购买域名后,域名服务提供商通常提供DNS解析服务,将域名及其对应的IP地址在DNS中注册。

  2. 有了IP地址,浏览器向这个地址发送请求,操作系统将其打包成IP数据包,然后通过网络传输。基于提供的IP地址以及通过各种路由器提供的网络路由协议,最终到达绑定到该IP的计算机。

  3. 一台计算机上可能部署了多个网络应用程序。哪个应用程序应该接收请求?这就是端口发挥作用的地方。每个网络应用程序可以绑定一个或多个端口,防止系统重叠。在请求中指定端口,可以将其路由到正确的网络应用程序。

但是当我们访问谷歌时,并没有指定端口。这是因为当没有指定时,使用默认端口,HTTP为80,HTTPS为443。在启动网络程序时,必须绑定端口,尽管有些框架会自动选择计算机上未使用的端口。

localhost与127.0.0.1的区别是什么?

有了上述的基础知识,我们可以很容易理解这个问题。

localhost是一个域名,如前所述。

那么127.0.0.1呢?它是一个IP地址,是当前机器的本地IP地址,只能在该机器上使用。你的计算机可以在没有连接到互联网的情况下使用这个IP地址,这对于开发和测试网络程序非常方便。我们调试的程序绑定到这个IP地址。

值得注意的是,我们通常看到的IP地址格式为X.X.X.X,由点分隔为四个段。实际上,它是一个32位的二进制数,由四个8位的段组成,然后转换为十进制数进行显示。

那么localhost是如何解析为127.0.0.1的呢?是通过DNS吗?并不是。每台计算机都可以在没有DNS解析的情况下使用localhost127.0.0.1

这个解析是由每台计算机独立处理的。每台计算机上都有一个主机文件,其中包含一些硬编码的DNS解析规则,包括将localhost解析为127.0.0.1的规则,这是一种约定。

如果你不喜欢使用localhost,那也没关系。你可以将它命名为任何你喜欢的名称,比如myhost,并将其解析为127.0.0.1

你甚至可以使用google.com,但那只能给你自己使用,不会影响其他人。

域名层次结构

localhost并不完全类似于我们通常使用的域名,比如www.juejin.cngoogle.comcsdn.netwwwcncomnet是什么意思?为什么localhost不需要它们?

域名是分层次的,分为顶级域(TLD)、二级域(SLD)和三级域(3LD):

  • 顶级域(TLD): 位于域名系统的最高级,通常由几个字母组成,位于域名的最右侧。TLD分为通用TLD和国家代码TLD,常见的通用TLD包括.com(商业企业)、.net(网络提供商)和.org(非营利组织),而国家代码TLD表示特定的国家或地区,如.cn代表中国,.uk代表英国。

  • 二级域(SLD): 位于TLD的下一级,由注册者选择和注册,可以是个性化和易记的名称。例如,juejin.cn就是一个二级域,通常我们可以申请到。

  • 三级域(3LD): 位于二级域的下一级,通常用于指向特定的服务器或子网。在blog.example.com中,“blog”就是一个三级域。而“www”是最常见的三级域,表示网站的主页或主站点,尽管这只是一种约定,现在许多站点建议直接通过二级域进行访问。

通过这个定义,我们可以将localhost视为一个顶级域,尽管是一个保留的顶级域,仅用于访问当前计算机。

多个网站共享一个IP和端口

正如前面提到的,不同的网络程序不能使用相同的端口,但有方法可以规避这个问题。

在个人博客流行的时候,许多人喜欢购买虚拟主机并部署开源博客平台来表达自己的想法。为了赚钱,虚拟主机提供商会在一台计算机上分配许多虚拟主机,允许每个人都可以使用默认的端口80访问他们的域名,而不会有任何问题。这是怎么可能的呢?

如果你对Nginx、Apache或IIS等web服务器有经验,可能会熟悉主机头的概念。主机头本质上是一个域名。通过设置主机头,我们的程序可以共享一个网络端口。

在启动时,Nginx和其他web服务器将端口80独占为自己使用。

当网站请求到达Nginx的端口80时,它根据请求中的域名(主机头中的域名)识别出相应的网络程序,然后将请求转发给该网络程序。

私有IP地址

除了127.0.0.1之外,还有许多私有IP地址,比如常见的192.168.x.x。这些私有IP地址主要保留在局域网(LAN)中使用,因为为每台计算机分配唯一的IP地址是不可行的。只要在LAN中没有冲突,这些地址就可以自由使用。你的公司可以使用192.168.1.1,我的公司也可以使用192.168.1.1,但如果你想访问我的公司,你需要通过公共IP地址。

常用的IPv4私有IP地址范围分为三个类:

  • A类: 从10.0.0.010.255.255.255

  • B类: 从172.16.0.0172.31.255.255

  • C类: 从192.168.0.0192.168.255.255

这些私有IP地址仅用于内部网络,并且不能在公共互联网上使用。

除了上述三个私有IPv4地址范围外,还有一些保留的IPv4地址范围:

  • 127.0.0.0127.255.255.255地址范围用于回环测试,其中包括上面提到的127.0.0.1。你也可以分配给自己一个像127.0.0.2这样的IP地址,它的功能与127.0.0.1相同。

  • 169.254.0.0169.254.255.255地址范围用于局域网内部。这种情况比较少见,如果你的计算机无法连接到LAN,你可能会看到这个IP地址,这是暂时分配的LAN地址。

这些地址范围也不能在公共互联网上使用。

还有一些较不常见的专用IPv4地址范围。有关IP地址范围的完整定义可以在IANA网站[1]上找到。

IPv6

你可能也听说过IPv6,由于IPv4地址空间不足,IPv6被引入,理论上可以为地球上的每一粒沙子分配一个IP地址。尽管多年来一直在讨论,但IPv4仍然更广泛地使用。

IPv6地址的格式为XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX。它有128位长,由冒号分隔成8段,其中每个X代表一个十六进制数(从0到F)。IPv6的地址空间比IPv4大得多。例如,2001:0db8:3c4d:0015:0000:0000:1a2f:1a2b就是一个有效的IPv6地址。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/805097.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++_priority_queue的学习

1.概述 1. 优先队列是一种容器适配器,根据严格的弱排序标准,它的第一个元素总是它所包含的元素中最大的 2. 类似于堆,在堆中可以随时插入元素,并且只能检索最大堆元素 ( 优先队列中位于顶部的元 素 ) 3. 优先队列被实现为容器…

2024年商家争相入驻视频号小店,究竟有什么吸引力,新契机?

大家好,我是电商花花。 直播电商作为一种直观、生动的媒体形式,已经深入人心。 通过达人直播带货,短视频带货,商家可以更直观地向消费者展示产品,提升销售效果。 同时,视频号小店的开通,使得…

前端三剑客 —— JavaScript (第七节)

内容回顾 DOM编程 document对象 有属性 有方法 节点类型 元素节点 属性节点 文本节点 操作DOM属性 DOM对象.属性名称 DOM对象[属性名称] 调用DOM对象的API 操作DOM样式 获取有单位的样式值 标签对象.style.样式名称,这种方式只能操作行内样式。 使用getComputedSty…

vue3中的复制功能怎么做

很简单,比如想要复制p标签里面的1111,给他一个点击事件,然后加上navigator.clipboard.writeText即可完成。 说明: ​​​​​​​ navigator.clipboard 是 Web API 中的一个对象,它提供了对剪贴板的访问权限&…

创业公式(保罗·格雷厄姆)

保罗格雷厄姆有一套完整的创业哲学,他的创业公式是: (1)搭建原型 (2)上线运营(别管bug) (3)收集反馈 (4)调整产品 (5&…

【ZZULIOJ】1050: 阶乘的累加和(Java)

目录 题目描述 输入 输出 样例输入 Copy 样例输出 Copy code 题目描述 求1! 2! ……n! 输入 输入一个整数n,你可以假定n不大于10。 输出 输出一个整数,即阶乘累加的结果,单独占一行。 样例输入 Copy 4 样例输出 Copy 33 co…

基于51单片机的DAC0832锯齿波产生设计

**单片机设计介绍, 基于51单片机的DAC0832锯齿波产生设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于51单片机的DAC0832锯齿波产生设计是一个结合了硬件与软件技术的项目,旨在利用51单片机和DAC08…

【机器学习】决策树(Decision Tree,DT)算法介绍:原理与案例实现

前言 决策树算法是机器学习领域中的一种重要分类方法,它通过树状结构来进行决策分析。决策树凭借其直观易懂、易于解释的特点,在分类问题中得到了广泛的应用。本文将介绍决策树的基本原理,包括熵和信息熵的相关概念,以及几种经典的…

如何申请公派访问学者?(全过程解析)

申请成为访问学者,无疑是增强个人学术实力与拓宽国际视野的绝佳机会。然而,对于初涉此道者,资金往往成为横亘在出国深造之路上的巨大障碍。幸运的是,CSC(国家留学基金管理委员会)的资助项目,为众…

现代深度学习模型和技术

Transformer模型的理解和应用 Transformer模型自2017年由Vaswani等人在论文《Attention is All You Need》中提出以来,已经彻底改变了自然语言处理(NLP)领域的面貌。Transformer的核心是自注意力(Self-Attention)机制…

liunx系统发布.net core项目

liunx系统发布.net core项目 准备.net6程序运行环境部署nginx,通过一个地址既能访问web api,又能访问web项目有一个客户把web api放到docker中,想通过nginx转发,nginx也支持配置多个程序api接口的其它 liunx系统:cento…

惠海H5031 降压恒流芯片IC 支持36V48V60V80V转9V12V5A方案 爆闪 高低亮,远近光

降压恒流芯片IC是一种电子元件,用于将较高的电压转换为较低的电压,并保持电流的稳定。这种芯片IC广泛应用于各种电子设备中,如LED灯、汽车灯光等。 对于您提到的支持36V48V60V80V转9V12V5A方案的降压恒流芯片IC,它可以将36V至80V…

【设计模式】笔记篇

目录标题 OO设计原则策略模式 - Strategy定义案例分析需求思路分析核心代码展示进一步优化UML 图 观察者模式 - Observe定义案例分析需求UML图内置的Java观察者模式核心代码 总结 装饰者模式 - Decorator定义案例分析需求UML图分析核心代码 总结 工厂模式 - Abstract Method/Fa…

突如其来:OpenAI分家的Anthropic公司悄悄地释放出他们的秘密武器——Claude3

突如其来的消息,OpenAI分家的Anthropic公司悄悄地释放出他们的秘密武器——Claude3 这货居然在默默无闻中一举超越了GPT-4的地位。没发布会,没吹牛逼,就发了一帖子。 字少,事大。 Claude3独挡一面的推理能力 Anthropic推出了三款…

【springboot开发】Gradle VS Maven

前言: java构建工具的主要作用是依赖管理和构建的生命周期管理。gradle和maven是目前java中最流行的两个构建工具,springboot常用maven,Android studio使用gradle。 目录 1. 简介2. Maven2.1 安装2.2 依赖管理2.3 构建生命周期管理 3. Gradle…

【noVNC】使用noVNC实现浏览器网页访问vnc(基于web的远程桌面)

1.VNC本身提供的http连接方式,可传输文件,画面有卡顿,需要安装jre 2.noVNC访问方式,不可传输文件,画面较为流畅,不用安装插件运行环境 一、noVNC 是什么 Web 端的Vnc软件,通过noVNC&#xff0…

tsc --init 报错

运行 tsc --init 报错, 全局安装 ts 也不行 通过 npx tsc --init 就可以解决

第十三届蓝桥杯省赛大学B组填空题(c++)

A.扫雷 暴力模拟AC: #include<iostream> using namespace std; const int N105; int n,m,map[N][N],ans[N][N]; int dx[8]{-1,-1,0,1,1,1,0,-1}; int dy[8]{0,1,1,1,0,-1,-1,-1}; int count(int x,int y){int cnt0;for(int i0;i<8;i){int xxxdx[i];int yyydy[i];if(…

【环境变量】常见的环境变量 | 相关指令 | 环境变量系统程序的结合理解 | 环境变量表 | 本地变量环境变量 | 外部命令内建命令

目录 常见的环境变量 HOME PWD SHELL HISTSIZE 环境变量相关的指令 echo&env export unset 本地变量 环境变量整体理解 程序现象_代码查看环境变量 ​整体理解 环境变量表 环境变量表的传递 环境变量表的查看 内建命令 少说废话&#x1f197; 每个用…

python爬虫 爬取网页图片

http://t.csdnimg.cn/iQgHw //爬虫爬取图片其实是很简单的&#xff0c;但是大多数同学&#xff0c;可能对 url的设置一直有困惑&#xff08;这点本人也在研究&#xff09;&#xff0c;而本篇文章&#xff0c;对于想要爬取图片的小白简直是福利。你只需要将文章代码运行即可&am…