深圳做网站-龙华信科,网站制作报价图片欣赏,朋友圈推广文案,盐城网站关键词优化在进行前端开发时#xff0c;我们经常使用localhost#xff0c;只需运行npm run就能在浏览器中打开网页#xff0c;地址栏显示类似于http://localhost:xxx/index.html#xff0c;但是很多人并不了解更深层次的原理#xff0c;不知道 localhost 与 127.0.0.1 到底有什么区别…在进行前端开发时我们经常使用localhost只需运行npm run就能在浏览器中打开网页地址栏显示类似于http://localhost:xxx/index.html但是很多人并不了解更深层次的原理不知道 localhost 与 127.0.0.1 到底有什么区别。
了解localhost是什么
localhost是一个域名从本质上来说和用于互联网访问的域名没有太大不同只是更容易记忆。
localhost的范围仅限于本地机器其名称清楚地表明“local”指的是在本地范围内的东西。
我们都可以在各自的机器上使用localhost而互不干扰访问各自的页面内容。
从域名到程序
为了真正理解localhost我们需要讨论用户通过域名访问程序的方式以谷歌为例。 在浏览器中输入google.com首先会查询DNS获取google.com的IP地址。 为什么需要IP地址类比一下如果有人向你的公司发送一个包裹交付单上会包括公司的地址、名称和收件人等详细信息。交付的过程依赖于地址进行路由最终到达收件人。类似地在网络中域名就像公司名称而IP地址就像物理地址。在网络世界中IP地址对于定位相应的程序至关重要。 DNS就像公司目录列出了每个域名对应的IP地址。一些域名可能没有注册导致它们的IP地址无法找到而其他域名可能有多个IP地址DNS会根据某些规则自动返回其中一个。购买域名后域名服务提供商通常提供DNS解析服务将域名及其对应的IP地址在DNS中注册。 有了IP地址浏览器向这个地址发送请求操作系统将其打包成IP数据包然后通过网络传输。基于提供的IP地址以及通过各种路由器提供的网络路由协议最终到达绑定到该IP的计算机。 一台计算机上可能部署了多个网络应用程序。哪个应用程序应该接收请求这就是端口发挥作用的地方。每个网络应用程序可以绑定一个或多个端口防止系统重叠。在请求中指定端口可以将其路由到正确的网络应用程序。
但是当我们访问谷歌时并没有指定端口。这是因为当没有指定时使用默认端口HTTP为80HTTPS为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解析的情况下使用localhost和127.0.0.1。
这个解析是由每台计算机独立处理的。每台计算机上都有一个主机文件其中包含一些硬编码的DNS解析规则包括将localhost解析为127.0.0.1的规则这是一种约定。
如果你不喜欢使用localhost那也没关系。你可以将它命名为任何你喜欢的名称比如myhost并将其解析为127.0.0.1。
你甚至可以使用google.com但那只能给你自己使用不会影响其他人。
域名层次结构
localhost并不完全类似于我们通常使用的域名比如www.juejin.cn、google.com或csdn.net。www、cn、com和net是什么意思为什么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.0到10.255.255.255 B类 从172.16.0.0到172.31.255.255 C类 从192.168.0.0到192.168.255.255
这些私有IP地址仅用于内部网络并且不能在公共互联网上使用。
除了上述三个私有IPv4地址范围外还有一些保留的IPv4地址范围 127.0.0.0到127.255.255.255地址范围用于回环测试其中包括上面提到的127.0.0.1。你也可以分配给自己一个像127.0.0.2这样的IP地址它的功能与127.0.0.1相同。 169.254.0.0到169.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地址。