成都网站建设费用,iis7.5 wordpress,深圳系统app开发,广西桂林农业学校目录 localhost是什么呢#xff1f;
从域名到程序
localhost和127.0.0.1的区别是什么#xff1f;
域名的等级划分
多网站共用一个IP和端口
私有IP地址
IPv6 今天在网上逛的时候看到一个问题#xff0c;没想到大家讨论的很热烈#xff0c;就是标题中这个#xff1a; …
目录 localhost是什么呢
从域名到程序
localhost和127.0.0.1的区别是什么
域名的等级划分
多网站共用一个IP和端口
私有IP地址
IPv6 今天在网上逛的时候看到一个问题没想到大家讨论的很热烈就是标题中这个
localhost和127.0.0.1的区别是什么 前端同学本地调试的时候应该没少和localhost打交道吧只需要执行 npm run 就能在浏览器中打开你的页面窗口地址栏显示的就是这个 http://localhost:xxx/index.html
可能大家只是用也没有去想过这个问题。
联想到我之前合作过的一些开发同学对它们俩的区别也没什么概念所以我觉得有必要普及下。
localhost是什么呢
localhost是一个域名和大家上网使用的域名没有什么本质区别就是方便记忆。
只是这个localhost的有效范围只有本机看名字也能知道local就是本地的意思。
张三和李四都可以在各自的机器上使用localhost但获取到的也是各自的页面内容不会相互打架。
从域名到程序
要想真正的认清楚localhost我们还得从用户是如何通过域名访问到程序说起。
以访问百度为例。
1、当我们在浏览器输入 baidu.com 之后浏览器首先去DNS中查询 baidu.com 的IP地址。
为什么需要IP地址呢打个比方有个人要寄快递到你的公司快递单上会填写公司的通讯地址、公司名称、收件人等信息实际运输时快递会根据通信地址进行层层转发最终送到收件人的手中。网络通讯也是类似的其中域名就像公司名称IP地址就像通信地址在网络的世界中只有通过IP地址才能找到对应的程序。
DNS就像一个公司黄页其中记录着每个域名对应的IP地址当然也有一些域名可能没做登记就找不到对应的IP地址还有一些域名可能会对应多个IP地址DNS会按照规则自动返回一个。我们购买了域名之后一般域名服务商会提供一个域名解析的功能就是把域名和对应的IP地址登记到DNS中。
这里的IP地址从哪里获取呢每台上网的电脑都会有1个IP地址但是个人电脑的IP地址一般是不行的个人电脑的IP地址只适合内网定位就像你公司内部的第几栋第几层公司内部人明白但是直接发给别人别人是找不到你的。如果你要对外部提供服务比如百度这种你就得有公网的IP地址这个IP地址一般由网络服务运营商提供比如你们公司使用联通上网那就可以让联通给你分配一个公网IP地址绑定到你们公司的网关服务器上网关服务器就像电话总机公司内部的所有网络通信都要通过它然后再在网关上设置转发规则将网络请求转发到提供网络服务的机器上。
2、有了IP地址之后浏览器就会向这个IP地址发起请求通过操作系统打包成IP请求包然后发送到网络上。网络传输有一套完整的路由协议它会根据你提供的IP地址经过路由器的层层转发最终抵达绑定该IP的计算机。
3、计算机上可能部署了多个网络应用程序这个请求应该发给哪个程序呢这里有一个端口的概念每个网络应用程序启动的时候可以绑定一个或多个端口不同的网络应用程序绑定的端口不能重复再次绑定时会提示端口被占用。通过在请求中指定端口就可以将消息发送到正确的网络处理程序。
但是我们访问百度的时候没有输入端口啊这是因为默认不输入就使用80和443端口http使用80https使用443。我们在启动网络程序的时候一定要绑定一个端口的当然有些框架会自动选择一个计算机上未使用的端口。 localhost和127.0.0.1的区别是什么
有了上边的知识储备我们就可以很轻松的搞懂这个问题了。
localhost是域名上文已经说过了。
127.0.0.1 呢是IP地址当前机器的本地IP地址且只能在本机使用你的计算机不联网也可以用这个IP地址就是为了方便开发测试网络程序的。我们调试时启动的程序就是绑定到这个IP地址的。
这里简单说下我们经常看到的IP地址一般都是类似 X.X.X.X 的格式用.分成四段。其实它是一个32位的二进制数分成四段后每一段是8位然后每一段再转换为10进制的数进行显示。
那localhost是怎么解析到127.0.0.1的呢经过DNS了吗没有。每台计算机都可以使用localhost和127.0.0.1这没办法让DNS来做解析。
那就让每台计算机自己解决了。每台计算机上都有一个host文件其中写死了一些DNS解析规则就包括 localhost 到 127.0.0.1 的解析规则这是一个约定俗成的规则。
如果你不想用localhost那也可以随便起个名字比如 wodehost也解析到 127.0.0.1 就行了。
甚至你想使用 baidu.com 也完全可以只是只能自己自嗨对别人完全没有影响。
域名的等级划分
localhost不太像我们平常使用的域名比baidu.com、csdn.net, 这里边的 www、cn、com、net都是什么意思localhost为什么不需要
域名其实是分等级的按照等级可以划分为顶级域名、二级域名和三级域名...
顶级域名TLD顶级域名是域名系统中最高级别的域名。它位于域名的最右边通常由几个字母组成。顶级域名分为两种类型通用顶级域名和国家顶级域名。常见的通用顶级域名包括表示工商企业的.com、表示网络提供商的.net、表示非盈利组织的.org等而国家顶级域名则代表特定的国家或地区如.cn代表中国、.uk代表英国等。
二级域名SLD二级域名是在顶级域名之下的一级域名。它是由注册人自行选择和注册的可以是个性化的、易于记忆的名称。例如juejin.cn 就是二级域名。我们平常能够申请到的也是这种。目前来说申请 xxx.com、xxx.net、xxx.cn等等域名其实大家不太关心其顶级域名com\net\cn代表的含义看着简短好记是主要诉求。
三级域名3LD三级域名是在二级域名之下的一级域名。它通常用于指向特定的服务器或子网。例如在blog.example.com中blog就是三级域名。www是最常见的三级域名用于代表网站的主页或主站点不过这只是某种流行习惯目前很多网站都推荐直接使用二级域名访问了。
域名级别还可以进一步细分大家可以看看企业微信开放平台这个域名developer.work.weixin.qq.comcom代表商业qq代表腾讯weixin代表微信work代表企业微信developer代表开发者。这种逐层递进的方式有利于域名的分配管理。
按照上边的等级定义我们可以说localhost是一个顶级域名只不过它是保留的顶级域其唯一目的是用于访问当前计算机。
多网站共用一个IP和端口
上边我们说不同的网络程序不能使用相同的端口其实是有办法突破的。
以前个人博客比较火的时候大家都喜欢买个虚拟主机然后部署个开源的博客程序抒发一下自己的感情。为了挣钱虚拟主机的服务商会在一台计算机上分配N多个虚拟主机大家使用各自的域名和默认的80端口进行访问也都相安无事。这是怎么做到的呢
如果你有使用Nginx、Apache或者IIS等Web服务器的相关经验你可能会接触到主机头这个概念。主机头其实就是一个域名通过设置主机头我们的程序就可以共用1个网络端口。
首先在Nginx等Web程序中部署网站时我们会进行一些配置此时在主机头中写入网站要使用的域名。
然后Nginx等Web服务器启动的时候会把80端口占为己有。
然后当某个网站的请求到达Nginx的80端口时它会根据请求中携带的域名找到配置了对应主机头的网络程序。
然后再转发到这个网络程序如果网络程序还没有启动Nginx会把它拉起来。
私有IP地址
除了127.0.0.1其实还有很多私有IP地址比如常见的 192.168.x.x。这些私有IP地址大部分都是为了在局域网内使用而预留的因为给每台计算机都分配一个独立的IP不太够用所以只要局域网内不冲突大家就可劲的用吧。你公司可以用 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地址段这个很少接触到如果你的电脑连局域网都上不去可能会看到这个IP地址它是临时分配的一个局域网地址。
这些地址段也都不能在公网上使用。
--
近年来还有一个现象就是你家里或者公司里上网时光猫或者路由器对外的IPv4地址也不是公网IP了这时候获得的可能是一个类似 100.64.x.x 的地址这是因为随着宽带的普及运营商手里的公网IP也不够了所以运营商又加了一层局域网而100.64.0.0 这个网段是专门分给运营商做局域网用的。如果你使用阿里云等公有云一些云产品的IP地址也可能是这个这是为了将客户的私有网段和公有云厂商的私有网段进行有效的区分。
-- IPv6
你可能也听说过IPv6因为IPv4可分配的地址太少了不够用使用IPv6甚至可以为地球上的每一粒沙子分配一个IP。只是喊了很多年大家还是喜欢用IPv4这里边原因很多这里就不多谈了。
IPv6地址类似XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX 它是128位的用:分成8段每个X是一个16进制数取值范围0-FIPv6地址空间相对于IPv4地址有了极大的扩充。比如2001:0db8:3c4d:0015:0000:0000:1a2f:1a2b 就是一个有效的IPv6地址。
关于IPv6这里就不多说了有兴趣的可以再去研究下。